public DataTransportPoller() { byteBuffer = NetworkUtil.allocateDirectAlignedAndPadded( Configuration.MAX_UDP_PAYLOAD_LENGTH, CACHE_LINE_LENGTH * 2); unsafeBuffer = new UnsafeBuffer(byteBuffer); dataMessage = new DataHeaderFlyweight(unsafeBuffer); setupMessage = new SetupFlyweight(unsafeBuffer); rttMeasurement = new RttMeasurementFlyweight(unsafeBuffer); }
/** * Dump the contents of a segment file to a {@link PrintStream}. * * @param out for the dumped contents. * @param messageDumpLimit for the number of bytes per message fragment to dump. * @param buffer the wraps the segment file. */ public static void dumpSegment(final PrintStream out, final int messageDumpLimit, final UnsafeBuffer buffer) { final DataHeaderFlyweight dataHeaderFlyweight = new DataHeaderFlyweight(); final int length = buffer.capacity(); int offset = 0; while (offset < length) { dataHeaderFlyweight.wrap(buffer, offset, length - offset); out.println(offset + ": " + dataHeaderFlyweight.toString()); final int frameLength = dataHeaderFlyweight.frameLength(); if (frameLength < DataHeaderFlyweight.HEADER_LENGTH) { break; } final int limit = min(frameLength - HEADER_LENGTH, messageDumpLimit); out.println(LogInspector.formatBytes(buffer, offset + HEADER_LENGTH, limit)); offset += BitUtil.align(frameLength, FrameDescriptor.FRAME_ALIGNMENT); } } }
public NetworkPublicationThreadLocals() { final ByteBuffer byteBuffer = BufferUtil.allocateDirectAligned(192, BitUtil.CACHE_LINE_LENGTH); byteBuffer.limit(DataHeaderFlyweight.HEADER_LENGTH); heartbeatBuffer = byteBuffer.slice(); dataHeader = new DataHeaderFlyweight(heartbeatBuffer); byteBuffer.limit(64 + SetupFlyweight.HEADER_LENGTH).position(64); setupBuffer = byteBuffer.slice(); setupHeader = new SetupFlyweight(setupBuffer); byteBuffer.limit(128 + RttMeasurementFlyweight.HEADER_LENGTH).position(128); rttMeasurementBuffer = byteBuffer.slice(); rttMeasurementHeader = new RttMeasurementFlyweight(rttMeasurementBuffer); dataHeader .version(HeaderFlyweight.CURRENT_VERSION) .flags((byte)DataHeaderFlyweight.BEGIN_AND_END_FLAGS) .headerType(HeaderFlyweight.HDR_TYPE_DATA) .frameLength(0); setupHeader .version(HeaderFlyweight.CURRENT_VERSION) .headerType(HeaderFlyweight.HDR_TYPE_SETUP) .frameLength(SetupFlyweight.HEADER_LENGTH); rttMeasurementHeader .version(HeaderFlyweight.CURRENT_VERSION) .headerType(HeaderFlyweight.HDR_TYPE_RTTM) .frameLength(RttMeasurementFlyweight.HEADER_LENGTH); }
private void createSegmentFile(final long newRecordingId) throws IOException { final File segmentFile = new File(archiveDir, segmentFileName(newRecordingId, 0)); try (FileChannel log = FileChannel.open(segmentFile.toPath(), READ, WRITE, CREATE)) { final ByteBuffer bb = ByteBuffer.allocateDirect(HEADER_LENGTH); final DataHeaderFlyweight flyweight = new DataHeaderFlyweight(bb); flyweight.frameLength(PAGE_SIZE - HEADER_LENGTH); log.write(bb); bb.clear(); flyweight.frameLength(128); log.write(bb, PAGE_SIZE - HEADER_LENGTH); bb.clear(); flyweight.frameLength(0); log.write(bb, PAGE_SIZE - HEADER_LENGTH + 128); } } }
final DataHeaderFlyweight flyweight = new DataHeaderFlyweight(bb); flyweight.frameLength(1024); log.write(bb);
@Before public void before() throws Exception { when(mockPosition.getWeak()).then((invocation) -> positionLong); when(mockPosition.get()).then((invocation) -> positionLong); doAnswer( (invocation) -> { positionLong = invocation.getArgument(0); return null; }) .when(mockPosition).setOrdered(anyLong()); termFile = File.createTempFile("test.rec", "sourceIdentity"); mockLogBufferChannel = FileChannel.open(termFile.toPath(), CREATE, READ, WRITE); mockLogBufferMapped = new UnsafeBuffer( mockLogBufferChannel.map(FileChannel.MapMode.READ_WRITE, 0, TERM_BUFFER_LENGTH)); final DataHeaderFlyweight headerFlyweight = new DataHeaderFlyweight(); headerFlyweight.wrap(mockLogBufferMapped, TERM_OFFSET, DataHeaderFlyweight.HEADER_LENGTH); headerFlyweight .termOffset(TERM_OFFSET) .sessionId(SESSION_ID) .streamId(STREAM_ID) .headerType(DataHeaderFlyweight.HDR_TYPE_DATA) .frameLength(RECORDED_BLOCK_LENGTH); context = new Archive.Context() .segmentFileLength(SEGMENT_LENGTH) .archiveDir(archiveDir) .catalog(mockCatalog) .epochClock(epochClock); }
final DataHeaderFlyweight flyweight = new DataHeaderFlyweight(bb); flyweight.frameLength((int)expectedLastFrame); log.write(bb);
final DataHeaderFlyweight headerFwt = new DataHeaderFlyweight(); final Header header = new Header(INITIAL_TERM_ID, Integer.numberOfLeadingZeros(TERM_BUFFER_LENGTH)); header.buffer(buffer);
final DataHeaderFlyweight headerFwt = new DataHeaderFlyweight(); final Header header = new Header(INITIAL_TERM_ID, Integer.numberOfLeadingZeros(TERM_BUFFER_LENGTH)); header.buffer(buffer);
public DataTransportPoller() { byteBuffer = NetworkUtil.allocateDirectAlignedAndPadded( Configuration.MAX_UDP_PAYLOAD_LENGTH, CACHE_LINE_LENGTH * 2); unsafeBuffer = new UnsafeBuffer(byteBuffer); dataMessage = new DataHeaderFlyweight(unsafeBuffer); setupMessage = new SetupFlyweight(unsafeBuffer); rttMeasurement = new RttMeasurementFlyweight(unsafeBuffer); }
public DataTransportPoller() { byteBuffer = NetworkUtil.allocateDirectAlignedAndPadded( Configuration.MAX_UDP_PAYLOAD_LENGTH, CACHE_LINE_LENGTH * 2); unsafeBuffer = new UnsafeBuffer(byteBuffer); dataMessage = new DataHeaderFlyweight(unsafeBuffer); setupMessage = new SetupFlyweight(unsafeBuffer); rttMeasurement = new RttMeasurementFlyweight(unsafeBuffer); }
public NetworkPublicationThreadLocals() { final ByteBuffer byteBuffer = BufferUtil.allocateDirectAligned(192, BitUtil.CACHE_LINE_LENGTH); byteBuffer.limit(DataHeaderFlyweight.HEADER_LENGTH); heartbeatBuffer = byteBuffer.slice(); dataHeader = new DataHeaderFlyweight(heartbeatBuffer); byteBuffer.limit(64 + SetupFlyweight.HEADER_LENGTH).position(64); setupBuffer = byteBuffer.slice(); setupHeader = new SetupFlyweight(setupBuffer); byteBuffer.limit(128 + RttMeasurementFlyweight.HEADER_LENGTH).position(128); rttMeasurementBuffer = byteBuffer.slice(); rttMeasurementHeader = new RttMeasurementFlyweight(rttMeasurementBuffer); dataHeader .version(HeaderFlyweight.CURRENT_VERSION) .flags((byte)DataHeaderFlyweight.BEGIN_AND_END_FLAGS) .headerType(HeaderFlyweight.HDR_TYPE_DATA) .frameLength(0); setupHeader .version(HeaderFlyweight.CURRENT_VERSION) .headerType(HeaderFlyweight.HDR_TYPE_SETUP) .frameLength(SetupFlyweight.HEADER_LENGTH); rttMeasurementHeader .version(HeaderFlyweight.CURRENT_VERSION) .headerType(HeaderFlyweight.HDR_TYPE_RTTM) .frameLength(RttMeasurementFlyweight.HEADER_LENGTH); }
public NetworkPublicationThreadLocals() { final ByteBuffer byteBuffer = BufferUtil.allocateDirectAligned(192, BitUtil.CACHE_LINE_LENGTH); byteBuffer.limit(DataHeaderFlyweight.HEADER_LENGTH); heartbeatBuffer = byteBuffer.slice(); dataHeader = new DataHeaderFlyweight(heartbeatBuffer); byteBuffer.limit(64 + SetupFlyweight.HEADER_LENGTH).position(64); setupBuffer = byteBuffer.slice(); setupHeader = new SetupFlyweight(setupBuffer); byteBuffer.limit(128 + RttMeasurementFlyweight.HEADER_LENGTH).position(128); rttMeasurementBuffer = byteBuffer.slice(); rttMeasurementHeader = new RttMeasurementFlyweight(rttMeasurementBuffer); dataHeader .version(HeaderFlyweight.CURRENT_VERSION) .flags((byte)DataHeaderFlyweight.BEGIN_AND_END_FLAGS) .headerType(HeaderFlyweight.HDR_TYPE_DATA) .frameLength(0); setupHeader .version(HeaderFlyweight.CURRENT_VERSION) .headerType(HeaderFlyweight.HDR_TYPE_SETUP) .frameLength(SetupFlyweight.HEADER_LENGTH); rttMeasurementHeader .version(HeaderFlyweight.CURRENT_VERSION) .headerType(HeaderFlyweight.HDR_TYPE_RTTM) .frameLength(RttMeasurementFlyweight.HEADER_LENGTH); }