@Override
public void wrap(DirectBuffer buffer, int offset, int length) {
reset();
final int frameEnd = offset + length;
headerDecoder.wrap(buffer, offset);
offset += headerDecoder.encodedLength();
bodyDecoder.wrap(buffer, offset, headerDecoder.blockLength(), headerDecoder.version());
partitionId = bodyDecoder.partitionId();
key = bodyDecoder.key();
valueType = bodyDecoder.valueType();
intent = Intent.fromProtocolValue(valueType, bodyDecoder.intent());
offset += bodyDecoder.sbeBlockLength();
final int valueLength = bodyDecoder.valueLength();
offset += ExecuteCommandRequestDecoder.valueHeaderLength();
value.wrap(buffer, offset, valueLength);
offset += valueLength;
bodyDecoder.limit(offset);
assert bodyDecoder.limit() == frameEnd
: "Decoder read only to position "
+ bodyDecoder.limit()
+ " but expected "
+ frameEnd
+ " as final position";
}