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(); }
static void Main(string[] args) { IClientWorker worker = new ClientWorker(); worker.Start(3002); Console.ReadKey(); }
public CommunicationManager() { _worker = new ClientWorker(); _peers = new ConcurrentDictionary <IPEndPoint, Peer>(); GlobalReceiveSpeedWatcher = new SpeedWatcher(); GlobalSendSpeedWatcher = new SpeedWatcher(); _worker.QueueForever(CalculateSpeed, 500.Milliseconds()); _worker.Start(); }
/// <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; }
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); }
static AntiDebugging() { _worker.QueueForever(CheckDebugging, TimeSpan.FromSeconds(0.3)); _worker.Start(); }