diff options
Diffstat (limited to 'bundles/org.eclipse.equinox.logstream/src/org/osgi/util/pushstream/IntermediatePushStreamImpl.java')
-rw-r--r-- | bundles/org.eclipse.equinox.logstream/src/org/osgi/util/pushstream/IntermediatePushStreamImpl.java | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.logstream/src/org/osgi/util/pushstream/IntermediatePushStreamImpl.java b/bundles/org.eclipse.equinox.logstream/src/org/osgi/util/pushstream/IntermediatePushStreamImpl.java new file mode 100644 index 000000000..3a4da2fd9 --- /dev/null +++ b/bundles/org.eclipse.equinox.logstream/src/org/osgi/util/pushstream/IntermediatePushStreamImpl.java @@ -0,0 +1,35 @@ +package org.osgi.util.pushstream; + +import static org.osgi.util.pushstream.AbstractPushStreamImpl.State.*; + +import java.util.concurrent.Executor; +import java.util.concurrent.ScheduledExecutorService; + +class IntermediatePushStreamImpl<T> extends AbstractPushStreamImpl<T> + implements PushStream<T> { + + private final AbstractPushStreamImpl< ? > previous; + + IntermediatePushStreamImpl(PushStreamProvider psp, + Executor executor, ScheduledExecutorService scheduler, + AbstractPushStreamImpl< ? > previous) { + super(psp, executor, scheduler); + this.previous = previous; + } + + @Override + protected boolean begin() { + if(closed.compareAndSet(BUILDING, STARTED)) { + beginning(); + previous.begin(); + return true; + } + return false; + } + + protected void beginning() { + // The base implementation has nothing to do, but + // this method is used in windowing + } + +} |