public long getCurrentAppenderPosition() { return writeBufferSubscription.getPosition(); } }
public long getCurrentAppenderPosition() { return writeBufferSubscription.getPosition(); } }
@Override public boolean hasAvailable() { return getLimit() > getPosition(); }
@Override public boolean hasAvailable() { return getLimit() > getPosition(); }
public int updatePublisherLimit() { int isUpdated = 0; if (!isClosed) { long lastSubscriberPosition = -1; if (subscriptions.length > 0) { lastSubscriberPosition = subscriptions[subscriptions.length - 1].getPosition(); if (MODE_PUB_SUB == mode && subscriptions.length > 1) { for (int i = 0; i < subscriptions.length - 1; i++) { lastSubscriberPosition = Math.min(lastSubscriberPosition, subscriptions[i].getPosition()); } } } else { lastSubscriberPosition = Math.max(0, publisherLimit.get() - logWindowLength); } int partitionId = partitionId(lastSubscriberPosition); int partitionOffset = partitionOffset(lastSubscriberPosition) + logWindowLength; if (partitionOffset >= logBuffer.getPartitionSize()) { ++partitionId; partitionOffset = logWindowLength; } final long proposedPublisherLimit = position(partitionId, partitionOffset); if (publisherLimit.proposeMaxOrdered(proposedPublisherLimit)) { isUpdated = 1; } } return isUpdated; }
public int updatePublisherLimit() { int isUpdated = 0; if (!isClosed) { long lastSubscriberPosition = -1; if (subscriptions.length > 0) { lastSubscriberPosition = subscriptions[subscriptions.length - 1].getPosition(); if (MODE_PUB_SUB == mode && subscriptions.length > 1) { for (int i = 0; i < subscriptions.length - 1; i++) { lastSubscriberPosition = Math.min(lastSubscriberPosition, subscriptions[i].getPosition()); } } } else { lastSubscriberPosition = Math.max(0, publisherLimit.get() - logWindowLength); } int partitionId = partitionId(lastSubscriberPosition); int partitionOffset = partitionOffset(lastSubscriberPosition) + logWindowLength; if (partitionOffset >= logBuffer.getPartitionSize()) { ++partitionId; partitionOffset = logWindowLength; } final long proposedPublisherLimit = position(partitionId, partitionOffset); if (publisherLimit.proposeMaxOrdered(proposedPublisherLimit)) { isUpdated = 1; } } return isUpdated; }