DOMNotificationPublishService
instead@Deprecated public interface DOMNotificationPublishService extends DOMService
DOMService
which allows its user to send DOMNotification
s. It
provides two styles of initiating the notification delivery, similar to
BlockingQueue
:
- a put-style method which waits until the implementation can accept the notification
for delivery, and
- an offer-style method, which attempts to enqueue the notification, but allows
the caller to specify that it should never wait, or put an upper bound on how
long it is going to wait.Modifier and Type | Field and Description |
---|---|
static com.google.common.util.concurrent.ListenableFuture<Object> |
REJECTED
Deprecated.
Well-known value indicating that the implementation is currently not
able to accept a notification.
|
Modifier and Type | Method and Description |
---|---|
com.google.common.util.concurrent.ListenableFuture<?> |
offerNotification(DOMNotification notification)
Deprecated.
Attempt to publish a notification.
|
com.google.common.util.concurrent.ListenableFuture<?> |
offerNotification(DOMNotification notification,
long timeout,
TimeUnit unit)
Deprecated.
Attempt to publish a notification.
|
com.google.common.util.concurrent.ListenableFuture<?> |
putNotification(DOMNotification notification)
Deprecated.
Publish a notification.
|
static final com.google.common.util.concurrent.ListenableFuture<Object> REJECTED
@Nonnull com.google.common.util.concurrent.ListenableFuture<?> putNotification(@Nonnull DOMNotification notification) throws InterruptedException
ListenableFuture
which will complete once the notification has been delivered to all immediate
registrants. The type of the object resulting from the future is not defined
and implementations may use it to convey additional information related to the
publishing process.
Abstract subclasses can refine the return type as returning a promise of a
more specific type, e.g.:
public interface DeliveryStatus { int getListenerCount(); }
ListenableFuture<? extends DeliveryStatus> putNotification(DOMNotification notification);
Once the Future succeeds, the resulting object can be queried for traits using
instanceof, e.g:
// Can block when (for example) the implemention's ThreadPool queue is full
Object o = service.putNotification(notif).get();
if (o instanceof DeliveryStatus) {
DeliveryStatus ds = (DeliveryStatus)o;
LOG.debug("Notification was received by {} listeners", ds.getListenerCount(););
}
In case an implementation is running out of resources, it can block the calling thread until enough resources become available to accept the notification for processing, or it is interrupted.
Caution: completion here means that the implementation has completed processing of the notification. This does not mean that all existing registrants have seen the notification. Most importantly, the delivery process at other cluster nodes may have not begun yet.
notification
- Notification to be published.InterruptedException
- if interrupted while waitingNullPointerException
- if notification is null.@Nonnull com.google.common.util.concurrent.ListenableFuture<?> offerNotification(@Nonnull DOMNotification notification)
ListenableFuture
which will complete once the notification has been delivered to all immediate
registrants. The type of the object resulting from the future is not defined
and implementations may use it to convey additional information related to the
publishing process. Unlike putNotification(DOMNotification)
, this method
is guaranteed not to block if the underlying implementation encounters contention.notification
- Notification to be published.REJECTED
if resource constraints prevent
the implementation from accepting the notification for delivery.NullPointerException
- if notification is null.@Nonnull com.google.common.util.concurrent.ListenableFuture<?> offerNotification(@Nonnull DOMNotification notification, @Nonnegative long timeout, @Nonnull TimeUnit unit) throws InterruptedException
ListenableFuture
which will complete once the notification has been delivered to all immediate
registrants. The type of the object resulting from the future is not defined
and implementations may use it to convey additional information related to the
publishing process. Unlike putNotification(DOMNotification)
, this method
is guaranteed to block more than the specified timeout.notification
- Notification to be published.timeout
- how long to wait before giving up, in units of unitunit
- a TimeUnit determining how to interpret the timeout parameterREJECTED
if resource constraints prevent
the implementation from accepting the notification for delivery.InterruptedException
- if interrupted while waitingNullPointerException
- if notification or unit is null.IllegalArgumentException
- if timeout is negative.Copyright © 2019 OpenDaylight. All rights reserved.