public int claim( final LogBufferPartition partition, final int activePartitionId, final ClaimedFragmentBatch batch, final int fragmentCount, final int batchLength, final Runnable onComplete) { final int partitionSize = partition.getPartitionSize(); // reserve enough space for frame alignment because each batch fragment must start on an aligned // position final int framedMessageLength = batchLength + fragmentCount * (HEADER_LENGTH + FRAME_ALIGNMENT) + FRAME_ALIGNMENT; final int alignedFrameLength = align(framedMessageLength, FRAME_ALIGNMENT); // move the tail of the partition final int frameOffset = partition.getAndAddTail(alignedFrameLength); int newTail = frameOffset + alignedFrameLength; if (newTail <= (partitionSize - HEADER_LENGTH)) { final UnsafeBuffer buffer = partition.getDataBuffer(); // all fragment data are written using the claimed batch batch.wrap(buffer, activePartitionId, frameOffset, alignedFrameLength, onComplete); } else { newTail = onEndOfPartition(partition, frameOffset); } return newTail; }
public int claim( final LogBufferPartition partition, final int activePartitionId, final ClaimedFragmentBatch batch, final int fragmentCount, final int batchLength, final Runnable onComplete) { final int partitionSize = partition.getPartitionSize(); // reserve enough space for frame alignment because each batch fragment must start on an aligned // position final int framedMessageLength = batchLength + fragmentCount * (HEADER_LENGTH + FRAME_ALIGNMENT) + FRAME_ALIGNMENT; final int alignedFrameLength = align(framedMessageLength, FRAME_ALIGNMENT); // move the tail of the partition final int frameOffset = partition.getAndAddTail(alignedFrameLength); int newTail = frameOffset + alignedFrameLength; if (newTail <= (partitionSize - HEADER_LENGTH)) { final UnsafeBuffer buffer = partition.getDataBuffer(); // all fragment data are written using the claimed batch batch.wrap(buffer, activePartitionId, frameOffset, alignedFrameLength, onComplete); } else { newTail = onEndOfPartition(partition, frameOffset); } return newTail; }