private void closeConsumer(PushEventConsumer< ? super T> pec, PushEvent<T> event) { boolean sendClose; synchronized (lock) { sendClose = connected.remove(pec); } if (sendClose) { doSend(pec, event); } }
private void closeConsumer(PushEventConsumer< ? super T> pec, PushEvent<T> event) { boolean sendClose; synchronized (lock) { sendClose = connected.remove(pec); } if (sendClose) { doSend(pec, event); } }
private void closeConsumer(PushEventConsumer< ? super T> pec, PushEvent<T> event) { boolean sendClose; synchronized (lock) { sendClose = connected.remove(pec); } if (sendClose) { doSend(pec, event); } }
private void close(PushEvent<T> event) { List<PushEventConsumer< ? super T>> toClose; Deferred<Void> toFail = null; synchronized (lock) { if(!closed) { closed = true; toClose = new ArrayList<>(connected); connected.clear(); queue.clear(); if(connectPromise != null) { toFail = connectPromise; connectPromise = null; } } else { toClose = emptyList(); } } toClose.stream().forEach(pec -> doSend(pec, event)); if (toFail != null) { toFail.resolveWith(closedConnectPromise()); } onClose.run(); }
private void close(PushEvent<T> event) { List<PushEventConsumer< ? super T>> toClose; Deferred<Void> toFail = null; synchronized (lock) { if(!closed) { closed = true; toClose = new ArrayList<>(connected); connected.clear(); queue.clear(); if(connectPromise != null) { toFail = connectPromise; connectPromise = null; } } else { toClose = emptyList(); } } toClose.stream().forEach(pec -> doSend(pec, event)); if (toFail != null) { toFail.resolveWith(closedConnectPromise()); } onClose.run(); }
private void close(PushEvent<T> event) { List<PushEventConsumer< ? super T>> toClose; Deferred<Void> toFail = null; synchronized (lock) { if(!closed) { closed = true; toClose = new ArrayList<>(connected); connected.clear(); queue.clear(); if(connectPromise != null) { toFail = connectPromise; connectPromise = null; } } else { toClose = emptyList(); } } toClose.stream().forEach(pec -> doSend(pec, event)); if (toFail != null) { toFail.resolveWith(closedConnectPromise()); } onClose.run(); }