using System; namespace BF { internal class NetOutgoingMessage : INetOutgoingMessage { private NetOutgoingMessageType messageType; private uint group; private byte cmd; private uint seq; private byte[] data; private int packDataLength; private int HeaderLength => 4; internal NetOutgoingMessageType MessageType { get => messageType; set => messageType = value; } internal uint Group { get => group; set => group = value; } internal byte Cmd { get => cmd; set => cmd = value; } public uint Seq { get => seq; set => seq = value; } internal byte[] Data { get => data; set => data = value; } internal int PackDataLength { get => packDataLength; set => packDataLength = value; } public void Encode(uint group, byte cmd, byte[] data) { this.group = group; this.cmd = cmd; packDataLength = data.Length; // if (packDataLength <= 0) // { // //invalid data length // return; // } if (this.data == null) { this.data = new byte[0]; } if (this.data.Length < packDataLength) { Array.Resize(ref this.data, packDataLength); } for (int i = 0; i < this.data.Length; i++) { this.data[i] = i < packDataLength ? data[i] : (byte)0; } } public void Reset() { group = 0; cmd = 0; seq = 0; packDataLength = 0; } } }