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
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static class
DataTreeEventCallbackRegistrar.NextAction
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default <T extends org.opendaylight.yangtools.yang.binding.DataObject>
voidonAdd(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>
voidonAdd(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>
voidonAdd(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>
voidonAdd(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>
voidonAddOrUpdate(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>
voidonAddOrUpdate(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>
voidonAddOrUpdate(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>
voidonAddOrUpdate(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>
voidonRemove(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>
voidonRemove(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>
voidonRemove(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>
voidonRemove(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>
voidonUpdate(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>
voidonUpdate(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>
voidonUpdate(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>
voidonUpdate(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 storepath
- the path to watch for changes oncallback
- the callback asBiFunction
, 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 storepath
- the path to watch for changes oncallback
- the callback asBiFunction
, 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)
-
-