// process a received datagram private void processDatagram(byte[] payload, int size, EndPoint sender) { using (var reader = ByteArrayReaderWriter.Get(payload)) { NetcodePacketHeader packetHeader = new NetcodePacketHeader(); packetHeader.Read(reader); if (packetHeader.PacketType == NetcodePacketType.ConnectionRequest) { if (!debugIgnoreConnectionRequest) { processConnectionRequest(reader, size, sender); } } else { switch (packetHeader.PacketType) { case NetcodePacketType.ChallengeResponse: if (!debugIgnoreChallengeResponse) { processConnectionResponse(reader, packetHeader, size, sender); } break; case NetcodePacketType.ConnectionKeepAlive: processConnectionKeepAlive(reader, packetHeader, size, sender); break; case NetcodePacketType.ConnectionPayload: processConnectionPayload(reader, packetHeader, size, sender); break; case NetcodePacketType.ConnectionDisconnect: processConnectionDisconnect(reader, packetHeader, size, sender); break; } } } }
private void processDatagram(Datagram datagram) { if (!MiscUtils.AddressEqual(datagram.sender, currentServerEndpoint)) { return; } using (var reader = ByteArrayReaderWriter.Get(datagram.payload)) { NetcodePacketHeader packetHeader = new NetcodePacketHeader(); packetHeader.Read(reader); int length = datagram.payloadSize - (int)reader.ReadPosition; switch (packetHeader.PacketType) { case NetcodePacketType.ConnectionChallenge: processChallengePacket(packetHeader, length, reader); break; case NetcodePacketType.ConnectionDenied: processConnectionDenied(packetHeader, length, reader); break; case NetcodePacketType.ConnectionKeepAlive: processConnectionKeepAlive(packetHeader, length, reader); break; case NetcodePacketType.ConnectionPayload: processConnectionPayload(packetHeader, length, reader); break; case NetcodePacketType.ConnectionDisconnect: processConnectionDisconnect(packetHeader, length, reader); break; } } }