private void BuildPacket(BigEndianWriter writer) { byte[] data = writer.Data; writer.Clear(); int messageLenghtType = ComputeTypeLen(data.Length); short header = ComputeStaticHeader((int) MessageId, messageLenghtType); writer.WriteShort(header); switch (messageLenghtType) { case 1: writer.WriteByte((byte) data.Length); break; case 2: writer.WriteShort((short) data.Length); break; case 3: writer.WriteByte((byte) (data.Length >> 16 & 255)); writer.WriteShort((short) (data.Length & 65535)); break; } writer.WriteBytes(data); }