private void ProcessNextSponsor()
{
BCLDebug.Trace("REMOTE","Lease ",id," ProcessNextSponsor");
Object largestSponsor = null;
TimeSpan largestRenewalTime = TimeSpan.Zero;
lock(sponsorTable)
{
IDictionaryEnumerator e = sponsorTable.GetEnumerator();
// Find sponsor with largest previous renewal value
while(e.MoveNext())
{
Object sponsorId = e.Key;
SponsorStateInfo sponsorStateInfo = (SponsorStateInfo)e.Value;
if ((sponsorStateInfo.sponsorState == SponsorState.Initial) && (largestRenewalTime == TimeSpan.Zero))
{
largestRenewalTime = sponsorStateInfo.renewalTime;
largestSponsor = sponsorId;
}
else if (sponsorStateInfo.renewalTime > largestRenewalTime)
{
largestRenewalTime = sponsorStateInfo.renewalTime;
largestSponsor = sponsorId;
}
}
}
if (largestSponsor != null)
SponsorCall(GetSponsorFromId(largestSponsor));
else
{
// No more sponsors to try, Cancel
BCLDebug.Trace("REMOTE","Lease ",id," ProcessNextSponsor no more sponsors");
Cancel();
}
}