@Override public PushStream<T> sequential() { AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); Lock lock = new ReentrantLock(); updateNext((event) -> { try { lock.lock(); try { return eventStream.handleEvent(event); } finally { lock.unlock(); } } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }); return eventStream; }
@Override protected boolean begin() { if(closed.compareAndSet(BUILDING, STARTED)) { beginning(); previous.begin(); return true; } return false; }
@Override protected void upstreamClose(PushEvent< ? > close) { if (closed.get() != CLOSED) { close(close.nodata(), false); } previous.upstreamClose(close); }
@Override public PushStream<T> sequential() { AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); Lock lock = new ReentrantLock(); updateNext((event) -> { try { lock.lock(); try { return eventStream.handleEvent(event); } finally { lock.unlock(); } } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }); return eventStream; }
@Override protected boolean begin() { if(closed.compareAndSet(BUILDING, STARTED)) { beginning(); previous.begin(); return true; } return false; }
@Override protected void upstreamClose(PushEvent< ? > close) { if (closed.get() != CLOSED) { close(close.nodata(), false); } previous.upstreamClose(close); }
@Override public PushStream<T> sequential() { AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); Lock lock = new ReentrantLock(); updateNext((event) -> { try { lock.lock(); try { return eventStream.handleEvent(event); } finally { lock.unlock(); } } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }); return eventStream; }
@Override protected boolean begin() { if(closed.compareAndSet(BUILDING, STARTED)) { beginning(); previous.begin(); return true; } return false; }
@Override protected void upstreamClose(PushEvent< ? > close) { if (closed.get() != CLOSED) { close(close.nodata(), false); } previous.upstreamClose(close); }
@Override public PushStream<T> skip(long n) { if (n < 0) { throw new IllegalArgumentException( "The number to skip must be greater than or equal to zero"); } AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); AtomicLong counter = new AtomicLong(n); updateNext(event -> { try { if (!event.isTerminal()) { if (counter.get() > 0 && counter.decrementAndGet() >= 0) { return CONTINUE; } else { return eventStream.handleEvent(event); } } else { return eventStream.handleEvent(event.nodata()); } } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }); return eventStream; }
@Override public PushStream<T> skip(long n) { if (n < 0) { throw new IllegalArgumentException( "The number to skip must be greater than or equal to zero"); } AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); AtomicLong counter = new AtomicLong(n); updateNext(event -> { try { if (!event.isTerminal()) { if (counter.get() > 0 && counter.decrementAndGet() >= 0) { return CONTINUE; } else { return eventStream.handleEvent(event); } } else { return eventStream.handleEvent(event.nodata()); } } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }); return eventStream; }
@Override public PushStream<T> skip(long n) { if (n < 0) { throw new IllegalArgumentException( "The number to skip must be greater than or equal to zero"); } AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); AtomicLong counter = new AtomicLong(n); updateNext(event -> { try { if (!event.isTerminal()) { if (counter.get() > 0 && counter.decrementAndGet() >= 0) { return CONTINUE; } else { return eventStream.handleEvent(event); } } else { return eventStream.handleEvent(event.nodata()); } } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }); return eventStream; }
@Override public PushStream<T> limit(long maxSize) { if(maxSize <= 0) { throw new IllegalArgumentException("The limit must be greater than zero"); } AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); AtomicLong counter = new AtomicLong(maxSize); updateNext(event -> { try { if (!event.isTerminal()) { long count = counter.decrementAndGet(); if (count > 0) { return eventStream.handleEvent(event); } else if (count == 0) { eventStream.handleEvent(event); } return ABORT; } else { return eventStream.handleEvent(event.nodata()); } } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }); return eventStream; }
@Override public PushStream<T> limit(long maxSize) { if(maxSize <= 0) { throw new IllegalArgumentException("The limit must be greater than zero"); } AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); AtomicLong counter = new AtomicLong(maxSize); updateNext(event -> { try { if (!event.isTerminal()) { long count = counter.decrementAndGet(); if (count > 0) { return eventStream.handleEvent(event); } else if (count == 0) { eventStream.handleEvent(event); } return ABORT; } else { return eventStream.handleEvent(event.nodata()); } } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }); return eventStream; }
@Override public PushStream<T> limit(long maxSize) { if(maxSize <= 0) { throw new IllegalArgumentException("The limit must be greater than zero"); } AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); AtomicLong counter = new AtomicLong(maxSize); updateNext(event -> { try { if (!event.isTerminal()) { long count = counter.decrementAndGet(); if (count > 0) { return eventStream.handleEvent(event); } else if (count == 0) { eventStream.handleEvent(event); } return ABORT; } else { return eventStream.handleEvent(event.nodata()); } } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }); return eventStream; }
AbstractPushStreamImpl<T>[] rsult = new AbstractPushStreamImpl[tests.length]; for(int i = 0; i < tests.length; i++) { rsult[i] = new IntermediatePushStreamImpl<>(psp, promiseFactory, this);
@Override public PushStream<T> sorted(Comparator< ? super T> comparator) { List<T> list = Collections.synchronizedList(new ArrayList<>()); AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); updateNext(event -> {
AbstractPushStreamImpl<T>[] rsult = new AbstractPushStreamImpl[tests.length]; for(int i = 0; i < tests.length; i++) { rsult[i] = new IntermediatePushStreamImpl<>(psp, promiseFactory, this);
@Override public PushStream<T> sorted(Comparator< ? super T> comparator) { List<T> list = Collections.synchronizedList(new ArrayList<>()); AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); updateNext(event -> {
@Override public PushStream<T> sorted(Comparator< ? super T> comparator) { List<T> list = Collections.synchronizedList(new ArrayList<>()); AbstractPushStreamImpl<T> eventStream = new IntermediatePushStreamImpl<>( psp, promiseFactory, this); updateNext(event -> {