logAppender.appendFrame(partition, activePartitionId, msg, start, length, streamId); } else { final String exceptionMessage =
logAppender.claim( partition, activePartitionId, claim, length, streamId, onClaimComplete); } else {
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; }
final LogBufferAppender logAppender = new LogBufferAppender();
final LogBufferAppender logAppender = new LogBufferAppender();
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; }
logAppender.claim( partition, activePartitionId, claim, length, streamId, onClaimComplete); } else {
logAppender.appendFrame(partition, activePartitionId, msg, start, length, streamId); } else { final String exceptionMessage =
@SuppressWarnings("restriction") public int claim( final LogBufferPartition partition, final int activePartitionId, final ClaimedFragment claim, final int length, final int streamId, Runnable onComplete) { final int partitionSize = partition.getPartitionSize(); final int framedMessageLength = framedLength(length); final int alignedFrameLength = alignedLength(framedMessageLength); // 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(); // write negative length field buffer.putIntOrdered(lengthOffset(frameOffset), -framedMessageLength); UNSAFE.storeFence(); buffer.putShort(typeOffset(frameOffset), TYPE_MESSAGE); buffer.putInt(streamIdOffset(frameOffset), streamId); claim.wrap(buffer, frameOffset, framedMessageLength, onComplete); // Do not commit the message } else { newTail = onEndOfPartition(partition, frameOffset); } return newTail; }
logAppender.claim( partition, activePartitionId, batch, fragmentCount, batchLength, onClaimComplete); } else {
@SuppressWarnings("restriction") public int claim( final LogBufferPartition partition, final int activePartitionId, final ClaimedFragment claim, final int length, final int streamId, Runnable onComplete) { final int partitionSize = partition.getPartitionSize(); final int framedMessageLength = framedLength(length); final int alignedFrameLength = alignedLength(framedMessageLength); // 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(); // write negative length field buffer.putIntOrdered(lengthOffset(frameOffset), -framedMessageLength); UNSAFE.storeFence(); buffer.putShort(typeOffset(frameOffset), TYPE_MESSAGE); buffer.putInt(streamIdOffset(frameOffset), streamId); claim.wrap(buffer, frameOffset, framedMessageLength, onComplete); // Do not commit the message } else { newTail = onEndOfPartition(partition, frameOffset); } return newTail; }
logAppender.claim( partition, activePartitionId, batch, fragmentCount, batchLength, onClaimComplete); } else {
@SuppressWarnings("restriction") public int appendFrame( final LogBufferPartition partition, final int activePartitionId, final DirectBuffer msg, final int start, final int length, final int streamId) { final int partitionSize = partition.getPartitionSize(); final int framedLength = framedLength(length); final int alignedFrameLength = alignedLength(framedLength); // 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(); // write negative length field buffer.putIntOrdered(lengthOffset(frameOffset), -framedLength); UNSAFE.storeFence(); buffer.putShort(typeOffset(frameOffset), TYPE_MESSAGE); buffer.putInt(streamIdOffset(frameOffset), streamId); buffer.putBytes(messageOffset(frameOffset), msg, start, length); // commit the message buffer.putIntOrdered(lengthOffset(frameOffset), framedLength); } else { newTail = onEndOfPartition(partition, frameOffset); } return newTail; }
@SuppressWarnings("restriction") public int appendFrame( final LogBufferPartition partition, final int activePartitionId, final DirectBuffer msg, final int start, final int length, final int streamId) { final int partitionSize = partition.getPartitionSize(); final int framedLength = framedLength(length); final int alignedFrameLength = alignedLength(framedLength); // 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(); // write negative length field buffer.putIntOrdered(lengthOffset(frameOffset), -framedLength); UNSAFE.storeFence(); buffer.putShort(typeOffset(frameOffset), TYPE_MESSAGE); buffer.putInt(streamIdOffset(frameOffset), streamId); buffer.putBytes(messageOffset(frameOffset), msg, start, length); // commit the message buffer.putIntOrdered(lengthOffset(frameOffset), framedLength); } else { newTail = onEndOfPartition(partition, frameOffset); } return newTail; }