private ulong?InternalDecrement(string key, ulong?seed, TimeSpan expire, ulong amount, ulong version) { using (var socket = GetCluster().AcquireSocket(key)) { if (socket != null) { AbstractRequestPackage requestPackage = null; if (seed.HasValue) { if (expire == TimeSpan.MaxValue) { requestPackage = new DecrementRequestPackage(key, amount, seed.Value, version); } else { requestPackage = new DecrementRequestPackage(key, amount, seed.Value, expire, version); } } else { requestPackage = new DecrementRequestPackage(key, amount, version); } var requestData = requestPackage.GetBytes(); if (requestData != null) { socket.Write(requestData); var responsePackage = ResponsePackageCreator.GetPackage(socket); if (responsePackage != null) { if (responsePackage.ResponseStatus == ResponseStatus.NoError) { return(responsePackage.ValueBytes.GetLittleEndianUInt64()); } else if (responsePackage.ResponseStatus != ResponseStatus.KeyExists && responsePackage.ResponseStatus != ResponseStatus.KeyNotFound) { LocalLoggingService.Warning("{0} {1} {2} {3}", DistributedServerConfiguration.ModuleName, "MemcachedClient", "InternalDecrement", string.Format("在 {0} 上执行操作 {1} 得到了不正确的回复 Key : {2} -> {3}", socket.Endpoint.ToString(), requestPackage.Opcode, key, responsePackage.ResponseStatus)); } } else { LocalLoggingService.Error("{0} {1} {2} {3}", DistributedServerConfiguration.ModuleName, "MemcachedClient", "InternalDecrement", string.Format("在 {0} 上执行操作 {1} 没有得到回复 Key : {2}", socket.Endpoint.ToString(), requestPackage.Opcode, key)); } } } } return(null); }
private void InternalFastSet(string key, string value, TimeSpan expire, ulong version) { using (var socket = GetCluster().AcquireSocket(key)) { if (socket != null) { AbstractRequestPackage requestPackage = expire == TimeSpan.MaxValue ? new SetQRequestPackage(key, value, version) : new SetQRequestPackage(key, value, expire, version); var requestData = requestPackage.GetBytes(); if (requestData != null) { socket.Write(requestData); } } } }
private bool InternalReplace(string key, string value, TimeSpan expire, ulong version) { using (var socket = GetCluster().AcquireSocket(key)) { if (socket != null) { AbstractRequestPackage requestPackage = expire == TimeSpan.MaxValue ? new ReplaceRequestPackage(key, value, version) : new ReplaceRequestPackage(key, value, expire, version); var requestData = requestPackage.GetBytes(); if (requestData != null) { socket.Write(requestData); var responsePackage = ResponsePackageCreator.GetPackage(socket); if (responsePackage != null) { if (responsePackage.ResponseStatus == ResponseStatus.NoError) { return(true); } else if (responsePackage.ResponseStatus != ResponseStatus.KeyExists && responsePackage.ResponseStatus != ResponseStatus.KeyNotFound) { LocalLoggingService.Warning("{0} {1} {2} {3}", DistributedServerConfiguration.ModuleName, "MemcachedClient", "InternalReplace", string.Format("在 {0} 上执行操作 {1} 得到了不正确的回复 Key : {2} -> {3}", socket.Endpoint.ToString(), requestPackage.Opcode, key, responsePackage.ResponseStatus)); } } else { LocalLoggingService.Error("{0} {1} {2} {3}", DistributedServerConfiguration.ModuleName, "MemcachedClient", "InternalReplace", string.Format("在 {0} 上执行操作 {1} 没有得到回复 Key : {2}", socket.Endpoint.ToString(), requestPackage.Opcode, key)); } } } } return(false); }
internal Dictionary <string, Dictionary <string, string> > InternalStat(StatType statType) { var stat = new Dictionary <string, Dictionary <string, string> >(); var nodes = GetCluster().AcquireNodes(); foreach (var node in nodes) { var statItem = new Dictionary <string, string>(); using (var socket = node.GetClientSocket()) { if (socket != null) { AbstractRequestPackage requestPackage = null; switch (statType) { case StatType.General: requestPackage = new StatRequestPackage(StatTypeCode.General); break; case StatType.Item: requestPackage = new StatRequestPackage(StatTypeCode.Item); break; case StatType.Setting: requestPackage = new StatRequestPackage(StatTypeCode.Setting); break; } var requestData = requestPackage.GetBytes(); if (requestData != null) { socket.Write(requestData); while (true) { var responsePackage = ResponsePackageCreator.GetPackage(socket); if (responsePackage != null) { if (responsePackage.ResponseStatus == ResponseStatus.NoError) { if (!string.IsNullOrEmpty(responsePackage.Key)) { if (!statItem.ContainsKey(responsePackage.Key)) { statItem.Add(responsePackage.Key, responsePackage.Value); } } else { break; } } else if (responsePackage.ResponseStatus != ResponseStatus.KeyExists && responsePackage.ResponseStatus != ResponseStatus.KeyNotFound) { LocalLoggingService.Warning("{0} {1} {2} {3}", DistributedServerConfiguration.ModuleName, "MemcachedClient", "InternalStat", string.Format("在 {0} 上执行操作 {1} 得到了不正确的回复 Key : {2} -> {3}", socket.Endpoint.ToString(), requestPackage.Opcode, responsePackage.Key, responsePackage.ResponseStatus)); break; } } else { break; } } } } } if (!stat.ContainsKey(node.Name)) { stat.Add(node.Name, statItem); } } return(stat); }