public void Start(byte[] initialNodes = null) { CheckDisposed(); MessageLoop.Start(); if (Bootstrap) { new InitializeTask(this, initialNodes).Execute(); RaiseStateChanged(DhtState.Initialising); Bootstrap = false; } else { RaiseStateChanged(DhtState.Ready); } MainLoop.QueueTimeout(TimeSpan.FromSeconds(1), () => { if (Disposed) { return(false); } foreach (Bucket b in RoutingTable.Buckets) { if (DateTime.UtcNow - b.LastChanged > BucketRefreshTimeout) { b.LastChanged = DateTime.UtcNow; RefreshBucketTask task = new RefreshBucketTask(this, b); task.Execute(); } } return(!Disposed); }); }
public void Start(byte[] initialNodes) { CheckDisposed(); _messageLoop.Start(); if (Bootstrap) { new InitialiseTask(this, initialNodes).Execute(); RaiseStateChanged(DhtState.Initialising); _bootStrap = false; } else { RaiseStateChanged(DhtState.Ready); } MainLoop.QueueTimeout(TimeSpan.FromSeconds(1), delegate { if (Disposed) { return(false); } foreach (var b in RoutingTable.Buckets) { if ((DateTime.UtcNow - b.LastChanged) <= BucketRefreshTimeout) { continue; } b.LastChanged = DateTime.UtcNow; var task = new RefreshBucketTask(this, b); task.Execute(); } return(!Disposed); }); }
public void Start(byte[] initialNodes) { CheckDisposed(); messageLoop.Start(); if (Bootstrap) { new InitialiseTask(this, initialNodes).Execute(); RaiseStateChanged(DhtState.Initialising); bootStrap = false; } else { RaiseStateChanged(DhtState.Ready); } DhtEngine.MainLoop.QueueTimeout(TimeSpan.FromSeconds(1), delegate { if (Disposed) return false; foreach (Bucket b in RoutingTable.Buckets) { if ((DateTime.UtcNow - b.LastChanged) > BucketRefreshTimeout) { b.LastChanged = DateTime.UtcNow; RefreshBucketTask task = new RefreshBucketTask(this, b); task.Execute(); } } return !Disposed; }); }