public SpeedDateClient() { _handlers = new Dictionary <ushort, IPacketHandler>(); _kernel = new SpeedDateKernel(); _listener = new SpeedDateNetListener(); _listener.NetworkErrorEvent += (point, code) => { Logs.Error($"NetworkError: ({code}): {point}"); }; _listener.PeerConnectedEvent += peer => { _netPeer.MessageReceived += HandleMessage; _logger.Info("Connected"); Started?.Invoke(); }; _listener.NetworkReceiveEvent += (peer, reader, method) => { _netPeer.HandleDataReceived(reader.Data); }; _listener.PeerDisconnectedEvent += (peer, info) => { _manager.Stop(); AppUpdater.Instance.Remove(this); _logger.Info("Disconnected"); Stopped?.Invoke(); }; _manager = new NetManager(_listener); }