public void ProcessPacket(byte[] packetData)
{
try
{
BasicTcpPacket packet = StandardTcpPacketFactory.instance.getPacket(packetData);
#if(DEBUG)
Logger.Debug("Got packet : " + packet.ToString());
#endif
switch (packet.Type)
{
case BasicTcpPacket.PKT_TYPE_DISCONNECT:
ProcessDisconnectPacket((StandardDisconnectPacket)packet);
break;
case BasicTcpPacket.PKT_TYPE_ACK:
ProcessAckPacket((StandardAckPacket)packet);
break;
case BasicTcpPacket.PKT_TYPE_DATA:
ProcessDataPacket((StandardTcpDataPacket)packet);
break;
case BasicTcpPacket.PKT_TYPE_CONNECT_NAME_RQ:
ProcessNamedConnectionRequest((StandardNamedConnectRqPacket)packet);
break;
case BasicTcpPacket.PKT_TYPE_CONNECT_NAME_RS:
_tcpConnectionHelper.ProcessConnectRs((StandardNamedConnectRsPacket)packet);
break;
case BasicTcpPacket.PKT_TYPE_CONNECT_RS_ACK:
ProcessConnectRsAck((StandardConnectRsAckPacket)packet);
break;
case BasicTcpPacket.PKT_TYPE_DISCONNECT_ACK:
_tcpConnectionHelper.ProcessDisconnectAck((StandardDisconnectAckPacket)packet);
break;
case BasicTcpPacket.PKT_TYPE_DISCONNECT_RS:
_tcpConnectionHelper.ProcessDisconnectRs((StandardDisconnectRsPacket)packet);
break;
default:
throw new UnknownPacketException("Failed to handle packet " + packet);
}
}
catch (UnknownPacketException e)
{
Logger.Error("Failed to process TCP packet, unknown type : " + e.Message);
}
}