Exemple #1
0
        public object Read(object key, out UserTransaction result)
        {
            var hash        = _hashFromValue ? "" : _hashCalculater.CalculateHashFromKey(key);
            var transaction = _distributor.CreateTransaction(hash);

            transaction.OperationName = OperationName.Read;
            transaction.OperationType = OperationType.Sync;

            if (!transaction.IsError)
            {
                SomeAsyncWorkForRead(transaction);
                CompleteTransactionKeyOnly(key, transaction);
            }

            result = transaction.UserTransaction;

            try
            {
                transaction.InnerSupportCallback.Task.Wait();
            }
            catch (Exception)
            {
                transaction.SetError();
                transaction.AddErrorDescription(Errors.OperationTimeoutException);
                PerfCounters.ProxyCounters.Instance.ReadCount.Increment();
                return(null);
            }

            if (transaction.InnerSupportCallback.Task.Result == null)
            {
                transaction.SetError();
                transaction.AddErrorDescription(Errors.OperationTimeoutException);
                PerfCounters.ProxyCounters.Instance.ReadCount.Increment();
                return(null);
            }

            result = transaction.InnerSupportCallback.Task.Result.Transaction.UserTransaction;

            var data = transaction.InnerSupportCallback.Task.Result.Data;

            if (data == null)
            {
                PerfCounters.ProxyCounters.Instance.ReadCount.Increment();
                return(null);
            }

            PerfCounters.ProxyCounters.Instance.ReadCount.Increment();
            return(_hashCalculater.DeserializeValue(data));
        }
Exemple #2
0
 private void DeserializeValue(InnerData data, out object value)
 {
     value = _hashCalculater.DeserializeValue(data.Data);
 }