public static Response FromArray(byte[] message)
{
Header header = Header.FromArray(message);
int offset = header.Size;
if (!header.Response || header.QuestionCount == 0) {
throw new ArgumentException("Invalid response message");
}
if (header.Truncated) {
return new Response(header,
Question.GetAllFromArray(message, offset, header.QuestionCount),
new List<IResourceRecord>(),
new List<IResourceRecord>(),
new List<IResourceRecord>());
}
return new Response(header,
Question.GetAllFromArray(message, offset, header.QuestionCount, out offset),
ResourceRecordFactory.GetAllFromArray(message, offset, header.AnswerRecordCount, out offset),
ResourceRecordFactory.GetAllFromArray(message, offset, header.AuthorityRecordCount, out offset),
ResourceRecordFactory.GetAllFromArray(message, offset, header.AdditionalRecordCount, out offset));
}