@Override public void close() { close(PushEvent.close()); }
private void updateNext(PushEventConsumer<T> consumer) { if(!next.compareAndSet(null, consumer)) { throw new IllegalStateException("This stream has already been chained"); } else if(closed.get() == CLOSED && next.compareAndSet(consumer, null)) { try { consumer.accept(PushEvent.close()); } catch (Exception e) { //TODO log e.printStackTrace(); } } }
private void updateNext(PushEventConsumer<T> consumer) { if(!next.compareAndSet(null, consumer)) { throw new IllegalStateException("This stream has already been chained"); } else if(closed.get() == CLOSED && next.compareAndSet(consumer, null)) { try { consumer.accept(PushEvent.close()); } catch (Exception e) { //TODO log e.printStackTrace(); } } }
private void updateNext(PushEventConsumer<T> consumer) { if(!next.compareAndSet(null, consumer)) { throw new IllegalStateException("This stream has already been chained"); } else if(closed.get() == CLOSED && next.compareAndSet(consumer, null)) { try { consumer.accept(PushEvent.close()); } catch (Exception e) { //TODO log e.printStackTrace(); } } }
@Override public void endOfStream() { enqueueEvent(PushEvent.close()); }
@Override public void endOfStream() { enqueueEvent(PushEvent.close()); }
@Override public void endOfStream() { enqueueEvent(PushEvent.close()); }
@Override public void close() { close(PushEvent.close()); }
@Override public void close() { close(PushEvent.close()); }
@Override public void close() { PushEvent<T> close = PushEvent.close(); if (close(close, true)) { upstreamClose(close); } }
@Override public void close() { PushEvent<T> close = PushEvent.close(); if (close(close, true)) { upstreamClose(close); } }
@Override public AutoCloseable open(PushEventConsumer< ? super T> pec) throws Exception { Deferred<Void> toResolve = null; synchronized (lock) { if (closed) { throw new IllegalStateException( "This PushEventConsumer is closed"); } toResolve = connectPromise; connectPromise = null; connected.add(pec); } if (toResolve != null) { toResolve.resolve(null); } return () -> { closeConsumer(pec, PushEvent.close()); }; }
@Override public void close() { PushEvent<T> close = PushEvent.close(); if (close(close, true)) { upstreamClose(close); } }
@Override public AutoCloseable open(PushEventConsumer< ? super T> pec) throws Exception { Deferred<Void> toResolve = null; synchronized (lock) { if (closed) { throw new IllegalStateException( "This PushEventConsumer is closed"); } toResolve = connectPromise; connectPromise = null; connected.add(pec); } if (toResolve != null) { toResolve.resolve(null); } return () -> { closeConsumer(pec, PushEvent.close()); }; }
@Override public AutoCloseable open(PushEventConsumer< ? super T> pec) throws Exception { Deferred<Void> toResolve = null; synchronized (lock) { if (closed) { throw new IllegalStateException( "This PushEventConsumer is closed"); } toResolve = connectPromise; connectPromise = null; connected.add(pec); } if (toResolve != null) { toResolve.resolve(null); } return () -> { closeConsumer(pec, PushEvent.close()); }; }
try { if (eventStream.handleEvent(event) < 0) { PushEvent<T> close = PushEvent.close(); eventStream.close(close);
private long safePush(PushEventConsumer< ? super T> pec, PushEvent<T> event) { try { long backpressure = pec.accept(event) * 1000000; if (backpressure < 0 && !event.isTerminal()) { closeConsumer(pec, PushEvent.close()); return -1; } return event.isTerminal() ? -1 : backpressure; } catch (Exception e) { // TODO log? if (!event.isTerminal()) { closeConsumer(pec, PushEvent.error(e)); } return -1; } }
private long safePush(PushEventConsumer< ? super T> pec, PushEvent<T> event) { try { long backpressure = pec.accept(event) * 1000000; if (backpressure < 0 && !event.isTerminal()) { closeConsumer(pec, PushEvent.close()); return -1; } return event.isTerminal() ? -1 : backpressure; } catch (Exception e) { // TODO log? if (!event.isTerminal()) { closeConsumer(pec, PushEvent.error(e)); } return -1; } }
private long safePush(PushEventConsumer< ? super T> pec, PushEvent<T> event) { try { long backpressure = pec.accept(event) * 1000000; if (backpressure < 0 && !event.isTerminal()) { closeConsumer(pec, PushEvent.close()); return -1; } return event.isTerminal() ? -1 : backpressure; } catch (Exception e) { // TODO log? if (!event.isTerminal()) { closeConsumer(pec, PushEvent.error(e)); } return -1; } }