public abstract class ForwardingDataBroker extends com.google.common.collect.ForwardingObject implements DataBroker
DataBroker
implementation which forwards all interface method
invocation to a delegate instance.Constructor and Description |
---|
ForwardingDataBroker() |
Modifier and Type | Method and Description |
---|---|
DataTreeProducer |
createProducer(Collection<DataTreeIdentifier<?>> subtrees)
Create a producer, which is able to access to a set of trees.
|
TransactionChain |
createTransactionChain(TransactionChainListener listener)
Create a new transaction chain.
|
protected abstract DataBroker |
delegate() |
ReadTransaction |
newReadOnlyTransaction()
Allocates a new read-only transaction which provides an immutable snapshot of the data tree.
|
WriteTransaction |
newWriteOnlyTransaction()
Allocates new write-only transaction based on latest state of data tree.
|
<T extends DataTreeListener> |
registerListener(T listener,
Collection<DataTreeIdentifier<?>> subtrees,
boolean allowRxMerges,
Collection<DataTreeProducer> producers)
Register a
DataTreeListener instance. |
@Nonnull protected abstract DataBroker delegate()
delegate
in class com.google.common.collect.ForwardingObject
public ReadTransaction newReadOnlyTransaction()
TransactionFactory
newReadOnlyTransaction
in interface TransactionFactory
public WriteTransaction newWriteOnlyTransaction()
TransactionFactory
Preconditions for mutation of data tree are captured from the snapshot of data tree state, when the transaction
is allocated. If data was changed during transaction in an incompatible way then the commit of this transaction
will fail. See WriteTransaction.commit()
for more details about conflicting and not-conflicting changes
and failure scenarios.
Since this transaction does not provide a view of the data it SHOULD BE used only by callers who are exclusive
writers (exporters of data) to the subtree they modify. This prevents optimistic lock failures as described in
WriteTransaction.commit()
.
Exclusivity of writers to particular subtree SHOULD BE enforced by external locking mechanism.
newWriteOnlyTransaction
in interface TransactionFactory
@Nonnull public <T extends DataTreeListener> org.opendaylight.yangtools.concepts.ListenerRegistration<T> registerListener(@Nonnull T listener, @Nonnull Collection<DataTreeIdentifier<?>> subtrees, boolean allowRxMerges, @Nonnull Collection<DataTreeProducer> producers) throws DataTreeLoopException
DataTreeService
DataTreeListener
instance. Once registered, the listener will start
receiving changes on the selected subtrees. If the listener cannot keep up with the rate of
changes, and allowRxMerges is set to true, this service is free to merge the changes, so that
a smaller number of them will be reported, possibly hiding some data transitions (like
flaps).
If the listener wants to write into any producer, that producer has to be mentioned in the call to this method. Those producers will be bound exclusively to the registration, so that accessing them outside of this listener's callback will trigger an error. Any producers mentioned must be idle, e.g. they may not have an open transaction at the time this method is invoked.
Each listener instance can be registered at most once. Implementations of this interface have to guarantee that the listener's methods will not be invoked concurrently from multiple threads.
registerListener
in interface DataTreeService
T
- listener typelistener
- DataTreeListener
that is being registeredsubtrees
- Conceptual subtree identifier of subtrees which should be monitored for
changes. May not be null or empty.allowRxMerges
- True if the backend may perform ingress state compression.producers
- DataTreeProducer
instances to bind to the listener.DataTreeLoopException
- if the registration of the listener to the specified subtrees
with specified producers would form a feedback looppublic DataTreeProducer createProducer(Collection<DataTreeIdentifier<?>> subtrees)
DataTreeProducerFactory
createProducer
in interface DataTreeProducerFactory
subtrees
- The collection of subtrees the resulting producer should have access to.DataTreeProducer
instance.public TransactionChain createTransactionChain(TransactionChainListener listener)
DataBroker
createTransactionChain
in interface DataBroker
listener
- Transaction chain event listenerCopyright © 2019 OpenDaylight. All rights reserved.