Exemple #1
0
        // 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)
                {
                    processConnectionRequest(reader, size, sender);
                }
                else
                {
                    switch (packetHeader.PacketType)
                    {
                    case NetcodePacketType.ChallengeResponse:
                        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;
                    }
                }
            }
        }
Exemple #2
0
        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;
                }
            }
        }