Пример #1
0
        public ResponseData <IEnumerable <IdFiled> > DoStreamRange(params string[] @params)
        {
            @params.KeyCheck();

            ResponseData <IEnumerable <IdFiled> > result = new ResponseData <IEnumerable <IdFiled> >()
            {
                Type = ResponseType.Empty, Data = "未知的命令"
            };

            try
            {
                result = TaskHelper.Run((token) =>
                {
                    lock (SyncRoot)
                    {
                        RedisCoder.Request(RequestType.XRANGE, @params);
                        var sresult = RedisCoder.StreamRangeDecoder(token);
                        if (sresult != null && sresult.Type == ResponseType.Redirect)
                        {
                            return((ResponseData <IEnumerable <IdFiled> >)OnRedirect.Invoke(sresult.Data, OperationType.DoBatchWithParams, RequestType.XRANGE, @params));
                        }
                        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);
        }