private void OnReceive(object obj) { if (_handler == null || _handler.Status != NetPeerStatus.Running) { return; } NetIncomingMessage message; while ((message = _handler.ReadMessage()) != null) { switch (message.MessageType) { case NetIncomingMessageType.ErrorMessage: case NetIncomingMessageType.WarningMessage: var error = new NetException(message.ReadString()); _notifier.AsyncError(new AsyncErrorEventArgs(error)); break; case NetIncomingMessageType.ConnectionApproval: OnApprove(message); break; case NetIncomingMessageType.StatusChanged: NetConnectionStatus status = (NetConnectionStatus)message.ReadByte(); if (status == NetConnectionStatus.Connected && _state == (int)PeerState.ConnectedToPeers) { OnPeerConnected(message); } if (status == NetConnectionStatus.Connected && _state == (int)PeerState.ConnectedToService) { OnServiceConnected(message); } if (status == NetConnectionStatus.Disconnecting || status == NetConnectionStatus.Disconnected) { OnDisconnected(message); } break; case NetIncomingMessageType.Data: case NetIncomingMessageType.UnconnectedData: if (_state == (int)PeerState.ConnectedToPeers) { OnPackageReceived(message); } break; } } }
private void OnError(Exception e) { _notifier.AsyncError(new AsyncErrorEventArgs(e)); _logger.Write(e); }