protected void UpdateServerConnectionState( NetConnectionStatus s, NetIncomingMessage message, MessagePipe pipe) { switch (s) { case NetConnectionStatus.Connected: Log.Debug("player connected: {connection}", message.SenderConnection); OnClientConnectionSuccessful?.Invoke(message.SenderConnection); break; case NetConnectionStatus.Disconnected: Log.Debug("player disconnected: {connection}", message.SenderConnection); OnClientDisconnected?.Invoke(message.SenderConnection); break; case NetConnectionStatus.Disconnecting: case NetConnectionStatus.InitiatedConnect: case NetConnectionStatus.None: case NetConnectionStatus.ReceivedInitiation: case NetConnectionStatus.RespondedConnect: case NetConnectionStatus.RespondedAwaitingApproval: break; } Log.Information("Updated connection status: " + s.ToString()); }
/// <summary> /// Process message on NetworkPipe /// This is generic between Client and Server. /// </summary> /// <param name="message"></param> /// <param name="pipe"></param> protected void ProcessMessage(NetIncomingMessage message, MessagePipe pipe) { switch (message.MessageType) { case NetIncomingMessageType.DebugMessage: Log.Debug("NET: {message}", message.ReadString()); break; case NetIncomingMessageType.ErrorMessage: Log.Error("NET: {message}", message.ReadString()); break; case NetIncomingMessageType.WarningMessage: Log.Warning("NET: {message}", message.ReadString()); break; case NetIncomingMessageType.VerboseDebugMessage: Log.Debug("NET: {message}", message.ReadString()); break; case NetIncomingMessageType.StatusChanged: NetConnectionStatus status = (NetConnectionStatus)message.ReadByte(); UpdateServerConnectionState(status, message, pipe); break; case NetIncomingMessageType.Data: try { pipe.Receive(message); } catch (System.Exception e) { Log.Error("Exception: {e}", e); } break; default: break; } }
/// <summary> /// Buffer capture stores all network messages which have been sent with the specified filter. /// It supports multiple filters too! /// </summary> /// <param name="_pipe"></param> public BufferCapture(MessagePipe _pipe) { pipe = _pipe; messages = new List <BufferData>(); filters = new List <string>(); }