diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.logstream/src/org/osgi/util/pushstream/BufferBuilder.java')
-rw-r--r-- | bundles/org.eclipse.equinox.logstream/src/org/osgi/util/pushstream/BufferBuilder.java | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.logstream/src/org/osgi/util/pushstream/BufferBuilder.java b/bundles/org.eclipse.equinox.logstream/src/org/osgi/util/pushstream/BufferBuilder.java new file mode 100644 index 000000000..2aa6ec763 --- /dev/null +++ b/bundles/org.eclipse.equinox.logstream/src/org/osgi/util/pushstream/BufferBuilder.java @@ -0,0 +1,79 @@ +package org.osgi.util.pushstream; + +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.Executor; + +/** + * Create a buffered section of a Push-based stream + * + * @param <R> The type of object being built + * @param <T> The type of objects in the {@link PushEvent} + * @param <U> The type of the Queue used in the user specified buffer + */ +public interface BufferBuilder<R, T, U extends BlockingQueue<PushEvent<? extends T>>> { + + /** + * The BlockingQueue implementation to use as a buffer + * + * @param queue + * @return this builder + */ + BufferBuilder<R, T, U> withBuffer(U queue); + + /** + * Set the {@link QueuePolicy} of this Builder + * + * @param queuePolicy + * @return this builder + */ + BufferBuilder<R,T,U> withQueuePolicy(QueuePolicy<T,U> queuePolicy); + + /** + * Set the {@link QueuePolicy} of this Builder + * + * @param queuePolicyOption + * @return this builder + */ + BufferBuilder<R, T, U> withQueuePolicy(QueuePolicyOption queuePolicyOption); + + /** + * Set the {@link PushbackPolicy} of this builder + * + * @param pushbackPolicy + * @return this builder + */ + BufferBuilder<R, T, U> withPushbackPolicy(PushbackPolicy<T, U> pushbackPolicy); + + /** + * Set the {@link PushbackPolicy} of this builder + * + * @param pushbackPolicyOption + * @param time + * @return this builder + */ + BufferBuilder<R, T, U> withPushbackPolicy(PushbackPolicyOption pushbackPolicyOption, long time); + + /** + * Set the maximum permitted number of concurrent event deliveries allowed + * from this buffer + * + * @param parallelism + * @return this builder + */ + BufferBuilder<R, T, U> withParallelism(int parallelism); + + /** + * Set the {@link Executor} that should be used to deliver events from this + * buffer + * + * @param executor + * @return this builder + */ + BufferBuilder<R, T, U> withExecutor(Executor executor); + + /** + * @return the object being built + */ + R create(); + +} |