@Test public void shouldHandleCommandRequest() { // given final int writtenLength = writeCommandRequestToBuffer( buffer, LOG_STREAM_PARTITION_ID, null, ValueType.JOB, JobIntent.CREATE); // when final boolean isHandled = messageHandler.onRequest( serverOutput, DEFAULT_ADDRESS, buffer, 0, writtenLength, REQUEST_ID); // then assertThat(isHandled).isTrue(); final BufferedLogStreamReader logStreamReader = new BufferedLogStreamReader(logStream, true); waitForAvailableEvent(logStreamReader); final LoggedEvent loggedEvent = logStreamReader.next(); final byte[] valueBuffer = new byte[JOB_EVENT.length]; loggedEvent .getValueBuffer() .getBytes(loggedEvent.getValueOffset(), valueBuffer, 0, loggedEvent.getValueLength()); assertThat(loggedEvent.getValueLength()).isEqualTo(JOB_EVENT.length); assertThat(valueBuffer).isEqualTo(JOB_EVENT); final RecordMetadata eventMetadata = new RecordMetadata(); loggedEvent.readMetadata(eventMetadata); assertThat(eventMetadata.getRequestId()).isEqualTo(REQUEST_ID); assertThat(eventMetadata.getRequestStreamId()).isEqualTo(DEFAULT_ADDRESS.getStreamId()); }
@Test public void shouldHandleCommandRequest() { // given final int writtenLength = writeCommandRequestToBuffer( buffer, LOG_STREAM_PARTITION_ID, null, ValueType.JOB, JobIntent.CREATE); // when final boolean isHandled = messageHandler.onRequest( serverOutput, DEFAULT_ADDRESS, buffer, 0, writtenLength, REQUEST_ID); // then assertThat(isHandled).isTrue(); final BufferedLogStreamReader logStreamReader = new BufferedLogStreamReader(logStream, true); waitForAvailableEvent(logStreamReader); final LoggedEvent loggedEvent = logStreamReader.next(); final byte[] valueBuffer = new byte[JOB_EVENT.length]; loggedEvent .getValueBuffer() .getBytes(loggedEvent.getValueOffset(), valueBuffer, 0, loggedEvent.getValueLength()); assertThat(loggedEvent.getValueLength()).isEqualTo(JOB_EVENT.length); assertThat(valueBuffer).isEqualTo(JOB_EVENT); final RecordMetadata eventMetadata = new RecordMetadata(); loggedEvent.readMetadata(eventMetadata); assertThat(eventMetadata.getRequestId()).isEqualTo(REQUEST_ID); assertThat(eventMetadata.getRequestStreamId()).isEqualTo(DEFAULT_ADDRESS.getStreamId()); }
private void stage( RecordType type, Intent intent, long key, RejectionType rejectionType, DirectBuffer rejectionReason, RecordMetadata metadata, UnpackedObject value) { writer .partitionId(partitionId) .key(key) .intent(intent) .recordType(type) .valueType(metadata.getValueType()) .rejectionType(rejectionType) .rejectionReason(rejectionReason) .valueWriter(value); this.requestId = metadata.getRequestId(); this.requestStreamId = metadata.getRequestStreamId(); isResponseStaged = true; }
private void stage( RecordType type, Intent intent, long key, RejectionType rejectionType, DirectBuffer rejectionReason, RecordMetadata metadata, UnpackedObject value) { writer .partitionId(partitionId) .key(key) .intent(intent) .recordType(type) .valueType(metadata.getValueType()) .rejectionType(rejectionType) .rejectionReason(rejectionReason) .valueWriter(value); this.requestId = metadata.getRequestId(); this.requestStreamId = metadata.getRequestStreamId(); isResponseStaged = true; }
private boolean handleControlMessageRequest( final RecordMetadata eventMetadata, final DirectBuffer buffer, final int messageOffset, final int messageLength) { boolean isHandled = false; long publishPosition; do { publishPosition = controlMessageDispatcher.claim( claimedControlMessageFragment, ControlMessageRequestHeaderDescriptor.framedLength(messageLength)); } while (publishPosition == -2); if (publishPosition >= 0) { final MutableDirectBuffer writeBuffer = claimedControlMessageFragment.getBuffer(); int writeBufferOffset = claimedControlMessageFragment.getOffset(); controlMessageRequestHeaderDescriptor .wrap(writeBuffer, writeBufferOffset) .streamId(eventMetadata.getRequestStreamId()) .requestId(eventMetadata.getRequestId()); writeBufferOffset += ControlMessageRequestHeaderDescriptor.headerLength(); writeBuffer.putBytes(writeBufferOffset, buffer, messageOffset, messageLength); claimedControlMessageFragment.commit(); isHandled = true; } return isHandled; }
private boolean handleControlMessageRequest( final RecordMetadata eventMetadata, final DirectBuffer buffer, final int messageOffset, final int messageLength) { boolean isHandled = false; long publishPosition; do { publishPosition = controlMessageDispatcher.claim( claimedControlMessageFragment, ControlMessageRequestHeaderDescriptor.framedLength(messageLength)); } while (publishPosition == -2); if (publishPosition >= 0) { final MutableDirectBuffer writeBuffer = claimedControlMessageFragment.getBuffer(); int writeBufferOffset = claimedControlMessageFragment.getOffset(); controlMessageRequestHeaderDescriptor .wrap(writeBuffer, writeBufferOffset) .streamId(eventMetadata.getRequestStreamId()) .requestId(eventMetadata.getRequestId()); writeBufferOffset += ControlMessageRequestHeaderDescriptor.headerLength(); writeBuffer.putBytes(writeBufferOffset, buffer, messageOffset, messageLength); claimedControlMessageFragment.commit(); isHandled = true; } return isHandled; }