public boolean handlesResponse(MessageHeaderDecoder responseHeader) { return ErrorResponseDecoder.SCHEMA_ID == responseHeader.schemaId() && ErrorResponseDecoder.TEMPLATE_ID == responseHeader.templateId(); }
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; } }
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 isErrorResponse(DirectBuffer buffer) { wrapResponseHeader(buffer); return headerDecoder.schemaId() == ErrorResponseEncoder.SCHEMA_ID && headerDecoder.templateId() == ErrorResponseDecoder.TEMPLATE_ID; }
String.format( "no stub applies to request with schema id %s and template id %s ", headerDecoder.schemaId(), headerDecoder.templateId())); } else { return true;
String.format( "no stub applies to request with schema id %s and template id %s ", headerDecoder.schemaId(), headerDecoder.templateId())); } else { return true;
public BrokerResponse<T> getResponse(ClientResponse clientResponse) { final DirectBuffer responseBuffer = clientResponse.getResponseBuffer(); try { if (isValidResponse(responseBuffer)) { wrapResponse(responseBuffer); return readResponse(); } else if (isErrorResponse(responseBuffer)) { wrapErrorResponse(responseBuffer); final BrokerError error = new BrokerError(errorResponse); return new BrokerErrorResponse<>(error); } else { throw new UnsupportedBrokerResponseException( headerDecoder.schemaId(), headerDecoder.templateId(), schemaId, templateId); } } catch (Exception e) { // Log response buffer for debugging purpose Loggers.GATEWAY_LOGGER.error( "Failed to read response: {}{}{}", e.getMessage(), System.lineSeparator(), BufferUtil.bufferAsHexString(responseBuffer)); throw e; } }
@Test public void shouldWriteResponse() { responseWriter.errorCode(ErrorCode.PARTITION_LEADER_MISMATCH).errorMessage("error message"); final UnsafeBuffer buf = new UnsafeBuffer(new byte[responseWriter.getLength()]); // when responseWriter.write(buf, 0); // then int offset = 0; messageHeaderDecoder.wrap(buf, offset); assertThat(messageHeaderDecoder.schemaId()).isEqualTo(responseDecoder.sbeSchemaId()); assertThat(messageHeaderDecoder.version()).isEqualTo(responseDecoder.sbeSchemaVersion()); assertThat(messageHeaderDecoder.templateId()).isEqualTo(responseDecoder.sbeTemplateId()); assertThat(messageHeaderDecoder.blockLength()).isEqualTo(responseDecoder.sbeBlockLength()); offset += messageHeaderDecoder.encodedLength(); responseDecoder.wrap( buf, offset, responseDecoder.sbeBlockLength(), responseDecoder.sbeSchemaVersion()); assertThat(responseDecoder.errorCode()).isEqualTo(ErrorCode.PARTITION_LEADER_MISMATCH); assertThat(responseDecoder.errorData()).isEqualTo("error message"); } }
@Test public void shouldWriteResponse() { responseWriter.errorCode(ErrorCode.PARTITION_LEADER_MISMATCH).errorMessage("error message"); final UnsafeBuffer buf = new UnsafeBuffer(new byte[responseWriter.getLength()]); // when responseWriter.write(buf, 0); // then int offset = 0; messageHeaderDecoder.wrap(buf, offset); assertThat(messageHeaderDecoder.schemaId()).isEqualTo(responseDecoder.sbeSchemaId()); assertThat(messageHeaderDecoder.version()).isEqualTo(responseDecoder.sbeSchemaVersion()); assertThat(messageHeaderDecoder.templateId()).isEqualTo(responseDecoder.sbeTemplateId()); assertThat(messageHeaderDecoder.blockLength()).isEqualTo(responseDecoder.sbeBlockLength()); offset += messageHeaderDecoder.encodedLength(); responseDecoder.wrap( buf, offset, responseDecoder.sbeBlockLength(), responseDecoder.sbeSchemaVersion()); assertThat(responseDecoder.errorCode()).isEqualTo(ErrorCode.PARTITION_LEADER_MISMATCH); assertThat(responseDecoder.errorData()).isEqualTo("error message"); } }
assertThat(messageHeaderDecoder.blockLength()).isEqualTo(responseDecoder.sbeBlockLength()); assertThat(messageHeaderDecoder.templateId()).isEqualTo(responseDecoder.sbeTemplateId()); assertThat(messageHeaderDecoder.schemaId()).isEqualTo(responseDecoder.sbeSchemaId()); assertThat(messageHeaderDecoder.version()).isEqualTo(responseDecoder.sbeSchemaVersion());
assertThat(messageHeaderDecoder.blockLength()).isEqualTo(responseDecoder.sbeBlockLength()); assertThat(messageHeaderDecoder.templateId()).isEqualTo(responseDecoder.sbeTemplateId()); assertThat(messageHeaderDecoder.schemaId()).isEqualTo(responseDecoder.sbeSchemaId()); assertThat(messageHeaderDecoder.version()).isEqualTo(responseDecoder.sbeSchemaVersion());
assertThat(messageHeaderDecoder.blockLength()).isEqualTo(responseDecoder.sbeBlockLength()); assertThat(messageHeaderDecoder.templateId()).isEqualTo(responseDecoder.sbeTemplateId()); assertThat(messageHeaderDecoder.schemaId()).isEqualTo(responseDecoder.sbeSchemaId()); assertThat(messageHeaderDecoder.version()).isEqualTo(responseDecoder.sbeSchemaVersion());
assertThat(messageHeaderDecoder.blockLength()).isEqualTo(responseDecoder.sbeBlockLength()); assertThat(messageHeaderDecoder.templateId()).isEqualTo(responseDecoder.sbeTemplateId()); assertThat(messageHeaderDecoder.schemaId()).isEqualTo(responseDecoder.sbeSchemaId()); assertThat(messageHeaderDecoder.version()).isEqualTo(responseDecoder.sbeSchemaVersion());