@Beta public class ManagedNewTransactionRunnerImpl extends Object implements ManagedNewTransactionRunner
ManagedNewTransactionRunner
.Constructor and Description |
---|
ManagedNewTransactionRunnerImpl(org.opendaylight.controller.md.sal.binding.api.DataBroker broker) |
Modifier and Type | Method and Description |
---|---|
<E extends Exception,R> |
applyWithNewReadWriteTransactionAndSubmit(org.opendaylight.infrautils.utils.function.CheckedFunction<org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction,R,E> txRunner)
Invokes a function with a NEW
ReadWriteTransaction , and then submits that transaction and
returns the Future from that submission, or cancels it if an exception was thrown and returns a failed
future with that exception. |
<E extends Exception> |
callWithNewReadWriteTransactionAndSubmit(org.opendaylight.infrautils.utils.function.CheckedConsumer<org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction,E> txRunner)
Invokes a consumer with a NEW
ReadWriteTransaction , and then submits that transaction and
returns the Future from that submission, or cancels it if an exception was thrown and returns a failed
future with that exception. |
<E extends Exception> |
callWithNewWriteOnlyTransactionAndSubmit(org.opendaylight.infrautils.utils.function.CheckedConsumer<org.opendaylight.controller.md.sal.binding.api.WriteTransaction,E> txCnsmr)
Invokes a consumer with a NEW
WriteTransaction , and then submits that transaction and
returns the Future from that submission, or cancels it if an exception was thrown and returns a failed
future with that exception. |
@Inject public ManagedNewTransactionRunnerImpl(org.opendaylight.controller.md.sal.binding.api.DataBroker broker)
public <E extends Exception> com.google.common.util.concurrent.ListenableFuture<Void> callWithNewWriteOnlyTransactionAndSubmit(org.opendaylight.infrautils.utils.function.CheckedConsumer<org.opendaylight.controller.md.sal.binding.api.WriteTransaction,E> txCnsmr)
ManagedNewTransactionRunner
WriteTransaction
, and then submits that transaction and
returns the Future from that submission, or cancels it if an exception was thrown and returns a failed
future with that exception. Thus when this method returns, that transaction is guaranteed to have
been either submitted or cancelled, and will never "leak" and waste memory.
The consumer should not (cannot) itself use
AsyncWriteTransaction.cancel()
, AsyncWriteTransaction.commit()
or
AsyncWriteTransaction.submit()
(it will throw an UnsupportedOperationException
).
This is an asynchronous API, like DataBroker
's own;
when returning from this method, the operation of the Transaction may well still be ongoing in the background,
or pending;
calling code therefore must handle the returned future, e.g. by passing it onwards (return),
or by itself adding callback listeners to it using Futures
' methods, or by transforming it into a
CompletionStage
using ListenableFutures.toCompletionStage(ListenableFuture)
and chaining on
that, or at the very least simply by using
ListenableFutures.addErrorLogging(ListenableFuture, org.slf4j.Logger, String)
(but better NOT by using the blocking Future.get()
on it).
callWithNewWriteOnlyTransactionAndSubmit
in interface ManagedNewTransactionRunner
txCnsmr
- the CheckedConsumer
that needs a new write only transactionListenableFuture
returned by AsyncWriteTransaction.submit()
,
or a failed future with an application specific exception (not from submit())public <E extends Exception> com.google.common.util.concurrent.ListenableFuture<Void> callWithNewReadWriteTransactionAndSubmit(org.opendaylight.infrautils.utils.function.CheckedConsumer<org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction,E> txRunner)
ManagedNewTransactionRunner
ReadWriteTransaction
, and then submits that transaction and
returns the Future from that submission, or cancels it if an exception was thrown and returns a failed
future with that exception. Thus when this method returns, that transaction is guaranteed to have
been either submitted or cancelled, and will never "leak" and waste memory.
The consumer should not (cannot) itself use
AsyncWriteTransaction.cancel()
, AsyncWriteTransaction.commit()
or
AsyncWriteTransaction.submit()
(it will throw an UnsupportedOperationException
).
This is an asynchronous API, like DataBroker
's own;
when returning from this method, the operation of the Transaction may well still be ongoing in the background,
or pending;
calling code therefore must handle the returned future, e.g. by passing it onwards (return),
or by itself adding callback listeners to it using Futures
' methods, or by transforming it into a
CompletionStage
using ListenableFutures.toCompletionStage(ListenableFuture)
and chaining on
that, or at the very least simply by using
ListenableFutures.addErrorLogging(ListenableFuture, org.slf4j.Logger, String)
(but better NOT by using the blocking Future.get()
on it).
callWithNewReadWriteTransactionAndSubmit
in interface ManagedNewTransactionRunner
txRunner
- the CheckedConsumer
that needs a new read-write transactionListenableFuture
returned by AsyncWriteTransaction.submit()
,
or a failed future with an application specific exception (not from submit())public <E extends Exception,R> com.google.common.util.concurrent.ListenableFuture<R> applyWithNewReadWriteTransactionAndSubmit(org.opendaylight.infrautils.utils.function.CheckedFunction<org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction,R,E> txRunner)
ManagedNewTransactionRunner
ReadWriteTransaction
, and then submits that transaction and
returns the Future from that submission, or cancels it if an exception was thrown and returns a failed
future with that exception. Thus when this method returns, that transaction is guaranteed to have
been either submitted or cancelled, and will never "leak" and waste memory.
The function must not itself use
AsyncWriteTransaction.cancel()
, or
AsyncWriteTransaction.submit()
(it will throw an UnsupportedOperationException
).
This is an asynchronous API, like DataBroker
's own;
when returning from this method, the operation of the Transaction may well still be ongoing in the background,
or pending;
calling code therefore must handle the returned future, e.g. by passing it onwards (return),
or by itself adding callback listeners to it using Futures
' methods, or by transforming it into a
CompletionStage
using ListenableFutures.toCompletionStage(ListenableFuture)
and chaining on
that, or at the very least simply by using
ListenableFutures.addErrorLogging(ListenableFuture, org.slf4j.Logger, String)
(but better NOT by using the blocking Future.get()
on it).
applyWithNewReadWriteTransactionAndSubmit
in interface ManagedNewTransactionRunner
txRunner
- the CheckedFunction
that needs a new read-write transactionListenableFuture
returned by AsyncWriteTransaction.submit()
,
or a failed future with an application specific exception (not from submit())Copyright © 2019 OpenDaylight. All rights reserved.