protected override void Dispose(bool disposing) { if (_disposed) return; _disposed = true; if (disposing) { if (_refreshTimer != null) { try { _refreshTimer.Dispose(); } catch (Exception) { } _refreshTimer = null; } if (_messagesManager != null) { try { _messagesManager.Dispose(); } catch (Exception) { } _messagesManager = null; } if (_bandwidthLimit != null) { try { _bandwidthLimit.Dispose(); } catch (Exception) { } _bandwidthLimit = null; } } }
//#endif public ConnectionsManager(ClientManager clientManager, ServerManager serverManager, CacheManager cacheManager, BufferManager bufferManager) { _clientManager = clientManager; _serverManager = serverManager; _cacheManager = cacheManager; _bufferManager = bufferManager; _settings = new Settings(this.ThisLock); _routeTable = new Kademlia<Node>(512, 20); _connectionManagers = new LockedList<ConnectionManager>(); _messagesManager = new MessagesManager(); _messagesManager.GetLockNodesEvent = (object sender) => { lock (this.ThisLock) { return _connectionManagers.Select(n => n.Node).ToArray(); } }; _creatingNodes = new LockedList<Node>(); _waitingNodes = new VolatileHashSet<Node>(new TimeSpan(0, 0, 30)); _cuttingNodes = new VolatileHashSet<Node>(new TimeSpan(0, 10, 0)); _removeNodes = new VolatileHashSet<Node>(new TimeSpan(0, 30, 0)); _succeededUris = new VolatileHashSet<string>(new TimeSpan(1, 0, 0)); _downloadBlocks = new VolatileHashSet<Key>(new TimeSpan(0, 30, 0)); _pushBroadcastSignaturesRequestList = new VolatileHashSet<string>(new TimeSpan(0, 3, 0)); _pushUnicastSignaturesRequestList = new VolatileHashSet<string>(new TimeSpan(0, 3, 0)); _pushMulticastWikisRequestList = new VolatileHashSet<Wiki>(new TimeSpan(0, 3, 0)); _pushMulticastChatsRequestList = new VolatileHashSet<Chat>(new TimeSpan(0, 3, 0)); _relayBlocks = new VolatileHashSet<Key>(new TimeSpan(0, 30, 0)); _refreshTimer = new WatchTimer(this.RefreshTimer, new TimeSpan(0, 0, 5)); }