public virtual List<byte> SerializeToByteList()
{
// Request ID bytes
List<byte> requestIDBytes = (new Compact64bitInt(this.RequestID)).SerializeToByteList();
// Request Type bytes
List<byte> requestTypeBytes = (new Compact64bitInt(this.RequestType)).SerializeToByteList();
// Priority bytes
List<byte> priorityBytes = (new Compact64bitInt(this.Priority)).SerializeToByteList();
// Sub-request Start bytes
int subRequstStartLength = requestIDBytes.Count + requestTypeBytes.Count + priorityBytes.Count;
this.SubRequestStart = new StreamObjectHeaderStart32bit(StreamObjectTypeHeaderStart.SubRequest, subRequstStartLength);
List<byte> byteList = new List<byte>();
// Sub-request Start
byteList.AddRange(this.SubRequestStart.SerializeToByteList());
// Request ID
byteList.AddRange(requestIDBytes);
// Request Type
byteList.AddRange(requestTypeBytes);
// Priority
byteList.AddRange(priorityBytes);
// Target partition ID
if (this.IsPartitionIDGUIDUsed)
{
this.PartitionIdGUIDStart = new StreamObjectHeaderStart32bit(StreamObjectTypeHeaderStart.TargetPartitionId, 16);
byteList.AddRange(this.PartitionIdGUIDStart.SerializeToByteList());
byteList.AddRange(this.PartitionIdGUID.ToByteArray());
this.PartitionIdGUIDEnd = new StreamObjectHeaderEnd16bit(StreamObjectTypeHeaderEnd.TargetPartitionId);
byteList.AddRange(this.PartitionIdGUIDEnd.SerializeToByteList());
}
return byteList;
}