protected void updatePosition() { fragmentsConsumedMetric.getAndAddOrdered(fragmentCount); subscriberPosition.proposeMaxOrdered(position(newPartitionId, newPartitionOffset)); dataConsumed.signal(); }
protected void updatePosition() { fragmentsConsumedMetric.getAndAddOrdered(fragmentCount); subscriberPosition.proposeMaxOrdered(position(newPartitionId, newPartitionOffset)); dataConsumed.signal(); }
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; }
publisherPosition.proposeMaxOrdered(newPosition); signalSubsciptions();
publisherPosition.proposeMaxOrdered(newPosition); signalSubsciptions();
publisherPosition.proposeMaxOrdered(newPosition); signalSubsciptions();
publisherPosition.proposeMaxOrdered(newPosition); signalSubsciptions();
publisherPosition.proposeMaxOrdered(newPosition); signalSubsciptions();
publisherPosition.proposeMaxOrdered(newPosition); signalSubsciptions();
position.proposeMaxOrdered(position(partitionId, partitionOffset)); dataConsumed.signal();
position.proposeMaxOrdered(position(partitionId, partitionOffset)); dataConsumed.signal();