import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.Collection;
-import java.util.List;
+import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
+import org.opendaylight.mdsal.common.api.CommitInfo;
+import org.opendaylight.yangtools.yang.common.Empty;
final class ClientTransactionCommitCohort extends AbstractTransactionCommitCohort {
- private final List<AbstractProxyTransaction> proxies;
+ private final Collection<AbstractProxyTransaction> proxies;
- /**
- * @param clientTransaction
- */
- ClientTransactionCommitCohort(final Collection<AbstractProxyTransaction> proxies) {
+ ClientTransactionCommitCohort(final AbstractClientHistory parent, final TransactionIdentifier txId,
+ final Collection<AbstractProxyTransaction> proxies) {
+ super(parent, txId);
this.proxies = ImmutableList.copyOf(proxies);
}
return ret;
}
+ private <T> ListenableFuture<T> addComplete(final ListenableFuture<T> future) {
+ future.addListener(this::complete, MoreExecutors.directExecutor());
+ return future;
+ }
+
@Override
- public ListenableFuture<Void> preCommit() {
- final VotingFuture<Void> ret = new VotingFuture<>(null, proxies.size());
+ public ListenableFuture<Empty> preCommit() {
+ final var ret = new VotingFuture<>(Empty.value(), proxies.size());
for (AbstractProxyTransaction proxy : proxies) {
proxy.preCommit(ret);
}
}
@Override
- public ListenableFuture<Void> commit() {
- final VotingFuture<Void> ret = new VotingFuture<>(null, proxies.size());
+ public ListenableFuture<CommitInfo> commit() {
+ final var ret = new VotingFuture<>(CommitInfo.empty(), proxies.size());
for (AbstractProxyTransaction proxy : proxies) {
proxy.doCommit(ret);
}
- return ret;
+ return addComplete(ret);
}
@Override
- public ListenableFuture<Void> abort() {
- final VotingFuture<Void> ret = new VotingFuture<>(null, proxies.size());
+ public ListenableFuture<Empty> abort() {
+ final var ret = new VotingFuture<>(Empty.value(), proxies.size());
for (AbstractProxyTransaction proxy : proxies) {
proxy.abort(ret);
}
- return ret;
+ return addComplete(ret);
}
-}
\ No newline at end of file
+}