Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
 private void OnError(Exception e)
 {
     _notifier.AsyncError(new AsyncErrorEventArgs(e));
     _logger.Write(e);
 }