public AmoebaManager(string blocksPath, BufferManager bufferManager) { _blocksPath = blocksPath; _bufferManager = bufferManager; _clientManager = new ClientManager(_bufferManager); _serverManager = new ServerManager(_bufferManager); _cacheManager = new CacheManager(_blocksPath, _bufferManager); _connectionsManager = new ConnectionsManager(_clientManager, _serverManager, _cacheManager, _bufferManager); _downloadManager = new DownloadManager(_connectionsManager, _cacheManager, _bufferManager); _uploadManager = new UploadManager(_connectionsManager, _cacheManager, _bufferManager); _backgroundDownloadManager = new BackgroundDownloadManager(_connectionsManager, _cacheManager, _bufferManager); _backgroundUploadManager = new BackgroundUploadManager(_connectionsManager, _cacheManager, _bufferManager); _clientManager.CreateCapEvent = (object sender, string uri) => { return _createCapEvent?.Invoke(this, uri); }; _serverManager.AcceptCapEvent = (object sender, out string uri) => { uri = null; return _acceptCapEvent?.Invoke(this, out uri); }; _clientManager.CheckUriEvent = (object sender, string uri) => { return _checkUriEvent?.Invoke(this, uri) ?? true; }; _serverManager.CheckUriEvent = (object sender, string uri) => { return _checkUriEvent?.Invoke(this, uri) ?? true; }; }
public AmoebaManager(string bitmapPath, string cachePath, BufferManager bufferManager) { _bitmapPath = bitmapPath; _cachePath = cachePath; _bufferManager = bufferManager; _clientManager = new ClientManager(_bufferManager); _serverManager = new ServerManager(_bufferManager); _bitmapManager = new BitmapManager(_bitmapPath, _bufferManager); _cacheManager = new CacheManager(_cachePath, _bitmapManager, _bufferManager); _connectionsManager = new ConnectionsManager(_clientManager, _serverManager, _cacheManager, _bufferManager); _downloadManager = new DownloadManager(_connectionsManager, _cacheManager, _bufferManager); _uploadManager = new UploadManager(_connectionsManager, _cacheManager, _bufferManager); _backgroundDownloadManager = new BackgroundDownloadManager(_connectionsManager, _cacheManager, _bufferManager); _backgroundUploadManager = new BackgroundUploadManager(_connectionsManager, _cacheManager, _bufferManager); _clientManager.CreateCapEvent = (object sender, string uri) => { if (_createCapEvent != null) { return _createCapEvent(this, uri); } return null; }; _serverManager.AcceptCapEvent = (object sender, out string uri) => { uri = null; if (_acceptCapEvent != null) { return _acceptCapEvent(this, out uri); } return null; }; _clientManager.CheckUriEvent = (object sender, string uri) => { if (_checkUriEvent != null) { return _checkUriEvent(this, uri); } return true; }; _serverManager.CheckUriEvent = (object sender, string uri) => { if (_checkUriEvent != null) { return _checkUriEvent(this, uri); } return true; }; }
//#endif public ConnectionsManager(ClientManager clientManager, ServerManager serverManager, CacheManager cacheManager, BufferManager bufferManager) { _clientManager = clientManager; _serverManager = serverManager; _cacheManager = cacheManager; _bufferManager = bufferManager; _settings = new Settings(); _routeTable = new Kademlia<Node>(256, 20); _connectionManagers = new LockedList<ConnectionManager>(); _packetControlManager = new PacketControlManager(); _packetControlManager.GetLockNodesEvent = (object sender) => { lock (_thisLock) { return _connectionManagers.Select(n => n.Node).ToArray(); } }; _creatingNodes = new LockedList<Node>(); _waitingNodes = new VolatileHashSet<Node>(new TimeSpan(0, 0, 30)); _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)); _pushBroadcastMetadatasRequestList = new VolatileHashSet<string>(new TimeSpan(0, 3, 0)); _pushUnicastMetadatasRequestList = new VolatileHashSet<string>(new TimeSpan(0, 3, 0)); _pushMulticastMetadatasRequestList = new VolatileHashSet<Tag>(new TimeSpan(0, 3, 0)); _relayBlocks = new VolatileHashSet<Key>(new TimeSpan(0, 30, 0)); _refreshTimer = new WatchTimer(this.RefreshTimer, new TimeSpan(0, 0, 5)); _mediateTimer = new WatchTimer(this.MediateTimer, new TimeSpan(0, 1, 0)); _reduceTimer = new WatchTimer(this.ReduceTimer, new TimeSpan(0, 3, 0)); }