Ignore:
Timestamp:
Nov 11, 2010, 11:16:07 PM (11 years ago)
Author:
Sven Rech
Message:

CrypP2P tries to reconnect now when SystemLeft event occurs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypP2P/Internal/ConnectionManager.cs

    r1698 r2081  
    1616
    1717using System;
     18using System.Threading;
    1819using Cryptool.P2P.Worker;
    1920using Cryptool.PluginBase;
     
    3132        private readonly object connectLock = new object();
    3233        private readonly P2PBase p2PBase;
     34        private DateTime lastConnectionAttempt;
    3335
    3436        public ConnectionManager(P2PBase p2PBase)
    3537        {
    3638            this.p2PBase = p2PBase;
     39
     40            bool reconnecting = false;
     41            p2PBase.OnSystemLeft += new P2PBase.SystemLeft(delegate
     42                                                               {
     43                                                                   //Enforce a minimum of 2 seconds between each connection attempt:
     44                                                                   if ((lastConnectionAttempt - DateTime.Now).TotalSeconds < 2)
     45                                                                       Thread.Sleep(2000);
     46
     47                                                                   P2PManager.GuiLogMessage("Lost P2P Connection. Try reconnecting...",
     48                                                                        NotificationLevel.Error);
     49                                                                   reconnecting = true;
     50                                                                   this.Connect();
     51                                                               });
     52            p2PBase.OnSystemJoined += new P2PBase.SystemJoined(delegate
     53                                                                   {
     54                                                                       if (p2PBase.IsConnected && reconnecting)
     55                                                                       {
     56                                                                           P2PManager.GuiLogMessage("Successfully reconnected!",
     57                                                                                NotificationLevel.Balloon);
     58                                                                           reconnecting = false;
     59                                                                       }
     60                                                                   });
    3761        }
    3862
     
    4468            lock (connectLock)
    4569            {
     70                lastConnectionAttempt = DateTime.Now;
     71
    4672                if (p2PBase.IsConnected || IsConnecting)
    4773                {
Note: See TracChangeset for help on using the changeset viewer.