void DisptachPacket(byte[] packet)
{
MemoryStream stream = new MemoryStream(packet);
BinaryReader br = new BinaryReader(stream);
uint magic = br.ReadUInt32();
string packetID = Program.ReadString(br, 12);
uint length = br.ReadUInt32();
uint checksum = br.ReadUInt32();
if (magic == cMainNetwork)
{
byte[] payload = br.ReadBytes((int)length);
byte[] hash = Program.GenerateHash(payload);
if (CompareChecksum(checksum, hash))
{
// valid packet, get the handler
if (mPacketProcessors.ContainsKey(packetID))
{
PacketProcessor p = mPacketProcessors[packetID];
p(payload);
}
else
{
Console.WriteLine("Unhandled packet: " + packetID);
}
}
}
br.Close();
}