public LeafConnectionOverlord(Node local)
{
_compensate = 0;
_local = local;
_linker = null;
_sync = new object();
_rnd = new Random( _local.GetHashCode()
^ unchecked((int)DateTime.UtcNow.Ticks) );
_default_retry_interval = new TimeSpan(0,0,0,0,10000);
_current_retry_interval = new TimeSpan(0,0,0,0,10000);
//We initialize at at year 1 to start with:
_last_retry = DateTime.MinValue;
_last_non_leaf_connection_event = DateTime.MinValue;
_last_trim = DateTime.MinValue;
/*
* When a node is removed from the ConnectionTable,
* we should check to see if we need to work to get a
* replacement
*/
lock(_sync) {
local.ConnectionTable.DisconnectionEvent += this.CheckAndConnectHandler;
local.ConnectionTable.ConnectionEvent += this.CheckAndConnectHandler;
/**
* Every heartbeat we check to see if we need to act
*/
local.HeartBeatEvent += this.CheckAndConnectHandler;
}
}