+ while (gamer.IsDataAvailable)\r
+ {\r
+ NetworkGamer sender;\r
+\r
+ gamer.ReceiveData(mPacketReader, out sender);\r
+ PacketType packetId = (PacketType)mPacketReader.ReadByte();\r
+\r
+ switch (packetId)\r
+ {\r
+ case PacketType.Chat:\r
+\r
+ short messageLength = mPacketReader.ReadInt16();\r
+ char[] message = mPacketReader.ReadChars(messageLength);\r
+\r
+ ChatPacket chatPacket = new ChatPacket(sender, new String(message));\r
+ mChatPackets.Add(chatPacket);\r
+ break;\r
+\r
+ case PacketType.Event:\r
+\r
+ short stallCount = mPacketReader.ReadInt16();\r
+ short averageOwd = mPacketReader.ReadInt16();\r
+ int frameNumber = mPacketReader.ReadInt32();\r
+ byte numEvents = mPacketReader.ReadByte();\r
+\r
+ for (byte i = 0; i < numEvents; ++i)\r
+ {\r
+ ReadEvent(mPacketReader, sender);\r
+ }\r
+\r
+ break;\r
+\r
+ case PacketType.Stall:\r
+\r
+ byte numStalledPeers = mPacketReader.ReadByte();\r
+ byte[] stalledPeers = mPacketReader.ReadBytes(numStalledPeers);\r
+\r
+ break;\r
+ }\r
+ }\r