예제 #1
0
        public override Task <GetProcessingResultResponse> GetProcessingResult(GetProcessingResultRequest request, ServerCallContext context)
        {
            string id = request.Id;

            string status     = "inProgress";
            string resultRank = String.Empty;

            var responce = new GetProcessingResultResponse {
                Rank = resultRank, Status = status
            };

            IDatabase db = _redis.GetDatabase();

            for (int i = 0; i < 10; i++)
            {
                resultRank = db.StringGet("rank_" + id);
                if (resultRank != null)
                {
                    responce.Status = "Completed";
                    responce.Rank   = resultRank;
                    break;
                }

                Thread.Sleep(500);
            }

            return(Task.FromResult(responce));
        }
예제 #2
0
        public override Task <GetProcessingResultResponse> GetProcessingResult(GetProcessingResultRequest request, ServerCallContext context)
        {
            IDatabase db      = _redis.GetDatabase();
            double    measure = -1;
            int       i       = 0;

            while (i < 5)
            {
                string JSON  = db.StringGet(request.Id);
                var    model = JsonSerializer.Deserialize <RedisModel>(JSON);
                if (model.Measure != -1)
                {
                    measure = model.Measure;
                    break;
                }
                Thread.Sleep(1000);
                i++;
            }
            var resp = new GetProcessingResultResponse {
                Measure = measure
            };

            if (measure == -1)
            {
                resp.Status = "in_progress";
            }
            else
            {
                resp.Status = "done";
            }

            return(Task.FromResult(resp));
        }
예제 #3
0
        public override Task <GetProcessingResultResponse> GetProcessingResult(GetProcessingResultRequest request, ServerCallContext context)
        {
            string    id    = request.Id;
            double    rank  = -1;
            IDatabase db    = _redis.GetDatabase();
            int       index = 0;

            while (index++ < MAX_RETRIES)
            {
                string JSON  = db.StringGet(id);
                var    model = JsonSerializer.Deserialize <RedisPayloadModel>(JSON);
                if (model.Rank != -1)
                {
                    rank = model.Rank;
                    break;
                }
                Thread.Sleep(SLEEP_TIMEOUT);
            }
            var resp = new GetProcessingResultResponse {
                Rank = rank
            };

            if (rank == -1)
            {
                resp.Status = "in_progress";
            }
            else
            {
                resp.Status = "done";
            }
            return(Task.FromResult(resp));
        }
예제 #4
0
        public override Task <GetProcessingResultResponse> GetProcessingResult(GetProcessingResultRequest request, ServerCallContext context)
        {
            RedisPayload payload = GetPayloadFromRedis(request.Id);

            var resp = new GetProcessingResultResponse {
                Rank   = payload.Rank,
                Status = payload.Rank == -1
                    ? "1"
                    : "2",
                Description = payload.Description,
                Text        = payload.Data,
            };

            return(Task.FromResult(resp));
        }