public void Update()
{
NetIncomingMessage message;
while ((message = _netServer.ReadMessage()) != null)
{
switch (message.MessageType)
{
case NetIncomingMessageType.Data:
PacketType packetType = (PacketType)message.ReadInt16();
if (_packetHandlers.ContainsKey(packetType))
{
var eventArgs = new PacketReceivedEventArgs(message, message.SenderConnection);
foreach (var handler in _packetHandlers[packetType])
handler.Invoke(eventArgs);
}
break;
case NetIncomingMessageType.ConnectionApproval:
message.SenderConnection.Approve();
break;
case NetIncomingMessageType.StatusChanged:
if (message.SenderConnection.Status == NetConnectionStatus.Connected)
{
Console.WriteLine("Established connection with {0}.", message.SenderConnection.ToString());
if (this.Connection_Received != null)
this.Connection_Received.Invoke(this, new ConnectionEventArgs(message.SenderConnection));
}
else if (message.SenderConnection.Status == NetConnectionStatus.Disconnected)
{
Console.WriteLine("Lost connection with {0}.", message.SenderConnection.ToString());
if (this.Connection_Lost != null)
this.Connection_Lost.Invoke(this, new ConnectionEventArgs(message.SenderConnection));
}
break;
case NetIncomingMessageType.DiscoveryRequest:
NetOutgoingMessage response = _netServer.CreateMessage();
_netServer.SendDiscoveryResponse(response, message.SenderEndPoint);
break;
case NetIncomingMessageType.DebugMessage:
Console.WriteLine(message.ReadString());
break;
case NetIncomingMessageType.WarningMessage:
Console.WriteLine(message.ReadString());
break;
case NetIncomingMessageType.ErrorMessage:
Console.WriteLine(message.ReadString());
break;
}
}
}