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 }); }