public ResponseData DoClusterSetSlot(RequestType type, string action, int slot, string nodeID) { lock (_syncLocker) { List <string> list = new List <string>(); var arr = type.ToString().Split("_"); list.AddRange(arr); list.Add(slot.ToString()); list.Add(action); list.Add(nodeID); RedisCoder.RequestOnlyParams(list.ToArray()); var result = RedisCoder.Decoder(type); if (result.Type == ResponseType.Redirect) { return((ResponseData)OnRedirect.Invoke(result.Data, OperationType.DoClusterSetSlot, type, action, slot, nodeID)); } else if (result.Type == ResponseType.Error) { throw new Exception(result.Data); } else { return(result); } } }
public ResponseData DoMutiCmd(RequestType type, params object[] @params) { lock (_syncLocker) { List <string> list = new List <string>(); var arr = type.ToString().Split("_"); list.AddRange(arr); if (@params != null) { foreach (var item in @params) { list.Add(item.ToString()); } } RedisCoder.RequestOnlyParams(list.ToArray()); var result = RedisCoder.Decoder(type); if (result.Type == ResponseType.Redirect) { return((ResponseData)OnRedirect.Invoke(result.Data, OperationType.DoCluster, type, @params)); } else if (result.Type == ResponseType.Error) { throw new Exception(result.Data); } else { return(result); } } }
public ResponseData <string> DoMutiCmd(RequestType type, params object[] @params) { ResponseData <string> result = new ResponseData <string>() { Type = ResponseType.Empty, Data = "未知的命令" }; try { lock (SyncRoot) { using (var cts = new CancellationTokenSource(_actionTimeout)) { List <string> list = new List <string>(); var arr = type.ToString().Split("_"); list.AddRange(arr); if (@params != null) { foreach (var item in @params) { list.Add(item.ToString()); } } RedisCoder.RequestOnlyParams(list.ToArray()); var sresult = RedisCoder.Decoder <string>(type, cts.Token); if (sresult != null && sresult.Type == ResponseType.Redirect) { return((ResponseData <string>)OnRedirect.Invoke(sresult.Data, OperationType.DoCluster, type, @params)); } else if (sresult.Type == ResponseType.Error) { throw new Exception(sresult.Data); } else { return(sresult); } } } } catch (TaskCanceledException tex) { result.Type = ResponseType.Error; result.Data = "Action Timeout"; } catch (Exception ex) { result.Type = ResponseType.Error; result.Data = ex.Message; } return(result); }
public ResponseData DoClusterSetSlot(RequestType type, string action, int slot, string nodeID) { ResponseData result = new ResponseData() { Type = ResponseType.Empty, Data = "未知的命令" }; try { result = TaskHelper.Run((token) => { lock (SyncRoot) { List <string> list = new List <string>(); var arr = type.ToString().Split("_"); list.AddRange(arr); list.Add(slot.ToString()); list.Add(action); list.Add(nodeID); RedisCoder.RequestOnlyParams(list.ToArray()); var sresult = RedisCoder.Decoder(type, token); if (sresult != null && sresult.Type == ResponseType.Redirect) { return((ResponseData)OnRedirect.Invoke(sresult.Data, OperationType.DoClusterSetSlot, type, action, slot, nodeID)); } else if (sresult != null && sresult.Type == ResponseType.Error) { throw new Exception(sresult.Data); } else { return(sresult); } } }, _actionTimeout).Result; } catch (TaskCanceledException tex) { result.Type = ResponseType.Error; result.Data = "Action Timeout"; } catch (Exception ex) { result.Type = ResponseType.Error; result.Data = ex.Message; } return(result); }
/// <summary> /// 发送, /// 命令行模式 /// </summary> /// <param name="cmd"></param> /// <returns></returns> internal ResponseData RequestWithConsole(string cmd) { lock (_syncLocker) { ResponseData result = new ResponseData() { Type = ResponseType.Empty, Data = "未知的命令" }; try { if (!string.IsNullOrWhiteSpace(cmd)) { var @params = cmd.Split(" ", StringSplitOptions.RemoveEmptyEntries); if (@params != null && @params.Length > 0) { var redisCmd = @params[0].ToUpper(); if (EnumHelper.GetEnum(redisCmd, out RequestType requestType1)) { RedisCoder.RequestOnlyParams(@params); result = RedisCoder.Decoder(requestType1); } else { redisCmd = $"{@params[0]}_{@params[1]}".ToUpper(); if (EnumHelper.GetEnum(redisCmd, out RequestType requestType2)) { RedisCoder.RequestOnlyParams(@params); result = RedisCoder.Decoder(requestType2); } else { result.Type = ResponseType.Error; result.Data = "未知的命令 cmd:" + cmd; } } } } } catch (Exception ex) { result.Type = ResponseType.Error; result.Data = ex.Message; } return(result); } }
/// <summary> /// 发送命令 /// </summary> /// <param name="cmd"></param> public ResponseData Do(RequestType type) { lock (_syncLocker) { RedisCoder.RequestOnlyParams(type.ToString()); var result = RedisCoder.Decoder(type); if (result.Type == ResponseType.Redirect) { return((ResponseData)OnRedirect.Invoke(result.Data, OperationType.Do, null)); } else { return(result); } } }
public ResponseData DoBatchWithIDKeys(RequestType type, string id, params string[] keys) { id.KeyCheck(); keys.KeyCheck(); ResponseData result = new ResponseData() { Type = ResponseType.Empty, Data = "未知的命令" }; try { result = TaskHelper.Run((token) => { lock (SyncRoot) { List <string> list = new List <string>(); list.Add(type.ToString()); list.Add(id); list.AddRange(keys); RedisCoder.RequestOnlyParams(list.ToArray()); var sresult = RedisCoder.Decoder(type, token); if (sresult != null && sresult.Type == ResponseType.Redirect) { return((ResponseData)OnRedirect.Invoke(sresult.Data, OperationType.DoBatchWithIDKeys, type, id, keys)); } else { return(sresult); } } }, _actionTimeout).Result; } catch (TaskCanceledException tex) { result.Type = ResponseType.Error; result.Data = "Action Timeout"; } catch (Exception ex) { result.Type = ResponseType.Error; result.Data = ex.Message; } return(result); }
/// <summary> /// 发送命令 /// </summary> /// <param name="cmd"></param> public ResponseData Do(RequestType type) { ResponseData result = new ResponseData() { Type = ResponseType.Empty, Data = "未知的命令" }; try { result = TaskHelper.Run((token) => { lock (SyncRoot) { RedisCoder.RequestOnlyParams(type.ToString()); var sresult = RedisCoder.Decoder(type, token); if (sresult != null && sresult.Type == ResponseType.Redirect) { return((ResponseData)OnRedirect.Invoke(sresult.Data, OperationType.Do, null)); } else { return(sresult); } } }, _actionTimeout).Result; } catch (TaskCanceledException tex) { result.Type = ResponseType.Error; result.Data = "Action Timeout," + tex.Message; } catch (Exception ex) { result.Type = ResponseType.Error; result.Data = ex.Message; } return(result); }
/// <summary> /// 发送命令 /// </summary> /// <param name="cmd"></param> public ResponseData <string> Do(RequestType type) { ResponseData <string> result = new ResponseData <string>() { Type = ResponseType.Empty, Data = "未知的命令" }; try { lock (SyncRoot) { using (var cts = new CancellationTokenSource(_actionTimeout)) { RedisCoder.RequestOnlyParams(type.ToString()); var sresult = RedisCoder.Decoder <string>(type, cts.Token); if (sresult != null && sresult.Type == ResponseType.Redirect) { return((ResponseData <string>)OnRedirect.Invoke(sresult.Data, OperationType.Do, null)); } else { return(sresult); } } } } catch (TaskCanceledException tex) { result.Type = ResponseType.Error; result.Data = "Action Timeout," + tex.Message; } catch (Exception ex) { result.Type = ResponseType.Error; result.Data = ex.Message; } return(result); }
public ResponseData DoBatchWithIDKeys(RequestType type, string id, params string[] keys) { lock (_syncLocker) { id.KeyCheck(); keys.KeyCheck(); List <string> list = new List <string>(); list.Add(type.ToString()); list.Add(id); list.AddRange(keys); RedisCoder.RequestOnlyParams(list.ToArray()); var result = RedisCoder.Decoder(type); if (result.Type == ResponseType.Redirect) { return((ResponseData)OnRedirect.Invoke(result.Data, OperationType.DoBatchWithIDKeys, type, id, keys)); } else { return(result); } } }
/// <summary> /// 发送, /// 命令行模式 /// </summary> /// <param name="cmd"></param> /// <returns></returns> internal ResponseData RequestWithConsole(string cmd) { ResponseData result = new ResponseData() { Type = ResponseType.Empty, Data = "未知的命令" }; try { result = TaskHelper.Run((token) => { lock (SyncRoot) { ResponseData sresult = new ResponseData() { Type = ResponseType.Empty, Data = "未知的命令" }; if (!string.IsNullOrWhiteSpace(cmd)) { var @params = cmd.Split(" ", StringSplitOptions.RemoveEmptyEntries); if (@params != null && @params.Length > 0) { var redisCmd = @params[0].ToUpper(); if (EnumHelper.GetEnum(redisCmd, out RequestType requestType1)) { RedisCoder.RequestOnlyParams(@params); sresult = RedisCoder.Decoder(requestType1, token); } else { redisCmd = $"{@params[0]}_{@params[1]}".ToUpper(); if (EnumHelper.GetEnum(redisCmd, out RequestType requestType2)) { RedisCoder.RequestOnlyParams(@params); sresult = RedisCoder.Decoder(requestType2, token); } else { sresult.Type = ResponseType.Error; sresult.Data = "未知的命令 cmd:" + cmd; } } } } return(sresult); } }, _actionTimeout).Result; } catch (TaskCanceledException tex) { result.Type = ResponseType.Error; result.Data = "Action Timeout"; } catch (Exception ex) { result.Type = ResponseType.Error; result.Data = ex.Message; } return(result); }