private OutgoingMessage HandleNormalEnumerate(IncomingMessage requestMessage, EnumerationContextKey contextKey, EnumerateRequest request, EnumerationContext context) { var responseMessage = CreateEnumerateResponse(); var enumerator = GetEnumerator(request, requestMessage, context, responseMessage); OnEnumerationStarted(context.Context, enumerator, request.EnumerationMode); responseMessage.SetBody( new SerializerBodyWriter(new EnumerateResponse { EnumerationContext = contextKey, Expires = request.Expires })); return responseMessage; }
private OutgoingMessage Enumerate(IncomingMessage requestMessage) { var request = requestMessage.GetPayload <EnumerateRequest>(); var contextKey = EnumerationContextKey.Unique(); var filter = CreateFilterInstance(request.Filter); var context = new EnumerationContext(contextKey.Text, filter); if (IsCountRequest(requestMessage)) { return(HandleCountEnumerate(requestMessage, contextKey, request, context)); } if (request.OptimizeEnumeration != null) { return(HandleOptimizedEnumerate(requestMessage, contextKey, request, context)); } return(HandleNormalEnumerate(requestMessage, contextKey, request, context)); }
private OutgoingMessage Enumerate(IncomingMessage requestMessage) { var request = requestMessage.GetPayload<EnumerateRequest>(); var contextKey = EnumerationContextKey.Unique(); var filter = CreateFilterInstance(request.Filter); var context = new EnumerationContext(contextKey.Text, filter); if (IsCountRequest(requestMessage)) { return HandleCountEnumerate(requestMessage, contextKey, request, context); } if (request.OptimizeEnumeration != null) { return HandleOptimizedEnumerate(requestMessage, contextKey, request, context); } return HandleNormalEnumerate(requestMessage, contextKey, request, context); }
private IEnumerator <object> GetEnumerator(EnumerateRequest request, IncomingMessage requestMessage, EnumerationContext context, OutgoingMessage responseMessage) { return(GetHandler(request.Filter) .Enumerate(context, requestMessage, responseMessage) .GetEnumerator()); }
private OutgoingMessage HandleNormalEnumerate(IncomingMessage requestMessage, EnumerationContextKey contextKey, EnumerateRequest request, EnumerationContext context) { var responseMessage = CreateEnumerateResponse(); var enumerator = GetEnumerator(request, requestMessage, context, responseMessage); OnEnumerationStarted(context.Context, enumerator, request.EnumerationMode); responseMessage.SetBody( new SerializerBodyWriter(new EnumerateResponse { EnumerationContext = contextKey, Expires = request.Expires })); return(responseMessage); }
private OutgoingMessage HandleOptimizedEnumerate(IncomingMessage requestMessage, EnumerationContextKey contextKey, EnumerateRequest request, EnumerationContext context) { var responseMessage = CreateEnumerateResponse(); var maxElements = CalculateMaxElements(request.MaxElements); if (request.EnumerationMode == EnumerationMode.EnumerateEPR) { var enumerator = GetEnumerator(request, requestMessage, context, responseMessage); bool endOfSequence; var items = enumerator.Take(maxElements, out endOfSequence); if (!endOfSequence) { OnEnumerationStarted(context.Context, enumerator, request.EnumerationMode); } responseMessage.SetBody(new SerializerBodyWriter( new EnumerateResponse { Items = new EnumerationItemList(items, request.EnumerationMode), EndOfSequence = endOfSequence ? new EndOfSequence() : null, EnumerationContext = endOfSequence ? null : contextKey })); return(responseMessage); } throw new NotSupportedException(); }
private OutgoingMessage HandleCountEnumerate(IncomingMessage requestMessage, EnumerationContextKey contextKey, EnumerateRequest request, EnumerationContext context) { var responseMessage = CreateEnumerateResponse(); int count = GetHandler(request.Filter) .EstimateRemainingItemsCount(context, requestMessage, responseMessage); responseMessage.AddHeader(new TotalItemsCountEstimateHeader(count), false); responseMessage.SetBody(new SerializerBodyWriter(new EnumerateResponse { EnumerationContext = contextKey })); return(responseMessage); }
private IEnumerator<object> GetEnumerator(EnumerateRequest request, IncomingMessage requestMessage, EnumerationContext context, OutgoingMessage responseMessage) { return GetHandler(request.Filter) .Enumerate(context, requestMessage, responseMessage) .GetEnumerator(); }
private OutgoingMessage HandleOptimizedEnumerate(IncomingMessage requestMessage, EnumerationContextKey contextKey, EnumerateRequest request, EnumerationContext context) { var responseMessage = CreateEnumerateResponse(); var maxElements = CalculateMaxElements(request.MaxElements); if (request.EnumerationMode == EnumerationMode.EnumerateEPR) { var enumerator = GetEnumerator(request, requestMessage, context, responseMessage); bool endOfSequence; var items = enumerator.Take(maxElements, out endOfSequence); if (!endOfSequence) { OnEnumerationStarted(context.Context, enumerator, request.EnumerationMode); } responseMessage.SetBody(new SerializerBodyWriter( new EnumerateResponse { Items = new EnumerationItemList(items, request.EnumerationMode), EndOfSequence = endOfSequence ? new EndOfSequence() : null, EnumerationContext = endOfSequence ? null : contextKey })); return responseMessage; } throw new NotSupportedException(); }
private OutgoingMessage HandleCountEnumerate(IncomingMessage requestMessage, EnumerationContextKey contextKey, EnumerateRequest request, EnumerationContext context) { var responseMessage = CreateEnumerateResponse(); int count = GetHandler(request.Filter) .EstimateRemainingItemsCount(context, requestMessage, responseMessage); responseMessage.AddHeader(new TotalItemsCountEstimateHeader(count), false); responseMessage.SetBody(new SerializerBodyWriter(new EnumerateResponse { EnumerationContext = contextKey })); return responseMessage; }