import akka.actor.ActorSelection;
import java.util.Collection;
-import org.opendaylight.controller.cluster.datastore.identifiers.TransactionIdentifier;
+import java.util.concurrent.atomic.AtomicLong;
+import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier;
+import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier;
+import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
import org.opendaylight.controller.cluster.datastore.messages.PrimaryShardInfo;
import org.opendaylight.controller.cluster.datastore.utils.ActorContext;
import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain;
* transactions (ie not chained).
*/
final class TransactionContextFactory extends AbstractTransactionContextFactory<LocalTransactionFactoryImpl> {
+ private final AtomicLong nextHistory = new AtomicLong(1);
- private TransactionContextFactory(final ActorContext actorContext) {
- super(actorContext);
- }
-
- static TransactionContextFactory create(final ActorContext actorContext) {
- return new TransactionContextFactory(actorContext);
+ TransactionContextFactory(final ActorContext actorContext, final ClientIdentifier clientId) {
+ super(actorContext, new LocalHistoryIdentifier(clientId, 0));
}
@Override
}
@Override
- protected TransactionIdentifier nextIdentifier() {
- return TransactionIdentifier.create(getMemberName(), TX_COUNTER.getAndIncrement());
- }
-
- @Override
- protected LocalTransactionFactoryImpl factoryForShard(final String shardName, final ActorSelection shardLeader, final DataTree dataTree) {
+ protected LocalTransactionFactoryImpl factoryForShard(final String shardName, final ActorSelection shardLeader,
+ final DataTree dataTree) {
return new LocalTransactionFactoryImpl(getActorContext(), shardLeader, dataTree);
}
@Override
- protected Future<PrimaryShardInfo> findPrimaryShard(final String shardName, final String txId) {
+ protected Future<PrimaryShardInfo> findPrimaryShard(final String shardName, TransactionIdentifier txId) {
return getActorContext().findPrimaryShardAsync(shardName);
}
@Override
- protected <T> void onTransactionReady(final TransactionIdentifier transaction, final Collection<Future<T>> cohortFutures) {
+ protected <T> void onTransactionReady(final TransactionIdentifier transaction,
+ final Collection<Future<T>> cohortFutures) {
// Transactions are disconnected, this is a no-op
}
DOMStoreTransactionChain createTransactionChain() {
- return new TransactionChainProxy(this);
+ return new TransactionChainProxy(this, new LocalHistoryIdentifier(getHistoryId().getClientId(),
+ nextHistory.getAndIncrement()));
+ }
+
+ @Override
+ protected void onTransactionContextCreated(final TransactionIdentifier transactionId) {
}
}