Exemplo n.º 1
0
        public ICollection <CuratorTransactionResult> commit()
        {
            CheckAlreadyCommited();
            isCommitted = true;

            AtomicBoolean   firstTime  = new AtomicBoolean(true);
            List <OpResult> resultList = RetryLoop.callWithRetry
                                         (
                client.getZookeeperClient(),
                CallableUtils.FromFunc(() => doOperation(firstTime)));

            if (resultList.Count != transaction.metadataSize())
            {
                throw new InvalidOperationException(String.Format("Result size ({0}) doesn't match input size ({1})",
                                                                  resultList.Count,
                                                                  transaction.metadataSize()));
            }

            var builder = new ReadOnlyCollectionBuilder <CuratorTransactionResult>();

            for (int i = 0; i < resultList.Count; ++i)
            {
                OpResult opResult = resultList[i];
                CuratorMultiTransactionRecord.TypeAndPath metadata = transaction.getMetadata(i);
                CuratorTransactionResult curatorResult             = makeCuratorResult(opResult, metadata);
                builder.Add(curatorResult);
            }

            return(builder.ToReadOnlyCollection());
        }
Exemplo n.º 2
0
        private CuratorTransactionResult makeCuratorResult(OpResult opResult,
                                                           CuratorMultiTransactionRecord.TypeAndPath metadata)
        {
            String resultPath = null;
            Stat   resultStat = null;

            if (opResult is OpResult.CreateResult)
            {
                OpResult.CreateResult createResult = (OpResult.CreateResult)opResult;
                resultPath = client.unfixForNamespace(createResult.getPath());
            }
            else if (opResult is OpResult.SetDataResult)
            {
                OpResult.SetDataResult setDataResult = (OpResult.SetDataResult)opResult;
                resultStat = setDataResult.getStat();
            }
            return(new CuratorTransactionResult(metadata.type, metadata.forPath, resultPath, resultStat));
        }