protected override void AsyncEndGetResponse(IAsyncResult asyncResult) { BaseAsyncResult.AsyncStateBag asyncState = asyncResult.AsyncState as BaseAsyncResult.AsyncStateBag; BaseAsyncResult.PerRequest request = (asyncState == null) ? null : asyncState.PerRequest; DataServiceContext context = (asyncState == null) ? null : asyncState.Context; try { this.CompleteCheck(request, InternalError.InvalidEndGetResponseCompleted); request.SetRequestCompletedSynchronously(asyncResult.CompletedSynchronously); BaseAsyncResult.EqualRefCheck(base.perRequest, request, InternalError.InvalidEndGetResponse); ODataRequestMessageWrapper wrapper = Util.NullCheck <ODataRequestMessageWrapper>(request.Request, InternalError.InvalidEndGetResponseRequest); HttpWebResponse response = null; response = WebUtil.EndGetResponse(wrapper, asyncResult, context); request.HttpWebResponse = Util.NullCheck <HttpWebResponse>(response, InternalError.InvalidEndGetResponseResponse); if (!this.IsBatch) { this.HandleOperationResponse(response); this.HandleOperationResponseHeaders(response.StatusCode, WebUtil.WrapResponseHeaders(response)); } Stream responseStream = WebUtil.GetResponseStream(response, context); request.ResponseStream = responseStream; if ((responseStream != null) && responseStream.CanRead) { if (this.buildBatchBuffer == null) { this.buildBatchBuffer = new byte[0x1f40]; } do { asyncResult = BaseAsyncResult.InvokeAsync(new BaseAsyncResult.AsyncAction(responseStream.BeginRead), this.buildBatchBuffer, 0, this.buildBatchBuffer.Length, new AsyncCallback(this.AsyncEndRead), new AsyncReadState(request)); request.SetRequestCompletedSynchronously(asyncResult.CompletedSynchronously); }while (((asyncResult.CompletedSynchronously && !request.RequestCompleted) && !base.IsCompletedInternally) && responseStream.CanRead); } else { request.SetComplete(); if (!base.IsCompletedInternally && !request.RequestCompletedSynchronously) { this.FinishCurrentChange(request); } } } catch (Exception exception) { if (base.HandleFailure(request, exception)) { throw; } } finally { this.HandleCompleted(request); } }
protected override void AsyncEndGetResponse(IAsyncResult asyncResult) { try { base.SetCompletedSynchronously(asyncResult.CompletedSynchronously); ODataRequestMessageWrapper request = Util.NullCheck <ODataRequestMessageWrapper>(this.requestMessage, InternalError.InvalidEndGetResponseRequest); HttpWebResponse webResponse = null; webResponse = WebUtil.EndGetResponse(request, asyncResult, (DataServiceContext)base.Source); this.SetHttpWebResponse(webResponse); base.SetCompleted(); } catch (Exception exception) { if (base.HandleFailure(exception)) { throw; } } finally { base.HandleCompleted(); } }
protected override void AsyncEndGetResponse(IAsyncResult asyncResult) { BaseAsyncResult.AsyncStateBag asyncState = asyncResult.AsyncState as BaseAsyncResult.AsyncStateBag; BaseAsyncResult.PerRequest request = (asyncState == null) ? null : asyncState.PerRequest; DataServiceContext context = (asyncState == null) ? null : asyncState.Context; try { if (base.IsAborted) { if (request != null) { request.SetComplete(); } base.SetCompleted(); } else { this.CompleteCheck(request, InternalError.InvalidEndGetResponseCompleted); request.SetRequestCompletedSynchronously(asyncResult.CompletedSynchronously); base.SetCompletedSynchronously(asyncResult.CompletedSynchronously); HttpWebResponse response = WebUtil.EndGetResponse(Util.NullCheck <ODataRequestMessageWrapper>(request.Request, InternalError.InvalidEndGetResponseRequest), asyncResult, context); request.HttpWebResponse = Util.NullCheck <HttpWebResponse>(response, InternalError.InvalidEndGetResponseResponse); this.SetHttpWebResponse(request.HttpWebResponse); Stream responseStream = null; if (HttpStatusCode.NoContent != response.StatusCode) { responseStream = WebUtil.GetResponseStream(response, context); request.ResponseStream = responseStream; } if ((responseStream != null) && responseStream.CanRead) { if (this.outputResponseStream == null) { this.outputResponseStream = Util.NullCheck <Stream>(this.GetAsyncResponseStreamCopy(), InternalError.InvalidAsyncResponseStreamCopy); } if (this.asyncStreamCopyBuffer == null) { this.asyncStreamCopyBuffer = Util.NullCheck <byte[]>(this.GetAsyncResponseStreamCopyBuffer(), InternalError.InvalidAsyncResponseStreamCopyBuffer); } this.ReadResponseStream(asyncState); } else { request.SetComplete(); base.SetCompleted(); } } } catch (Exception exception) { if (base.HandleFailure(exception)) { throw; } } finally { this.HandleCompleted(request); } }