public static QueryRowsResponseBody Parse(byte[] rawData)
{
QueryRowsResponseBody responseBody = new QueryRowsResponseBody();
int index = 0;
responseBody.StatusCode = BitConverter.ToUInt32(rawData, index);
index += sizeof(uint);
responseBody.ErrorCode = BitConverter.ToUInt32(rawData, index);
index += sizeof(uint);
responseBody.HasState = BitConverter.ToBoolean(rawData, index);
index += sizeof(bool);
if (responseBody.HasState)
{
responseBody.State = STAT.Parse(rawData, ref index);
}
responseBody.HasColumnsAndRows = BitConverter.ToBoolean(rawData, index);
index += sizeof(bool);
if (responseBody.HasColumnsAndRows)
{
responseBody.Columns = LargePropTagArray.Parse(rawData, ref index);
responseBody.RowCount = BitConverter.ToUInt32(rawData, index);
index += sizeof(uint);
responseBody.RowData = new AddressBookPropertyRow[(uint)responseBody.RowCount];
for (int i = 0; i < responseBody.RowCount; i++)
{
responseBody.RowData[i] = AddressBookPropertyRow.Parse(rawData, (LargePropTagArray)responseBody.Columns, ref index);
}
}
responseBody.AuxiliaryBufferSize = BitConverter.ToUInt32(rawData, index);
index += 4;
responseBody.AuxiliaryBuffer = new byte[responseBody.AuxiliaryBufferSize];
Array.Copy(rawData, index, responseBody.AuxiliaryBuffer, 0, responseBody.AuxiliaryBufferSize);
return responseBody;
}
}