public abstract class ForwardingDOMNotificationPublishService extends com.google.common.collect.ForwardingObject implements DOMNotificationPublishService
DOMNotificationPublishService
which forwards
all requests to a delegate instance.REJECTED
Constructor and Description |
---|
ForwardingDOMNotificationPublishService() |
Modifier and Type | Method and Description |
---|---|
protected abstract DOMNotificationPublishService |
delegate() |
com.google.common.util.concurrent.ListenableFuture<? extends Object> |
offerNotification(DOMNotification notification)
Attempt to publish a notification.
|
com.google.common.util.concurrent.ListenableFuture<? extends Object> |
offerNotification(DOMNotification notification,
long timeout,
TimeUnit unit)
Attempt to publish a notification.
|
com.google.common.util.concurrent.ListenableFuture<? extends Object> |
putNotification(DOMNotification notification)
Publish a notification.
|
public ForwardingDOMNotificationPublishService()
protected abstract DOMNotificationPublishService delegate()
delegate
in class com.google.common.collect.ForwardingObject
public com.google.common.util.concurrent.ListenableFuture<? extends Object> putNotification(DOMNotification notification) throws InterruptedException
DOMNotificationPublishService
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.
putNotification
in interface DOMNotificationPublishService
notification
- Notification to be published.InterruptedException
- if interrupted while waitingpublic com.google.common.util.concurrent.ListenableFuture<? extends Object> offerNotification(DOMNotification notification)
DOMNotificationPublishService
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
DOMNotificationPublishService.putNotification(DOMNotification)
, this method is guaranteed not to block if the
underlying implementation encounters contention.offerNotification
in interface DOMNotificationPublishService
notification
- Notification to be published.DOMNotificationPublishService.REJECTED
if
resource constraints prevent the implementation from accepting the notification for
delivery.public com.google.common.util.concurrent.ListenableFuture<? extends Object> offerNotification(DOMNotification notification, long timeout, TimeUnit unit) throws InterruptedException
DOMNotificationPublishService
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
DOMNotificationPublishService.putNotification(DOMNotification)
, this method is guaranteed to block more than the
specified timeout.offerNotification
in interface DOMNotificationPublishService
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 parameterDOMNotificationPublishService.REJECTED
if
resource constraints prevent the implementation from accepting the notification for
delivery.InterruptedException
- if interrupted while waitingCopyright © 2019 OpenDaylight. All rights reserved.