/// <summary> /// /// </summary> /// <param name="manager"></param> /// <param name="cacheManager"></param> /// <param name="share"></param> /// <param name="basePaths">a list of base paths to exclude from full uri</param> public HyperRelayReader(HyperDownloadManager manager, UploadCacheManager cacheManager, IShare share, List <string> basePaths) { _manager = manager; _cacheManager = cacheManager; _share = share; _basePaths = basePaths; _share.TotalSharedChanged += _share_TotalSharedChanged; _updateTimer = new Timer(o => RebuildDictionary(), null, Timeout.Infinite, Timeout.Infinite); SegmentService = new MovingAverage(TimeSpan.FromSeconds(10)); SegmentsPerSecond = new SpeedAverage(TimeSpan.FromSeconds(10)); SegmentServiceProxy = new MovingAverage(TimeSpan.FromSeconds(10)); SegmentsPerSecondProxy = new SpeedAverage(TimeSpan.FromSeconds(10)); SegmentServiceCached = new MovingAverage(TimeSpan.FromSeconds(10)); SegmentsPerSecondCached = new SpeedAverage(TimeSpan.FromSeconds(10)); }
public void RegisterRelayStorage(HyperDownloadManager downloadManager, UploadCacheManager cacheManager, IShare share, List <string> baseList) { AddStorage(new HyperRelayReader(downloadManager, cacheManager, share, baseList)); Logger.Info($"Registered relay file storage {string.Join(", ", downloadManager.Sessions().Select(s => s.Server))}"); }
public DcEngine(EngineSettings settings) { Settings = settings; Settings.Changed += SettingsChanged; TagInfo = new TagInfo(); Hubs = new HubCollection(); Hubs.HubAdded += HubsHubAdded; Hubs.HubRemoved += HubsHubRemoved; SearchManager = new SearchManager(this); DownloadManager = new DownloadManager(this); DownloadManager.DownloadAdding += DownloadManagerDownloadAdding; DownloadManager.DownloadCompleted += DownloadManager_DownloadCompleted; TransferManager = new TransferManager(this); TransferManager.TransferAdded += TransferManagerTransferAdded; TransferManager.TransferRemoved += TransferManagerTransferRemoved; TransferManager.TransferUploadItemError += TransferManagerTransferUploadItemError; TransferManager.TransferUploadItemRequest += TransferManager_TransferUploadItemRequest; SourceManager = new SourceManager(); FileSourceManager = new FileSourceManager(); StatisticsManager = new StatisticsManager(this); UploadCacheManager = new UploadCacheManager(this); if (Settings.AutoSelectPort) { var tcpPort = Settings.TcpPort; var udpPort = Settings.UdpPort; while (!TcpConnectionListener.IsPortFree(tcpPort)) { tcpPort++; } if (Settings.TcpPort != tcpPort) { Settings.TcpPort = tcpPort; } else { InitTcp(Settings.TcpPort); } while (!UdpConnection.IsPortFree(udpPort)) { udpPort++; } if (Settings.UdpPort != udpPort) { Settings.UdpPort = udpPort; } else { InitUdp(Settings.UdpPort); } } else { InitUdp(Settings.UdpPort); InitTcp(Settings.TcpPort); } if (string.IsNullOrEmpty(Settings.LocalAddress)) { // find local ip var host = Dns.GetHostEntry(Dns.GetHostName()); //Array.Sort(host.AddressList, (one, two) => (one.ToString().StartsWith("192.168")?1:0)+ (two.ToString().StartsWith("192.168")?-1:0)); foreach (var ip in host.AddressList) { if (ip.AddressFamily.ToString() == "InterNetwork") { Settings.LocalAddress = ip.ToString(); break; } } } if (Settings.HttpQueueLimit != 0) { HttpUploadItem.Manager.QueueLimit = Settings.HttpQueueLimit; } if (Settings.HttpConnectionsPerServer != 0) { HttpUploadItem.Manager.ConnectionsPerServer = Settings.HttpConnectionsPerServer; } }