ServiceStack.ServiceStackHost.ApplyRequestFiltersSingle C# (CSharp) Method

ApplyRequestFiltersSingle() protected method

protected ApplyRequestFiltersSingle ( IRequest req, IResponse res, object requestDto ) : bool
req IRequest
res IResponse
requestDto object
return bool
        protected virtual bool ApplyRequestFiltersSingle(IRequest req, IResponse res, object requestDto)
        {
            //Exec all RequestFilter attributes with Priority < 0
            var attributes = FilterAttributeCache.GetRequestFilterAttributes(requestDto.GetType());
            var i = 0;
            for (; i < attributes.Length && attributes[i].Priority < 0; i++)
            {
                var attribute = attributes[i];
                Container.AutoWire(attribute);
                attribute.RequestFilter(req, res, requestDto);
                Release(attribute);
                if (res.IsClosed) return res.IsClosed;
            }

            ExecTypedFilters(GlobalTypedRequestFilters, req, res, requestDto);
            if (res.IsClosed) return res.IsClosed;

            //Exec global filters
            foreach (var requestFilter in GlobalRequestFilters)
            {
                requestFilter(req, res, requestDto);
                if (res.IsClosed) return res.IsClosed;
            }

            //Exec remaining RequestFilter attributes with Priority >= 0
            for (; i < attributes.Length && attributes[i].Priority >= 0; i++)
            {
                var attribute = attributes[i];
                Container.AutoWire(attribute);
                attribute.RequestFilter(req, res, requestDto);
                Release(attribute);
                if (res.IsClosed) return res.IsClosed;
            }

            return res.IsClosed;
        }