public ResponseData DoBatchWithList(RequestType type, string id, IEnumerable <string> list) { lock (_syncLocker) { RedisCoder.RequestForList(type, id, list); var result = RedisCoder.Decoder(type); if (result.Type == ResponseType.Redirect) { return((ResponseData)OnRedirect.Invoke(result.Data, OperationType.DoBatchWithList, type, list)); } else { return(result); } } }
public ResponseData DoMultiLineWithList(RequestType type, string id, IEnumerable <string> list) { ResponseData result = new ResponseData() { Type = ResponseType.Empty, Data = "未知的命令" }; try { result = TaskHelper.Run((token) => { lock (SyncRoot) { RedisCoder.RequestForList(type, id, list); var sresult = RedisCoder.Decoder(type, token); if (sresult != null && sresult.Type == ResponseType.Redirect) { return((ResponseData)OnRedirect.Invoke(sresult.Data, OperationType.DoBatchWithList, type, list)); } 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); }
public ResponseData <string> DoMultiLineWithList(RequestType type, string id, IEnumerable <string> list) { ResponseData <string> result = new ResponseData <string>() { Type = ResponseType.Empty, Data = "未知的命令" }; try { lock (SyncRoot) { using (var cts = new CancellationTokenSource(_actionTimeout)) { RedisCoder.RequestForList(type, id, list); var sresult = RedisCoder.Decoder <string>(type, cts.Token); if (sresult != null && sresult.Type == ResponseType.Redirect) { return((ResponseData <string>)OnRedirect.Invoke(sresult.Data, OperationType.DoBatchWithList, type, list)); } 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); }