X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-common-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fcommon%2Fapi%2Fdata%2FAsyncDataChangeListener.java;h=0bdaf7bf3766736aa76337a1e6e772e036ed0cb5;hp=49f07bc52b4f8aecefab507121d8d91984f1f8d3;hb=dfa2da6098a0c423c0a7bf45b7229931cea67f85;hpb=3ca2b85262ea5d9a8f638b03477c968549133232 diff --git a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncDataChangeListener.java b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncDataChangeListener.java index 49f07bc52b..0bdaf7bf37 100644 --- a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncDataChangeListener.java +++ b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncDataChangeListener.java @@ -11,13 +11,45 @@ import java.util.EventListener; import org.opendaylight.yangtools.concepts.Path; +/** + * Listener of data change events on particular subtree. + * + *

+ * User-supplied implementations of this listener interface MUST register via + * {@link AsyncDataBroker#registerDataChangeListener(LogicalDatastoreType, Path, AsyncDataChangeListener, AsyncDataBroker.DataChangeScope)} + * in order to start receiving data change events, which capture state changes + * in a subtree. + * + *

+ * Implementation Note: This interface is intended to be implemented + * by users of MD-SAL. + * + * @param

+ * Type of path (subtree identifier), which represents location in + * tree + * @param + * Type of data (payload), which represents data payload + */ public interface AsyncDataChangeListener

, D> extends EventListener { /** - * Note that this method may be invoked from a shared thread pool, so - * implementations SHOULD NOT perform CPU-intensive operations and they - * definitely MUST NOT invoke any potentially blocking operations. * - * @param change Data Change Event being delivered. + * Invoked when there is data change for the particular path, which was used to + * register this listener. + *

+ * This method may be also invoked during registration of the listener if + * there is any preexisting data in the conceptual data tree for supplied path. + * This initial event will contain all preexisting data as created. + * + *

+ * Note: This method may be invoked from a shared thread pool. + *

  • Implementations SHOULD NOT perform CPU-intensive operations on the calling thread. + *
  • Implementations MUST NOT block the calling thread - to do so could lead to deadlock + * scenarios. + * + *
    + * + * @param change + * Data Change Event being delivered. */ void onDataChanged(AsyncDataChangeEvent change); }