- final TransactionType getTransactionType() {
- return transactionType;
- }
-
- final Semaphore getOperationLimiter() {
- return operationLimiter;
- }
-
- private TransactionFutureCallback getOrCreateTxFutureCallback(YangInstanceIdentifier path) {
- String shardName = shardNameFromIdentifier(path);
- return getOrCreateTxFutureCallback(shardName);
- }
-
- private TransactionFutureCallback getOrCreateTxFutureCallback(String shardName) {
- TransactionFutureCallback txFutureCallback = txFutureCallbackMap.get(shardName);
- if(txFutureCallback == null) {
- Future<PrimaryShardInfo> findPrimaryFuture = sendFindPrimaryShardAsync(shardName);
-
- final TransactionFutureCallback newTxFutureCallback = new TransactionFutureCallback(this, shardName);
-
- txFutureCallback = newTxFutureCallback;
- txFutureCallbackMap.put(shardName, txFutureCallback);
-
- findPrimaryFuture.onComplete(new OnComplete<PrimaryShardInfo>() {
- @Override
- public void onComplete(Throwable failure, PrimaryShardInfo primaryShardInfo) {
- if(failure != null) {
- newTxFutureCallback.createTransactionContext(failure, null);
- } else {
- newTxFutureCallback.setPrimaryShard(primaryShardInfo.getPrimaryShardActor());
- }
- }
- }, actorContext.getClientDispatcher());
+ private TransactionContextWrapper getContextAdapter(final String shardName) {
+ final TransactionContextWrapper existing = txContextAdapters.get(shardName);
+ if (existing != null) {
+ return existing;