@Override protected long handleEvent(PushEvent< ? extends T> event) { // If we have already been soft closed, or hard closed then abort if (!softClose.compareAndSet(false, event.isTerminal()) || closed.get() == CLOSED) { return ABORT; } try { queuePolicy.doOffer(eventQueue, event); long backPressure = pushbackPolicy.pushback(eventQueue); if(backPressure < 0) { close(); return ABORT; } if(semaphore.tryAcquire()) { startWorker(); } return backPressure; } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }
@Override protected long handleEvent(PushEvent< ? extends T> event) { // If we have already been soft closed, or hard closed then abort if (!softClose.compareAndSet(false, event.isTerminal()) || closed.get() == CLOSED) { return ABORT; } try { queuePolicy.doOffer(eventQueue, event); long backPressure = pushbackPolicy.pushback(eventQueue); if(backPressure < 0) { close(); return ABORT; } if(semaphore.tryAcquire()) { startWorker(); } return backPressure; } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }
@Override protected long handleEvent(PushEvent< ? extends T> event) { // If we have already been soft closed, or hard closed then abort if (!softClose.compareAndSet(false, event.isTerminal()) || closed.get() == CLOSED) { return ABORT; } try { queuePolicy.doOffer(eventQueue, event); long backPressure = pushbackPolicy.pushback(eventQueue); if(backPressure < 0) { close(); return ABORT; } if(semaphore.tryAcquire()) { startWorker(); } return backPressure; } catch (Exception e) { close(PushEvent.error(e)); return ABORT; } }