예제 #1
0
        public Task <QueueInfo> GetQueueInfo(GetQueueInfoArgs args)
        {
            var queueInfo = new QueueInfo();
            var commands  = _commandQueue.Items.ToList();

            queueInfo.TotalCount = commands.Count;

            if (args.Include(GetQueueInfoArgs.Commands))
            {
                //(IList<object>)xxx => InvalidCastException: 'IList<ICommand>' to type 'IList<Object>'.
                queueInfo.Commands = commands.Cast <object>().ToList();
            }

            if (args.Include(GetQueueInfoArgs.CommandSums))
            {
                var commandSums = commands.GroupBy(x => x.CommandType).Select(g =>
                {
                    var commandSum          = new CommandSum();
                    commandSum.CommandType  = g.Key;
                    commandSum.CommandCount = g.Count();
                    return(commandSum);
                }).ToList();

                queueInfo.CommandSums = commandSums;
            }
            return(Task.FromResult(queueInfo));
        }
예제 #2
0
        public Task <QueueInfo> QueryQueue()
        {
            var apiProxy         = ApiProxyContext.Current;
            var getQueueInfoArgs = new GetQueueInfoArgs();

            getQueueInfoArgs.SetIncludes(GetQueueInfoArgs.Commands, GetQueueInfoArgs.CommandSums);
            return(apiProxy.GetQueueInfo(getQueueInfoArgs));
        }
예제 #3
0
        public Task <QueueInfo> GetQueueInfo(GetQueueInfoArgs args)
        {
            var requestUri = _config.GetRequestUri(nameof(GetQueueInfo));

            if (!string.IsNullOrWhiteSpace(args.Includes))
            {
                requestUri = requestUri + "?Includes=" + args.Includes;
            }
            return(_webApiHelper.GetAsJson <QueueInfo>(requestUri, null));
        }
        public Task <QueueInfo> GetQueueInfo(GetQueueInfoArgs args)
        {
            var isOk = CheckApiStatusOkSmart();

            if (!isOk)
            {
                return(_nullApiProxy.GetQueueInfo(args));
            }

            var task     = Proxy.GetQueueInfo(args);
            var failTask = task.ContinueWith(HandleApiTaskEx, TaskContinuationOptions.OnlyOnFaulted);
            var theTask  = Task.WhenAny(task, failTask);

            if (theTask == failTask)
            {
                return(_nullApiProxy.GetQueueInfo(args));
            }

            return(task);
        }
예제 #5
0
 public Task <QueueInfo> GetQueueInfo(GetQueueInfoArgs args)
 {
     return(_clientTracerApi.GetQueueInfo(args));
 }
 public Task <QueueInfo> GetQueueInfo(GetQueueInfoArgs args)
 {
     return(Task.FromResult(new QueueInfo()));
 }