public override bool ProcessTimeouts()
{
var requestedHoles = false;
var missingProposals = new List<int>();
for (var i = 0; i < Commands.Count; i++)
{
if (Commands[i] == null)
missingProposals.Add(i + 1);
}
if (lastRequestedTopProposal.AddSeconds(1) < DateTime.Now)
{
lastRequestedTopProposal = DateTime.Now;
missingProposals.Add(Commands.Count+1); // in case we didn't get the latest proposal
}
foreach (var missingProposal in missingProposals)
{
log.DebugFormat("Querying accepted value for {0}", missingProposal);
requestedHoles = true;
foreach (var acceptor in knownAcceptors)
{
acceptor.SendMessage(new AcceptedValueQuery
{
Originator = this,
ProposalNumber = missingProposal
});
}
}
return requestedHoles;
}