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)); }
public static ObjectName ExtractObjectName(this SelectorSetHeader selectors) { return(selectors.Selectors.ExtractObjectName()); }
private void HandleCountEnumerate(string context, Filter filter) { int count = GetHandler(filter).EstimateRemainingItemsCount(new EnumerationContext(context, filter, SelectorSetHeader.GetCurrent())); OperationContextProxy.Current.AddHeader(new TotalItemsCountEstimate(count)); }
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 }); }