@Override public int onFragment( DirectBuffer buffer, int offset, int length, int streamId, boolean isMarkedFailed) { requestHeaderDescriptor.wrap(buffer, offset); final long requestId = requestHeaderDescriptor.requestId(); final int requestStreamId = requestHeaderDescriptor.streamId(); offset += ControlMessageRequestHeaderDescriptor.headerLength(); messageHeaderDecoder.wrap(requestBuffer, 0); offset += messageHeaderDecoder.encodedLength(); requestDecoder.wrap( buffer, offset, requestDecoder.sbeBlockLength(), requestDecoder.sbeSchemaVersion()); final ControlMessageType messageType = requestDecoder.messageType(); lastRequestMessageType(messageType); final int partitionId = requestDecoder.partitionId(); ensureBufferCapacity(requestDecoder.dataLength()); requestDecoder.getData(requestBuffer, 0, requestDecoder.dataLength()); final ControlMessageHandler handler = handlersByTypeId.get(messageType.value()); if (handler != null) { handler.handle(actor, partitionId, requestBuffer, requestId, requestStreamId); } else { sendResponse( actor, () -> errorResponseWriter .unsupportedMessage( getLastRequestMessageType().name(), handlersByTypeId.keySet().toArray()) .tryWriteResponseOrLogFailure(requestStreamId, requestId)); } return FragmentHandler.CONSUME_FRAGMENT_RESULT; }
@Override public int onFragment( DirectBuffer buffer, int offset, int length, int streamId, boolean isMarkedFailed) { requestHeaderDescriptor.wrap(buffer, offset); final long requestId = requestHeaderDescriptor.requestId(); final int requestStreamId = requestHeaderDescriptor.streamId(); offset += ControlMessageRequestHeaderDescriptor.headerLength(); messageHeaderDecoder.wrap(requestBuffer, 0); offset += messageHeaderDecoder.encodedLength(); requestDecoder.wrap( buffer, offset, requestDecoder.sbeBlockLength(), requestDecoder.sbeSchemaVersion()); final ControlMessageType messageType = requestDecoder.messageType(); lastRequestMessageType(messageType); final int partitionId = requestDecoder.partitionId(); ensureBufferCapacity(requestDecoder.dataLength()); requestDecoder.getData(requestBuffer, 0, requestDecoder.dataLength()); final ControlMessageHandler handler = handlersByTypeId.get(messageType.value()); if (handler != null) { handler.handle(actor, partitionId, requestBuffer, requestId, requestStreamId); } else { sendResponse( actor, () -> errorResponseWriter .unsupportedMessage( getLastRequestMessageType().name(), handlersByTypeId.keySet().toArray()) .tryWriteResponseOrLogFailure(requestStreamId, requestId)); } return FragmentHandler.CONSUME_FRAGMENT_RESULT; }