public Message CreateEnumerationRequest(RequestEnumeration request) { if (request == null) { throw new ArgumentNullException("request"); } Message enumerationRequest = null; lock (request) { enumerationRequest = Message.CreateMessage(MessageVersion.Default, Constants.WsEnumeration.EnumerateAction, request, new ClientSerializer(typeof(RequestEnumeration))); } return(enumerationRequest); }
public bool MoveNext() { lock (this.client) { if (resultIndex < results.Count) { this.current = results[resultIndex++]; return(true); } else { ResponsePull response; if (this.context == null) { if (resultIndex > 0) { // case: previous pull returned an invalid context return(false); } RequestEnumeration request = new RequestEnumeration(filter); if (attributes != null) { request.Selection = new List <string>(); request.Selection.AddRange(this.attributes); } Message msgRequest = requestFactory.CreateEnumerationRequest(request); Message msgResponse = client.Enumerate(msgRequest); if (msgResponse.IsFault) { ClientHelper.HandleFault(msgResponse); } response = responseFactory.CreateEnumerationResponse(msgResponse); this.endOfSequence = response.EndOfSequence != null; } else { if (this.endOfSequence == true) { // case: previous pull returned an end of sequence flag this.current = null; return(false); } RequestPull request = new RequestPull(); request.EnumerationContext = this.context; Message msgRequest = requestFactory.CreatePullRequest(request); Message msgResponse = client.Pull(msgRequest); if (msgResponse.IsFault) { ClientHelper.HandleFault(msgResponse); } response = responseFactory.CreatePullResponse(msgResponse); } if (response == null) { return(false); } resultIndex = 0; this.results = resourceFactory.CreateResource(response, false).ConvertAll <RmResource>(x => x as RmResource); this.context = response.EnumerationContext; this.endOfSequence = response.IsEndOfSequence; if (this.results.Count > 0) { this.current = results[resultIndex++]; return(true); } else { this.current = null; return(false); } } } }