Esempio n. 1
0
        public static void HandleEnqueueCommand(SOEClient sender, SOEMessage message)
        {
            // Is this client even authed?
            if (AccountManager.GetAccount(sender) == null)
            {
                Log.ErrorFormat("Unauthorized client tried enqueing command!");
                sender.Disconnect((ushort)SOEDisconnectReasons.Terminated);
                return;
            }

            // Setup a reader
            SOEReader reader = new SOEReader(message);

            // Get the length
            bool hasLength = reader.ReadBoolean(); // assuming this even is "has length" or just a random 01

            byte[] command = hasLength ? reader.ReadBlob() : reader.ReadToEnd();

            // Handle command!
            HandleCommand(sender, command);
        }
Esempio n. 2
0
        private void ReceiveMessage(SOEPacket packet)
        {
            SOEReader reader = new SOEReader(packet);

            // Have we received in order?
            ushort sequenceNumber = reader.ReadUInt16();

            if ((sequenceNumber != LastReceivedSequenceNumber + 1) && (sequenceNumber != 0))
            {
                ReceivedSequenceOutOfOrder(sequenceNumber);
                return;
            }

            // Acknowledge
            Acknowledge(sequenceNumber);
            LastReceivedSequenceNumber = sequenceNumber;

            // Get the SOEMessage
            byte[] data = reader.ReadToEnd();

            // Handle!
            Client.ReceiveMessage(data);
        }