protected override IStoreOperationResult PerformStore(StoreMode mode, string key, object value, uint expires, ref ulong cas, out int statusCode) { var hashedKey = this.KeyTransformer.Transform(key); var node = this.Pool.Locate(hashedKey); var result = StoreOperationResultFactory.Create(); statusCode = -1; if (node != null) { CacheItem item; try { item = this.Transcoder.Serialize(value); } catch (Exception e) { log.Error(e); if (this.PerformanceMonitor != null) { this.PerformanceMonitor.Store(mode, 1, false); } result.Fail("Store operation failed during serialization", e); return(result); } var command = this.Pool.OperationFactory.Store(mode, hashedKey, item, expires, cas); var commandResult = ExecuteWithRedirect(node, command); result.Cas = cas = command.CasValue; result.StatusCode = statusCode = command.StatusCode; if (!commandResult.Success) { result.InnerResult = commandResult; result.Fail("Store operation failed, see InnerResult or StatusCode for details"); return(result); } if (this.PerformanceMonitor != null) { this.PerformanceMonitor.Store(mode, 1, true); } result.Pass(); return(result); } if (this.PerformanceMonitor != null) { this.PerformanceMonitor.Store(mode, 1, false); } result.Fail("Failed to locate node"); return(result); }
protected virtual IStoreOperationResult PerformStore(StoreMode mode, string key, object value, uint expires, ref ulong cas, out int statusCode) { var hashedKey = this.keyTransformer.Transform(key); var node = this.pool.Locate(hashedKey); var result = StoreOperationResultFactory.Create(); statusCode = -1; if (node != null) { CacheItem item; try { item = this.transcoder.Serialize(value); } catch (Exception e) { log.Error(e); if (this.performanceMonitor != null) this.performanceMonitor.Store(mode, 1, false); result.Fail("PerformStore failed", e); return result; } var command = this.pool.OperationFactory.Store(mode, hashedKey, item, expires, cas); var commandResult = node.Execute(command); result.Cas = cas = command.CasValue; result.StatusCode = statusCode = command.StatusCode; if (commandResult.Success) { if (this.performanceMonitor != null) this.performanceMonitor.Store(mode, 1, true); result.Pass(); return result; } commandResult.Combine(result); return result; } if (this.performanceMonitor != null) this.performanceMonitor.Store(mode, 1, false); result.Fail("Unable to locate node"); return result; }