private ListenableFuture<Void> publish(final long seq, final DOMNotification notification, final Collection<ListenerRegistration<? extends DOMNotificationListener>> subscribers) { final DOMNotificationRouterEvent event = disruptor.get(seq); final ListenableFuture<Void> future = event.initialize(notification, subscribers); disruptor.getRingBuffer().publish(seq); return future; }
@Override public boolean cancel(boolean mayInterruptIfRunning) { if (isDone()) { return false; } disruptor.get(cursor).resetState(); // the volatile write also ensures visibility of the resetState() in other threads cancelled = true; return true; }