/*
* Copyright (c) 2022 PANTHEON.tech, s.r.o. 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.annotations.Beta;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.concurrent.TimeUnit;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.util.concurrent.FluentFutures;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceNotification;
/**
* A {@link BindingService} which allows its users to submit YANG-modeled top-level (YANG 1.1)
* {@link InstanceNotification}s for delivery. There are three methods of submission, following the patters from
* {@link java.util.concurrent.BlockingQueue}:
*
*
{@link #putNotification(InstanceNotification)}, which may block indefinitely if the implementation cannot
* allocate resources to accept the notification,
*
{@link #offerNotification(InstanceNotification)}, which does not block if face of resource starvation,
*
{@link #offerNotification(InstanceNotification, 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.
*/
@Beta
public interface InstanceNotificationPublishService extends BindingService {
/**
* Well-known value indicating that the binding-aware implementation is currently not able to accept a notification.
*/
@NonNull ListenableFuture