private void dispatch( IList <byte[]> headerBuffers, IList <byte[]> bodyBuffers) { Parameters header = new Parameters(); header.Deserialize(headerBuffers); Parameters body = null; byte[] rawBody = null; if (deliverAsRawBinary) { // repackage all body buffers into one int totalRawSize = 0; foreach (byte[] buf in bodyBuffers) { totalRawSize += buf.Length; } rawBody = new byte[totalRawSize]; int pos = 0; foreach (byte[] buf in bodyBuffers) { for (int i = 0; i != buf.Length; ++i) { rawBody[pos++] = buf[i]; } } } else { body = new Parameters(); body.Deserialize(bodyBuffers); } incomingMessageDispatchCallback.dispatch( target, header, body, rawBody); }