Interface DataTreeEventCallbackRegistrar

  • All Known Implementing Classes:
    DataTreeEventCallbackRegistrarImpl

    @Beta
    @NonNullByDefault
    public interface DataTreeEventCallbackRegistrar
    Service to register callbacks for data tree changes for a fixed instance.

    The current implementation assumes that the expected instance will eventually be added, updated or deleted; if that never happens in the first place, then an internal data structure could fill up and theoretically lead to OOM problems if you do not specify a timeout. Likewise, if DataTreeEventCallbackRegistrar.NextAction.CALL_AGAIN is used but no next event matching path ever occurs. In the "Full Sync Upgrade" scenario, for which this utility was originally created, this is not a problem, as we are sure the subsequent changes are about to happen (just out of originally expected order).

    Author:
    Josh original idea and design feedback, Michael Vorburger.ch API design and first implementation, Tom Pantelis review and feedback on concurrency issue in implementation
    • Method Summary

      All Methods Instance Methods Abstract Methods Default Methods 
      Modifier and Type Method Description
      default <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onAdd​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.Consumer<T> callback)  
      default <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onAdd​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.Consumer<T> callback, java.time.Duration timeoutDuration, java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)  
      <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onAdd​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.Function<T,​DataTreeEventCallbackRegistrar.NextAction> callback)  
      <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onAdd​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.Function<T,​DataTreeEventCallbackRegistrar.NextAction> callback, java.time.Duration timeoutDuration, java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)  
      default <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onAddOrUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.BiConsumer<@Nullable T,​T> callback)
      Call back when expected instance was added or updated, with NextAction support.
      default <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onAddOrUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.BiConsumer<@Nullable T,​T> callback, java.time.Duration timeoutDuration, java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)  
      <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onAddOrUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.BiFunction<@Nullable T,​T,​DataTreeEventCallbackRegistrar.NextAction> callback)
      Call back when expected instance was added or updated, with NextAction support.
      <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onAddOrUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.BiFunction<@Nullable T,​T,​DataTreeEventCallbackRegistrar.NextAction> callback, java.time.Duration timeoutDuration, java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)  
      default <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onRemove​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.Consumer<T> callback)  
      default <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onRemove​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.Consumer<T> callback, java.time.Duration timeoutDuration, java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)  
      <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onRemove​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.Function<T,​DataTreeEventCallbackRegistrar.NextAction> callback)  
      <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onRemove​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.Function<T,​DataTreeEventCallbackRegistrar.NextAction> callback, java.time.Duration timeoutDuration, java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)  
      default <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.BiConsumer<T,​T> callback)  
      default <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.BiConsumer<T,​T> callback, java.time.Duration timeoutDuration, java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)  
      <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.BiFunction<T,​T,​DataTreeEventCallbackRegistrar.NextAction> callback)  
      <T extends org.opendaylight.yangtools.yang.binding.DataObject>
      void
      onUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, java.util.function.BiFunction<T,​T,​DataTreeEventCallbackRegistrar.NextAction> callback, java.time.Duration timeoutDuration, java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)  
    • Method Detail

      • onAdd

        <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onAdd​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                  org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                  java.util.function.Function<T,​DataTreeEventCallbackRegistrar.NextAction> callback,
                                                                                  java.time.Duration timeoutDuration,
                                                                                  java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)
      • onAdd

        <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onAdd​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                  org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                  java.util.function.Function<T,​DataTreeEventCallbackRegistrar.NextAction> callback)
      • onAdd

        default <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onAdd​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                          org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                          java.util.function.Consumer<T> callback)
      • onAdd

        default <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onAdd​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                          org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                          java.util.function.Consumer<T> callback,
                                                                                          java.time.Duration timeoutDuration,
                                                                                          java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)
      • onUpdate

        <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                     org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                     java.util.function.BiFunction<T,​T,​DataTreeEventCallbackRegistrar.NextAction> callback,
                                                                                     java.time.Duration timeoutDuration,
                                                                                     java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)
      • onUpdate

        <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                     org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                     java.util.function.BiFunction<T,​T,​DataTreeEventCallbackRegistrar.NextAction> callback)
      • onUpdate

        default <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                             org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                             java.util.function.BiConsumer<T,​T> callback)
      • onUpdate

        default <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                             org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                             java.util.function.BiConsumer<T,​T> callback,
                                                                                             java.time.Duration timeoutDuration,
                                                                                             java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)
      • onAddOrUpdate

        <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onAddOrUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                          org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                          java.util.function.BiFunction<@Nullable T,​T,​DataTreeEventCallbackRegistrar.NextAction> callback,
                                                                                          java.time.Duration timeoutDuration,
                                                                                          java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)
      • onAddOrUpdate

        <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onAddOrUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                          org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                          java.util.function.BiFunction<@Nullable T,​T,​DataTreeEventCallbackRegistrar.NextAction> callback)
        Call back when expected instance was added or updated, with NextAction support.
        Type Parameters:
        T - DataObject subclass
        Parameters:
        store - the expected data store
        path - the path to watch for changes on
        callback - the callback as BiFunction, where the first argument is the data before the update or null in case of an add, the second argument is the data after the update (or add; never null), and the returned value determines whether to keep listening for changes or not anymore.
      • onAddOrUpdate

        default <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onAddOrUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                                  org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                                  java.util.function.BiConsumer<@Nullable T,​T> callback)
        Call back when expected instance was added or updated, with NextAction support.
        Type Parameters:
        T - DataObject subclass
        Parameters:
        store - the expected data store
        path - the path to watch for changes on
        callback - the callback as BiFunction, where the first argument is the data before the update or null in case of an add, the second argument is the data after the update (or add; never null), and the returned value determines whether to keep listening for changes or not anymore.
      • onAddOrUpdate

        default <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onAddOrUpdate​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                                  org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                                  java.util.function.BiConsumer<@Nullable T,​T> callback,
                                                                                                  java.time.Duration timeoutDuration,
                                                                                                  java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)
      • onRemove

        <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onRemove​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                     org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                     java.util.function.Function<T,​DataTreeEventCallbackRegistrar.NextAction> callback,
                                                                                     java.time.Duration timeoutDuration,
                                                                                     java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)
      • onRemove

        <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onRemove​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                     org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                     java.util.function.Function<T,​DataTreeEventCallbackRegistrar.NextAction> callback)
      • onRemove

        default <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onRemove​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                             org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                             java.util.function.Consumer<T> callback)
      • onRemove

        default <T extends org.opendaylight.yangtools.yang.binding.DataObject> void onRemove​(org.opendaylight.mdsal.common.api.LogicalDatastoreType store,
                                                                                             org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
                                                                                             java.util.function.Consumer<T> callback,
                                                                                             java.time.Duration timeoutDuration,
                                                                                             java.util.function.Consumer<org.opendaylight.mdsal.binding.api.DataTreeIdentifier<T>> timedOutCallback)