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.Where(b => (DateTime.UtcNow - b.LastChanged) > BucketRefreshTimeout)) { b.LastChanged = DateTime.UtcNow; var task = new RefreshBucketTask(this, b); task.Execute(); } return(!Disposed); }); }
public DhtEngine(DhtListener listener) { if (listener == null) throw new ArgumentNullException(nameof(listener)); MessageLoop = new MessageLoop(this, listener); TimeOut = TimeSpan.FromSeconds(15); // 15 second message timeout by default TokenManager = new TokenManager(); }
public DhtEngine(DhtListener listener) { if (listener == null) { throw new ArgumentNullException(nameof(listener)); } MessageLoop = new MessageLoop(this, listener); TimeOut = TimeSpan.FromSeconds(15); // 15 second message timeout by default TokenManager = new TokenManager(); }
public void Stop() { MessageLoop.Stop(); }