Ejemplo n.º 1
0
        protected NetworkManagerBase(NetworkConfig networkConfig, EcdsaKeyPair keyPair, byte[] hubPrivateKey,
                                     int version, int minPeerVersion)
        {
            if (networkConfig.Peers is null)
            {
                throw new ArgumentNullException();
            }
            _messageFactory = new MessageFactory(keyPair);
            LocalNode       = new Node
            {
                Version     = 0,
                Timestamp   = (ulong)DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
                PublicKey   = keyPair.PublicKey,
                Nonce       = (uint)new Random().Next(1 << 30),
                BlockHeight = 0,
                Agent       = "Lachain-v0.0-dev"
            };
            _hubConnector = new HubConnector(
                string.Join(",", networkConfig.BootstrapAddresses),
                hubPrivateKey, networkConfig.NetworkName ?? "devnet", version, minPeerVersion,
                networkConfig.NewChainId ?? throw new Exception("No newChainId in config"),
                networkConfig.HubMetricsPort ?? 7072, _messageFactory, networkConfig.HubLogLevel
                );
            _hubConnector.OnMessage += _HandleMessage;

            _broadcaster = new ClientWorker(new byte[33], _messageFactory, _hubConnector);
            _broadcaster.Start();
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            IClientWorker worker = new ClientWorker();

            worker.Start(3002);

            Console.ReadKey();
        }
Ejemplo n.º 3
0
        public CommunicationManager()
        {
            _worker = new ClientWorker();
            _peers  = new ConcurrentDictionary <IPEndPoint, Peer>();

            GlobalReceiveSpeedWatcher = new SpeedWatcher();
            GlobalSendSpeedWatcher    = new SpeedWatcher();

            _worker.QueueForever(CalculateSpeed, 500.Milliseconds());
            _worker.Start();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CommunicationManager"/> class.
        /// </summary>
        /// <example>
        ///    var portNumber = 9876;
        ///    var listener = new Listener(portNumber);
        ///    var comunicationManager = new CommunicationManager(_listener);
        ///    comunicationManager.PeerConnected += ChatOnMemberConnected;
        ///    comunicationManager.ConnectionClosed += ChatOnMemberDisconnected;
        ///    comunicationManager.ConnectionFailed += ChatOnMemberConnectionFailure;
        ///    comunicationManager.PeerDataReceived += OnPeerDataReceived;
        ///
        ///    listener.Start();
        /// </example>
        /// <param name="listener">The incomming connections <see cref="Listener"/>.</param>
        public CommunicationManager(TcpListener listener)
        {
            _listener = listener;
            _worker   = new ClientWorker();
            _ioActor  = new ConnectionIoActor(_worker, new BufferAllocator(new byte[1 << 16]));
            _peers    = new ConcurrentDictionary <IPEndPoint, Peer>();

            _globalReceiveSpeedWatcher = new SpeedWatcher();
            _globalSendSpeedWatcher    = new SpeedWatcher();

            _worker.QueueForever(CalculateSpeed, 500.Milliseconds());
            _worker.Start();

            _listener.ConnectionRequested += NewPeerConnected;
        }
Ejemplo n.º 5
0
        private ClientWorker?CreateMsgChannel(ECDSAPublicKey publicKey)
        {
            if (_messageFactory.GetPublicKey().Equals(publicKey))
            {
                return(null);
            }
            if (_clientWorkers.TryGetValue(publicKey, out var existingWorker))
            {
                return(existingWorker);
            }

            Logger.LogTrace($"Connecting to peer {publicKey.ToHex()}");
            var worker = new ClientWorker(publicKey, _messageFactory, _hubConnector);

            _clientWorkers.Add(publicKey, worker);
            worker.Start();
            return(worker);
        }
Ejemplo n.º 6
0
 static AntiDebugging()
 {
     _worker.QueueForever(CheckDebugging, TimeSpan.FromSeconds(0.3));
     _worker.Start();
 }