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); }
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); }