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)); }
private void DeserializeValue(InnerData data, out object value) { value = _hashCalculater.DeserializeValue(data.Data); }