/*
* Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.mdsal.binding.api;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.concurrent.TimeUnit;
import org.opendaylight.yangtools.yang.binding.Notification;
/**
* A {@link NotificationService} which also allows its users to
* submit YANG-modeled notifications for delivery. There are three
* methods of submission, following the patters from {@link java.util.concurrent.BlockingQueue}:
* - {@link #putNotification(Notification)}, which may block indefinitely
* if the implementation cannot allocate resources to accept the notification,
* - {@link #offerNotification(Notification)}, which does not block if face
* of resource starvation,
* - {@link #offerNotification(Notification, int, TimeUnit)}, which may block
* for specified time if resources are thin.
*
*
* The actual delivery to listeners is asynchronous and implementation-specific.
* Users of this interface should not make any assumptions as to whether the
* notification has or has not been seen.
*/
public interface NotificationPublishService extends BindingService {
/**
* Well-known value indicating that the binding-aware implementation is currently not
* able to accept a notification.
*/
ListenableFuture