87 lines
1.9 KiB
C#
87 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|
|
} |