public override byte[] Encode()
{
RESPONSE_MESSAGE responseMessage = new RESPONSE_MESSAGE();
responseMessage.MESSAGEBODY = this.msgBLK;
responseMessage.MESSAGEHEADER = this.MessageHeader;
byte[] ret;
List<byte> temp = new List<byte>();
byte[] tempPayload;
List<byte> listRet = new List<byte>();
listRet.AddRange(MarshalHelper.GetBytes(((MSG_BLK)responseMessage.MESSAGEBODY).SizeOfSegmentId, false));
listRet.AddRange(((MSG_BLK)responseMessage.MESSAGEBODY).SegmentId);
while (listRet.Count % 4 != 0)
{
listRet.Add(byte.MinValue);
}
listRet.AddRange(MarshalHelper.GetBytes(((MSG_BLK)responseMessage.MESSAGEBODY).BlockIndex, false));
listRet.AddRange(MarshalHelper.GetBytes(((MSG_BLK)responseMessage.MESSAGEBODY).NextBlockIndex, false));
listRet.AddRange(MarshalHelper.GetBytes(((MSG_BLK)responseMessage.MESSAGEBODY).SizeOfBlock, false));
if (((MSG_BLK)responseMessage.MESSAGEBODY).Block != null)
{
listRet.AddRange(((MSG_BLK)responseMessage.MESSAGEBODY).Block);
}
while (listRet.Count % 4 != 0)
{
listRet.Add(byte.MinValue);
}
listRet.AddRange(MarshalHelper.GetBytes(((MSG_BLK)responseMessage.MESSAGEBODY).SizeOfVrfBlock, false));
while (listRet.Count % 4 != 0)
{
listRet.Add(byte.MinValue);
}
listRet.AddRange(MarshalHelper.GetBytes(((MSG_BLK)responseMessage.MESSAGEBODY).SizeOfIVBlock, false));
if (((MSG_BLK)responseMessage.MESSAGEBODY).IVBlock != null)
{
listRet.AddRange(((MSG_BLK)responseMessage.MESSAGEBODY).IVBlock);
}
tempPayload = listRet.ToArray();
responseMessage.MESSAGEHEADER.MsgSize = (uint)tempPayload.Length + 16;
List<byte> listRet1 = new List<byte>();
listRet1.AddRange(MarshalHelper.GetBytes((ushort)responseMessage.MESSAGEHEADER.ProtVer.MinorVersion, false));
listRet1.AddRange(MarshalHelper.GetBytes((ushort)responseMessage.MESSAGEHEADER.ProtVer.MajorVersion, false));
listRet1.AddRange(MarshalHelper.GetBytes((uint)responseMessage.MESSAGEHEADER.MsgType, false));
listRet1.AddRange(MarshalHelper.GetBytes(responseMessage.MESSAGEHEADER.MsgSize, false));
listRet1.AddRange(MarshalHelper.GetBytes((uint)responseMessage.MESSAGEHEADER.CryptoAlgoId, false));
temp.AddRange(listRet1.ToArray());
temp.AddRange(tempPayload);
temp.InsertRange(0, MarshalHelper.GetBytes((uint)temp.Count, false));
ret = (byte[])temp.ToArray();
return ret;
}