Exemplo n.º 1
0
        public async Task <QosGateEnterResult> TryEnterAsync(QosGateEnterContext context)
        {
            var count = await _store.GetAsync(context.Key);

            if (count > _maxCount)
            {
                return(new QosGateEnterResult()
                {
                    Success = false
                });
            }

            var originalBodyStream      = context.HttpContext.Response.Body;
            var originalSendFileFeature = context.HttpContext.Features.Get <IHttpSendFileFeature>();

            var wrapperStream = new BodyResponseStream(originalBodyStream, originalSendFileFeature);

            context.HttpContext.Response.Body = wrapperStream;
            if (originalSendFileFeature != null)
            {
                context.HttpContext.Features.Set <IHttpSendFileFeature>(wrapperStream);
            }

            return(new QosGateEnterResult()
            {
                Success = true,
                Data = originalBodyStream
            });
        }
        public async Task <QosGateEnterResult> TryEnterAsync(QosGateEnterContext context)
        {
            var result = await _store.TryAddAsync(context.Key, 1, _maxCount, _period);

            return(new QosGateEnterResult()
            {
                Success = result.Success
            });
        }
        public Task <QosGateEnterResult> TryEnterAsync(QosGateEnterContext context)
        {
            if (context.Key == "OK")
            {
                return(Task.FromResult(new QosGateEnterResult()
                {
                    Success = true
                }));
            }

            return(Task.FromResult(new QosGateEnterResult()
            {
                Success = false
            }));
        }
Exemplo n.º 4
0
 public Task <QosGateEnterResult> TryEnterAsync(QosGateEnterContext context)
 {
     return(Task.FromResult(_enterFunc(context)));
 }