private void ProcessPeers() { if (Interlocked.Exchange(ref isProcessPeers, 1) == 1) { return; } foreach (var peer in Peers.OrderByDescending(x => x.Value.PiecesRequiredAvailable)) { if (DateTime.UtcNow > peer.Value.LastActive.Add(peerTimeout)) { peer.Value.Disconnect(); continue; } if (!peer.Value.IsHandshakeSent || !peer.Value.IsHandshakeReceived) { continue; } if (Torrent.IsCompleted) { peer.Value.SendNotInterested(); } else { peer.Value.SendInterested(); } if (peer.Value.IsCompleted && Torrent.IsCompleted) { peer.Value.Disconnect(); continue; } peer.Value.SendKeepAlive(); // let them leech if (Torrent.IsStarted && Leechers.Count < maxLeechers) { if (peer.Value.IsInterestedReceived && peer.Value.IsChokeSent) { peer.Value.SendUnchoke(); } } // ask to leech if (!Torrent.IsCompleted && Seeders.Count <= maxSeeders) { if (!peer.Value.IsChokeReceived) { Seeders.TryAdd(peer.Key, peer.Value); } } } Interlocked.Exchange(ref isProcessPeers, 0); }
private void HandlePeerDisconnected(object sender, EventArgs args) { if (sender is Peer peer) { peer.BlockRequested -= HandleBlockRequested; peer.BlockCancelled -= HandleBlockCancelled; peer.BlockReceived -= HandleBlockReceived; peer.Disconnected -= HandlePeerDisconnected; peer.StateChanged -= HandlePeerStateChanged; Peers.TryRemove(peer.Key, out _); Seeders.TryRemove(peer.Key, out _); Leechers.TryRemove(peer.Key, out _); } }
private void HandlePeerDisconnected(object sender, EventArgs args) { var peer = sender as Peer; peer.BlockRequested -= HandleBlockRequested; peer.BlockCancelled -= HandleBlockCancelled; peer.BlockReceived -= HandleBlockReceived; peer.Disconnected -= HandlePeerDisconnected; peer.StateChanged -= HandlePeerStateChanged; Peer tmp; Peers.TryRemove(peer.Key, out tmp); Seeders.TryRemove(peer.Key, out tmp); Leechers.TryRemove(peer.Key, out tmp); }
protected override void ConfigureWebHost(IWebHostBuilder builder) { builder.ConfigureServices(services => { services.Remove(services.SingleOrDefault(s => s.ServiceType == typeof(DbContextOptions <ApplicationDbContext>))); services.Remove(services.SingleOrDefault(s => s.ServiceType == typeof(DbContextOptions <IdentityContext>))); services.AddDbContext <ApplicationDbContext>(options => { options.UseInMemoryDatabase($"{typeof(T).Name}-ApplicationDbContextInMemoryForTesting"); }); services.AddDbContext <IdentityContext>(options => { options.UseInMemoryDatabase($"{typeof(T).Name}-IdentityContextInMemoryForTesting"); }); services.AddSingleton <IStartupFilter, CustomStartupFilter>(); var sp = services.BuildServiceProvider(); using (var scope = sp.CreateScope()) { var scopedServices = scope.ServiceProvider; var applicationDbContext = scopedServices.GetRequiredService <ApplicationDbContext>(); var identityContext = scopedServices.GetRequiredService <IdentityContext>(); var userManager = scopedServices.GetRequiredService <UserManager <ApplicationUser> >(); var roleManager = scopedServices.GetRequiredService <RoleManager <IdentityRole> >(); var logger = scopedServices.GetRequiredService <ILogger <CustomWebApplicationFactory <T> > >(); applicationDbContext.Database.EnsureCreated(); identityContext.Database.EnsureCreated(); try { Seeders.SeedDefaultRoles(roleManager); } catch (Exception ex) { logger.LogError(ex, $"Error seeding the database. Error: {ex.Message}."); } } }); }
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, RoleManager <IdentityRole> roleMgr, UserManager <Gebruiker> userMgr, AstrologyQuizDbContext context) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseCors(builder => { builder.WithOrigins("http://localhost:3000") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Quiz}/{action=Index}/{id?}"); endpoints.MapRazorPages(); }); Seeders.SeedRoles(roleMgr).Wait(); Seeders.SeedUsers(userMgr).Wait(); }
public void UpdateUi(bool first) { MainWindow form = Program.Form; if (form.InvokeRequired) { form.Invoke(new UpdateUIDelegate(UpdateUi), new object[] { first }); return; } SetText(1, Id.ToString()); SubItems[1].Tag = Id; SetText(2, Toolbox.GetFileSize(SizeWhenDone)); SubItems[2].Tag = SizeWhenDone; SetText(3, Percentage + "%"); SubItems[3].Tag = Percentage; SetText(4, Status); SetText(5, string.Format(_seedersColumnFormat, Seeders < 0 ? "?" : Seeders.ToString(), PeersSendingToUs)); SubItems[5].Tag = Seeders; SetText(6, string.Format(_seedersColumnFormat, Leechers < 0 ? "?" : Leechers.ToString(), PeersGettingFromUs)); SubItems[6].Tag = Leechers; SetText(7, DownloadRate > 0 ? Toolbox.GetSpeed(DownloadRate) : ""); SubItems[7].Tag = DownloadRate; SetText(8, UploadRate > 0 ? Toolbox.GetSpeed(UploadRate) : ""); SubItems[8].Tag = UploadRate; SetText(9, Eta > 0 ? TimeSpan.FromSeconds(Eta).ToString() : ""); SubItems[9].Tag = Eta; SetText(10, Toolbox.GetFileSize(Uploaded)); SubItems[10].Tag = Uploaded; SetText(11, LocalRatio < 0 ? "∞" : LocalRatio.ToString()); SubItems[11].Tag = LocalRatio; SubItems[11].ForeColor = GetRatioColor(); SetText(12, Added.ToString()); SubItems[12].Tag = Added; if (DoneDate != null) { SubItems[13].Tag = DoneDate; SetText(13, DoneDate.ToString()); } SetText(14, FirstTrackerTrimmed); if (first) { lock (form.stateListBox) { if (FirstTrackerTrimmed.Length > 0 && form.stateListBox.FindItem(FirstTrackerTrimmed) == null) { form.stateListBox.Items.Add(new GListBoxItem(FirstTrackerTrimmed, 9)); } } if (Program.Settings.MinToTray && Program.Settings.StartedBalloon && _updateSerial > 2) { form.ShowTrayTip(LocalSettingsSingleton.BALLOON_TIMEOUT, TorrentName, String.Format(OtherStrings.NewTorrentIs, Status.ToLower()), ToolTipIcon.Info); } LogError(); } else if (Program.Settings.MinToTray && CompletionPopupPending) { CompletionPopupPending = false; form.ShowTrayTip(LocalSettingsSingleton.BALLOON_TIMEOUT, TorrentName, OtherStrings.TorrentFinished, ToolTipIcon.Info); } ForeColor = HasError ? Color.Red : SystemColors.WindowText; UpdateIcon(); }
protected override void FeedSeeder() { Seeders.Add(AddTypeDePropriete()); Seeders.Add(AddTypeDePiece()); }