Пример #1
0
        public SubscribeResponse Subscribe(SubscribeRequest request)
        {
            //Check
            SelectorSetHeader selectorSetHeader = OperationContextProxy.Current.FindHeader <SelectorSetHeader>();
            //Check
            ResourceUriHeader resourceUriHeader = OperationContextProxy.Current.FindHeader <ResourceUriHeader>();

            return(Subscribe(resourceUriHeader.ResourceUri, selectorSetHeader != null ? selectorSetHeader.Selectors : (IEnumerable <Selector>) new Selector[] { }, request));
        }
Пример #2
0
 public static ObjectName ExtractObjectName(this SelectorSetHeader selectors)
 {
     return(selectors.Selectors.ExtractObjectName());
 }
Пример #3
0
        private void HandleCountEnumerate(string context, Filter filter)
        {
            int count = GetHandler(filter).EstimateRemainingItemsCount(new EnumerationContext(context, filter, SelectorSetHeader.GetCurrent()));

            OperationContextProxy.Current.AddHeader(new TotalItemsCountEstimate(count));
        }
Пример #4
0
        public EnumerateResponse Enumerate(EnumerateRequest request)
        {
            EnumerationContextKey contextKey = EnumerationContextKey.Unique();
            EnumerationContext    context    = new EnumerationContext(contextKey.Text, request.Filter, SelectorSetHeader.GetCurrent());

            if (RequestTotalItemsCountEstimate.IsPresent)
            {
                HandleCountEnumerate(contextKey.Text, request.Filter);
                return(new EnumerateResponse
                {
                    EnumerationContext = contextKey
                });
            }
            if (request.OptimizeEnumeration != null)
            {
                return(HandleOptimizedEnumerate(contextKey, request, context));
            }

            IEnumerator <object> enumerator = GetHandler(request.Filter).Enumerate(context).GetEnumerator();

            _activeEnumerations[contextKey] = new EnumerationState(enumerator, request.EnumerationMode);
            return(new EnumerateResponse
            {
                EnumerationContext = contextKey,
                Expires = request.Expires
            });
        }