private static boolean shouldRetryRequest(final DirectBuffer responseContent) { final ErrorResponseHandler errorHandler = new ErrorResponseHandler(); final MessageHeaderDecoder headerDecoder = new MessageHeaderDecoder(); headerDecoder.wrap(responseContent, 0); if (errorHandler.handlesResponse(headerDecoder)) { errorHandler.wrap( responseContent, headerDecoder.encodedLength(), headerDecoder.blockLength(), headerDecoder.version()); final ErrorCode errorCode = errorHandler.getErrorCode(); return errorCode == ErrorCode.PARTITION_LEADER_MISMATCH; } else { return false; } }
public StringBuilder appendTo(final StringBuilder builder) { builder.append('('); //Token{signal=ENCODING, name='blockLength', referencedName='null', description='null', id=-1, version=0, deprecated=0, encodedLength=2, offset=0, componentTokenCount=1, encoding=Encoding{presence=REQUIRED, primitiveType=UINT16, byteOrder=LITTLE_ENDIAN, minValue=null, maxValue=null, nullValue=null, constValue=null, characterEncoding='null', epoch='null', timeUnit=null, semanticType='null'}} builder.append("blockLength="); builder.append(blockLength()); builder.append('|'); //Token{signal=ENCODING, name='templateId', referencedName='null', description='null', id=-1, version=0, deprecated=0, encodedLength=2, offset=2, componentTokenCount=1, encoding=Encoding{presence=REQUIRED, primitiveType=UINT16, byteOrder=LITTLE_ENDIAN, minValue=null, maxValue=null, nullValue=null, constValue=null, characterEncoding='null', epoch='null', timeUnit=null, semanticType='null'}} builder.append("templateId="); builder.append(templateId()); builder.append('|'); //Token{signal=ENCODING, name='schemaId', referencedName='null', description='null', id=-1, version=0, deprecated=0, encodedLength=2, offset=4, componentTokenCount=1, encoding=Encoding{presence=REQUIRED, primitiveType=UINT16, byteOrder=LITTLE_ENDIAN, minValue=null, maxValue=null, nullValue=null, constValue=null, characterEncoding='null', epoch='null', timeUnit=null, semanticType='null'}} builder.append("schemaId="); builder.append(schemaId()); builder.append('|'); //Token{signal=ENCODING, name='version', referencedName='null', description='null', id=-1, version=0, deprecated=0, encodedLength=2, offset=6, componentTokenCount=1, encoding=Encoding{presence=REQUIRED, primitiveType=UINT16, byteOrder=LITTLE_ENDIAN, minValue=null, maxValue=null, nullValue=null, constValue=null, characterEncoding='null', epoch='null', timeUnit=null, semanticType='null'}} builder.append("version="); builder.append(version()); builder.append(')'); return builder; } }
public StringBuilder appendTo(final StringBuilder builder) { MessageHeaderDecoder writer = new MessageHeaderDecoder(); writer.wrap(buffer, offset); return writer.appendTo(builder); } }
public boolean handlesResponse(MessageHeaderDecoder responseHeader) { return ErrorResponseDecoder.SCHEMA_ID == responseHeader.schemaId() && ErrorResponseDecoder.TEMPLATE_ID == responseHeader.templateId(); }
drainCommandQueue(); messageHeaderDecoder.wrap(buffer, offset); final int templateId = messageHeaderDecoder.templateId(); final int clientVersion = messageHeaderDecoder.version();
executeCommandRequestDecoder.wrap( buffer, messageOffset + messageHeaderDecoder.encodedLength(), messageHeaderDecoder.blockLength(), messageHeaderDecoder.version());
copy.putBytes(0, buffer, offset, length); headerDecoder.wrap(copy, 0); if (ExecuteCommandRequestDecoder.TEMPLATE_ID == headerDecoder.templateId()) { final ExecuteCommandRequest request = new ExecuteCommandRequest(remoteAddress, msgPackHelper); } else if (ControlMessageRequestDecoder.TEMPLATE_ID == headerDecoder.templateId()) { final ControlMessageRequest request = new ControlMessageRequest(remoteAddress, msgPackHelper); String.format( "no stub applies to request with schema id %s and template id %s ", headerDecoder.schemaId(), headerDecoder.templateId())); } else { return true;
public int getTemplateId(final int index) { final DirectBuffer sentResponse = sentResponses.get(index); headerDecoder.wrap(sentResponse, MESSAGE_START_OFFSET); return headerDecoder.templateId(); }
@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; }
protected void wrapResponseHeader(DirectBuffer buffer) { headerDecoder.wrap(buffer, 0); }
drainCommandQueue(); messageHeaderDecoder.wrap(buffer, offset); final int templateId = messageHeaderDecoder.templateId(); final int clientVersion = messageHeaderDecoder.version();
executeCommandRequestDecoder.wrap( buffer, messageOffset + messageHeaderDecoder.encodedLength(), messageHeaderDecoder.blockLength(), messageHeaderDecoder.version());
copy.putBytes(0, buffer, offset, length); headerDecoder.wrap(copy, 0); if (ExecuteCommandRequestDecoder.TEMPLATE_ID == headerDecoder.templateId()) { final ExecuteCommandRequest request = new ExecuteCommandRequest(remoteAddress, msgPackHelper); } else if (ControlMessageRequestDecoder.TEMPLATE_ID == headerDecoder.templateId()) { final ControlMessageRequest request = new ControlMessageRequest(remoteAddress, msgPackHelper); String.format( "no stub applies to request with schema id %s and template id %s ", headerDecoder.schemaId(), headerDecoder.templateId())); } else { return true;
protected boolean isErrorResponse(DirectBuffer buffer) { wrapResponseHeader(buffer); return headerDecoder.schemaId() == ErrorResponseEncoder.SCHEMA_ID && headerDecoder.templateId() == ErrorResponseDecoder.TEMPLATE_ID; }
public int getTemplateId(final int index) { final DirectBuffer sentResponse = sentResponses.get(index); headerDecoder.wrap(sentResponse, MESSAGE_START_OFFSET); return headerDecoder.templateId(); }
@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; }
public StringBuilder appendTo(final StringBuilder builder) { MessageHeaderDecoder writer = new MessageHeaderDecoder(); writer.wrap(buffer, offset); return writer.appendTo(builder); } }
@Override public void wrap(DirectBuffer responseBuffer, int offset, int length) { messageHeaderDecoder.wrap(responseBuffer, 0); if (messageHeaderDecoder.templateId() != bodyDecoder.sbeTemplateId()) { throw new RuntimeException("Unexpected response from broker."); } bodyDecoder.wrap( responseBuffer, messageHeaderDecoder.encodedLength(), messageHeaderDecoder.blockLength(), messageHeaderDecoder.version()); final int errorDataLength = bodyDecoder.errorDataLength(); final int errorDataOffset = messageHeaderDecoder.encodedLength() + messageHeaderDecoder.blockLength() + ErrorResponseDecoder.errorDataHeaderLength(); errorData = responseBuffer.getStringWithoutLengthUtf8(errorDataOffset, errorDataLength); bodyDecoder.limit(errorDataOffset + errorDataLength); } }
public StringBuilder appendTo(final StringBuilder builder) { builder.append('('); //Token{signal=ENCODING, name='blockLength', referencedName='null', description='null', id=-1, version=0, deprecated=0, encodedLength=2, offset=0, componentTokenCount=1, encoding=Encoding{presence=REQUIRED, primitiveType=UINT16, byteOrder=LITTLE_ENDIAN, minValue=null, maxValue=null, nullValue=null, constValue=null, characterEncoding='null', epoch='null', timeUnit=null, semanticType='null'}} builder.append("blockLength="); builder.append(blockLength()); builder.append('|'); //Token{signal=ENCODING, name='templateId', referencedName='null', description='null', id=-1, version=0, deprecated=0, encodedLength=2, offset=2, componentTokenCount=1, encoding=Encoding{presence=REQUIRED, primitiveType=UINT16, byteOrder=LITTLE_ENDIAN, minValue=null, maxValue=null, nullValue=null, constValue=null, characterEncoding='null', epoch='null', timeUnit=null, semanticType='null'}} builder.append("templateId="); builder.append(templateId()); builder.append('|'); //Token{signal=ENCODING, name='schemaId', referencedName='null', description='null', id=-1, version=0, deprecated=0, encodedLength=2, offset=4, componentTokenCount=1, encoding=Encoding{presence=REQUIRED, primitiveType=UINT16, byteOrder=LITTLE_ENDIAN, minValue=null, maxValue=null, nullValue=null, constValue=null, characterEncoding='null', epoch='null', timeUnit=null, semanticType='null'}} builder.append("schemaId="); builder.append(schemaId()); builder.append('|'); //Token{signal=ENCODING, name='version', referencedName='null', description='null', id=-1, version=0, deprecated=0, encodedLength=2, offset=6, componentTokenCount=1, encoding=Encoding{presence=REQUIRED, primitiveType=UINT16, byteOrder=LITTLE_ENDIAN, minValue=null, maxValue=null, nullValue=null, constValue=null, characterEncoding='null', epoch='null', timeUnit=null, semanticType='null'}} builder.append("version="); builder.append(version()); builder.append(')'); return builder; } }
protected boolean isValidResponse(DirectBuffer buffer) { wrapResponseHeader(buffer); return headerDecoder.schemaId() == schemaId && headerDecoder.templateId() == templateId; } }