Example #1
0
        private void WritePacket(ICustomDataOutput writer, int id)
        {
            var packet = writer.Data;

            writer.Clear();

            var typeLen = ComputeTypeLen(packet.Length);

            var header = (short)SubComputeStaticHeader((uint)id, typeLen);

            writer.WriteShort(header);

            switch (typeLen)
            {
            case 0:
                break;

            case 1:
                writer.WriteByte((byte)packet.Length);
                break;

            case 2:
                writer.WriteShort((short)packet.Length);
                break;

            case 3:
                writer.WriteByte((byte)((packet.Length >> 16) & 255));
                writer.WriteShort((short)(packet.Length & 65535));
                break;

            default:
                throw new Exception("Packet's length can't be encoded on 4 or more bytes");
            }
            writer.WriteBytes(packet);
        }
Example #2
0
        private void WritePacket(ICustomDataOutput writer, NetworkMessage message)
        {
            var packet = writer.Data;

            writer.Clear();

            var typeLen = ComputeTypeLen(packet.Length);
            var id      = message.GetType().GetProperty("MessageID").GetValue(message);

            var header = (short)SubComputeStaticHeader((uint)id, typeLen);

            writer.WriteShort(header);

            writer.WriteUInt(_instanceId++);

            switch (typeLen)
            {
            case 0:
                break;

            case 1:
                writer.WriteByte((byte)packet.Length);
                break;

            case 2:
                writer.WriteShort((short)packet.Length);
                break;

            case 3:
                writer.WriteByte((byte)((packet.Length >> 16) & 255));
                writer.WriteShort((short)(packet.Length & 65535));
                break;

            default:
                throw new Exception("Packet's length can't be encoded on 4 or more bytes");
            }
            writer.WriteBytes(packet);
        }