/** * Get the value of the MTU length used for this log. * * @param metadataBuffer containing the meta data. * @return the value of the MTU length used for this log. */ public static int mtuLength(final UnsafeBuffer metadataBuffer) { return metadataBuffer.getInt(LOG_MTU_LENGTH_OFFSET); }
/** * Get the value of the Term Length used for this log. * * @param metadataBuffer containing the meta data. * @return the value of the term length used for this log. */ public static int termLength(final UnsafeBuffer metadataBuffer) { return metadataBuffer.getInt(LOG_TERM_LENGTH_OFFSET); }
/** * Is the frame at data frame at the beginning of packet a heartbeat message? * * @param packet containing the data frame. * @param length of the data frame. * @return true if a heartbeat otherwise false. */ public static boolean isHeartbeat(final UnsafeBuffer packet, final int length) { return length == HEADER_LENGTH && packet.getInt(0) == 0; }
/** * Get the value of the initial Term id used for this log. * * @param metadataBuffer containing the meta data. * @return the value of the initial Term id used for this log. */ public static int initialTermId(final UnsafeBuffer metadataBuffer) { return metadataBuffer.getInt(LOG_INITIAL_TERM_ID_OFFSET); }
/** * Get the value of the page size used for this log. * * @param metadataBuffer containing the meta data. * @return the value of the page size used for this log. */ public static int pageSize(final UnsafeBuffer metadataBuffer) { return metadataBuffer.getInt(LOG_PAGE_SIZE_OFFSET); }
/** * Get the length of a frame from the header. * * @param buffer containing the frame. * @param termOffset at which a frame begins. * @return the value for the frame length. */ public static int frameLength(final UnsafeBuffer buffer, final int termOffset) { return buffer.getInt(termOffset, LITTLE_ENDIAN); }
public static int termOffset(final UnsafeBuffer termBuffer, final int frameOffset) { return termBuffer.getInt(frameOffset + TERM_OFFSET_FIELD_OFFSET, LITTLE_ENDIAN); }
public static int sessionId(final UnsafeBuffer termBuffer, final int frameOffset) { return termBuffer.getInt(frameOffset + SESSION_ID_FIELD_OFFSET, LITTLE_ENDIAN); }
public static int streamId(final UnsafeBuffer termBuffer, final int frameOffset) { return termBuffer.getInt(frameOffset + STREAM_ID_FIELD_OFFSET, LITTLE_ENDIAN); }
public static int termId(final UnsafeBuffer termBuffer, final int frameOffset) { return termBuffer.getInt(frameOffset + TERM_ID_FIELD_OFFSET, LITTLE_ENDIAN); }
public int versionWeak() { return buffer.getInt(versionFieldOffset); }
public static int descriptorLength(final UnsafeBuffer descriptorBuffer) { return descriptorBuffer.getInt(RecordingDescriptorHeaderDecoder.lengthEncodingOffset(), BYTE_ORDER); }
public RecordingSummary recordingSummary(final long recordingId, final RecordingSummary summary) { final int offset = recordingDescriptorOffset(recordingId) + RecordingDescriptorHeaderDecoder.BLOCK_LENGTH; summary.recordingId = recordingId; summary.startPosition = fieldAccessBuffer.getLong(offset + startPositionEncodingOffset(), BYTE_ORDER); summary.stopPosition = fieldAccessBuffer.getLong(offset + stopPositionEncodingOffset(), BYTE_ORDER); summary.initialTermId = fieldAccessBuffer.getInt(offset + initialTermIdEncodingOffset(), BYTE_ORDER); summary.segmentFileLength = fieldAccessBuffer.getInt(offset + segmentFileLengthEncodingOffset(), BYTE_ORDER); summary.termBufferLength = fieldAccessBuffer.getInt(offset + termBufferLengthEncodingOffset(), BYTE_ORDER); summary.mtuLength = fieldAccessBuffer.getInt(offset + mtuLengthEncodingOffset(), BYTE_ORDER); summary.streamId = fieldAccessBuffer.getInt(offset + streamIdEncodingOffset(), BYTE_ORDER); summary.sessionId = fieldAccessBuffer.getInt(offset + sessionIdEncodingOffset(), BYTE_ORDER); return summary; }
@Before public void setUp() { header.buffer(termBuffer); when(termBuffer.getInt(anyInt(), any(ByteOrder.class))).thenReturn(SESSION_ID); }
private void captureEntriesFromBuffer( final ByteBuffer byteBuffer, final UnsafeBuffer buffer, final ArrayList<Entry> entries) { for (int i = 0, length = byteBuffer.limit(); i < length; i += ENTRY_LENGTH) { final int entryType = buffer.getInt(i + ENTRY_TYPE_OFFSET); if (NULL_VALUE != entryType) { final Entry entry = new Entry( buffer.getLong(i + RECORDING_ID_OFFSET, LITTLE_ENDIAN), buffer.getLong(i + LEADERSHIP_TERM_ID_OFFSET, LITTLE_ENDIAN), buffer.getLong(i + TERM_BASE_LOG_POSITION_OFFSET, LITTLE_ENDIAN), buffer.getLong(i + LOG_POSITION_OFFSET, LITTLE_ENDIAN), buffer.getLong(i + TIMESTAMP_OFFSET, LITTLE_ENDIAN), buffer.getInt(i + SERVICE_ID_OFFSET, LITTLE_ENDIAN), entryType, nextEntryIndex); entries.add(entry); if (ENTRY_TYPE_TERM == entryType) { indexByLeadershipTermIdMap.put(entry.leadershipTermId, nextEntryIndex); } } ++nextEntryIndex; } }
final int cncVersion = cncMetaDataBuffer.getInt(CncFileDescriptor.cncVersionOffset(0));
private Answer<Object> verifySendDescriptor(final MutableLong counter) { return (invocation) -> { final UnsafeBuffer buffer = invocation.getArgument(1); recordingDescriptorDecoder.wrap( buffer, RecordingDescriptorHeaderDecoder.BLOCK_LENGTH, RecordingDescriptorDecoder.BLOCK_LENGTH, RecordingDescriptorDecoder.SCHEMA_VERSION); final int i = counter.intValue(); assertThat(recordingDescriptorDecoder.recordingId(), is(matchingRecordingIds[i])); counter.set(i + 1); return buffer.getInt(0); }; } }
private Answer<Object> verifySendDescriptor(final MutableLong counter) { return (invocation) -> { final UnsafeBuffer buffer = invocation.getArgument(1); recordingDescriptorDecoder.wrap( buffer, RecordingDescriptorHeaderDecoder.BLOCK_LENGTH, RecordingDescriptorDecoder.BLOCK_LENGTH, RecordingDescriptorDecoder.SCHEMA_VERSION); final int i = counter.intValue(); assertThat(recordingDescriptorDecoder.recordingId(), is(recordingIds[i])); counter.set(i + 1); return buffer.getInt(0); }; } }
private void validateRecordingFragment( final UnsafeBuffer buffer, final int offset, final int length, @SuppressWarnings("unused") final int frameType, @SuppressWarnings("unused") final byte flags, @SuppressWarnings("unused") final long reservedValue) { if (!FrameDescriptor.isPaddingFrame(buffer, offset - HEADER_LENGTH)) { final int expectedLength = messageLengths[messageCount] - HEADER_LENGTH; if (length != expectedLength) { fail("Message length=" + length + " expected=" + expectedLength + " messageCount=" + messageCount); } assertThat(buffer.getInt(offset), is(messageCount)); assertThat(buffer.getByte(offset + 4), is((byte)'z')); remaining -= BitUtil.align(messageLengths[messageCount], FrameDescriptor.FRAME_ALIGNMENT); messageCount++; } }
/** * Insert a packet of frames into the log at the appropriate termOffset as indicated by the term termOffset header. * <p> * If the packet has already been inserted then this is a noop. * * @param termBuffer into which the packet should be inserted. * @param termOffset in the term at which the packet should be inserted. * @param packet containing a sequence of frames. * @param length of the packet of frames in bytes. */ public static void insert( final UnsafeBuffer termBuffer, final int termOffset, final UnsafeBuffer packet, final int length) { if (0 == termBuffer.getInt(termOffset)) { termBuffer.putBytes(termOffset + HEADER_LENGTH, packet, HEADER_LENGTH, length - HEADER_LENGTH); termBuffer.putLong(termOffset + 24, packet.getLong(24)); termBuffer.putLong(termOffset + 16, packet.getLong(16)); termBuffer.putLong(termOffset + 8, packet.getLong(8)); termBuffer.putLongOrdered(termOffset, packet.getLong(0)); } } }