@Override public boolean hasAvailable() { return getLimit() > getPosition(); }
@Override public int poll(int maxCount) { return subscription.poll(fragmentHandler, maxCount); } }
protected Subscription findSubscriptionByName(String subscriptionName) { Subscription subscription = null; if (!isClosed) { for (int i = 0; i < subscriptions.length; i++) { if (subscriptions[i].getName().equals(subscriptionName)) { subscription = subscriptions[i]; break; } } } return subscription; }
public long getCurrentAppenderPosition() { return writeBufferSubscription.getPosition(); } }
/** * Read fragments from the buffer and invoke the given handler for each fragment. Consume the * fragments (i.e. update the subscription position) after all fragments are handled. * * <p>Note that the handler is not aware of fragment batches. * * @return the amount of read fragments */ public int poll(FragmentHandler frgHandler, int maxNumOfFragments) { int fragmentsRead = 0; if (!isClosed) { final long currentPosition = position.get(); final long limit = getLimit(); if (limit > currentPosition) { final int partitionId = partitionId(currentPosition); final int partitionOffset = partitionOffset(currentPosition); final LogBufferPartition partition = logBuffer.getPartition(partitionId); fragmentsRead = pollFragments( partition, frgHandler, partitionId, partitionOffset, maxNumOfFragments, limit, false); } } return fragmentsRead; }
private void peekBlock() { if (writeBufferSubscription.peekBlock(blockPeek, maxAppendBlockSize, true) > 0) { peekedBlockHandler.run(); } else { actor.yield(); } }
@Override public boolean hasAvailable() { return subscription.hasAvailable(); }
private void signalSubsciptions() { final Subscription[] subscriptions = this.subscriptions; for (int i = 0; i < subscriptions.length; i++) { subscriptions[i].getActorConditions().signalConsumers(); } }
@Override public int poll() { return subscription.peekAndConsume(messageHandler, Integer.MAX_VALUE); }
protected Subscription newSubscription( final int subscriptionId, final String subscriptionName, ActorCondition onConsumption) { final AtomicPosition position = new AtomicPosition(); position.set(position(logBuffer.getActivePartitionIdVolatile(), 0)); final AtomicPosition limit = determineLimit(subscriptionId); final Metric fragmentsRead = metricsManager .newMetric("buffer_fragments_read") .type("counter") .label("subscription", subscriptionName) .label("buffer", getName()) .create(); return new Subscription( position, limit, subscriptionId, subscriptionName, onConsumption, logBuffer, fragmentsRead); }
public long getCurrentAppenderPosition() { return writeBufferSubscription.getPosition(); } }
final long limit = getLimit(); pollFragments( partition, frgHandler,
private void peekBlock() { if (writeBufferSubscription.peekBlock(blockPeek, maxAppendBlockSize, true) > 0) { peekedBlockHandler.run(); } else { actor.yield(); } }
@Override public boolean hasAvailable() { return subscription.hasAvailable(); }
private void signalSubsciptions() { final Subscription[] subscriptions = this.subscriptions; for (int i = 0; i < subscriptions.length; i++) { subscriptions[i].getActorConditions().signalConsumers(); } }
@Override public int poll() { return subscription.peekAndConsume(messageHandler, Integer.MAX_VALUE); }
protected Subscription newSubscription( final int subscriptionId, final String subscriptionName, ActorCondition onConsumption) { final AtomicPosition position = new AtomicPosition(); position.set(position(logBuffer.getActivePartitionIdVolatile(), 0)); final AtomicPosition limit = determineLimit(subscriptionId); final Metric fragmentsRead = metricsManager .newMetric("buffer_fragments_read") .type("counter") .label("subscription", subscriptionName) .label("buffer", getName()) .create(); return new Subscription( position, limit, subscriptionId, subscriptionName, onConsumption, logBuffer, fragmentsRead); }
@Override public boolean hasAvailable() { return getLimit() > getPosition(); }