示例#1
0
        internal void BatchRequest()
        {
            ODataRequestMessageWrapper request = this.GenerateBatchRequest();

            if (request != null)
            {
                request.SetContentLengthHeader();
                MemoryStream       cachedRequestStream = request.CachedRequestStream;
                DataServiceContext source = (DataServiceContext)base.Source;
                using (Stream stream2 = WebUtil.GetRequestStream(request, source))
                {
                    byte[] buffer   = cachedRequestStream.GetBuffer();
                    int    position = (int)cachedRequestStream.Position;
                    int    count    = ((int)cachedRequestStream.Length) - position;
                    stream2.Write(buffer, position, count);
                }
                try
                {
                    base.batchResponse = WebUtil.GetResponse(request, source, false);
                }
                catch (WebException exception)
                {
                    WebUtil.GetHttpWebResponse(exception, ref this.batchResponse);
                    throw;
                }
                finally
                {
                    if (base.batchResponse != null)
                    {
                        this.responseStream = WebUtil.GetResponseStream(base.batchResponse, source);
                    }
                }
            }
        }
示例#2
0
        internal void CreateNextChange()
        {
            ODataRequestMessageWrapper requestMessage = null;

            do
            {
                HttpWebResponse response = null;
                try
                {
                    requestMessage = this.CreateNextRequest();
                    if (((requestMessage != null) || (base.entryIndex < base.ChangedEntries.Count)) && !base.ChangedEntries[base.entryIndex].ContentGeneratedForSave)
                    {
                        BaseAsyncResult.ContentStream stream = this.CreateNonBatchChangeData(base.entryIndex, requestMessage);
                        if ((stream != null) && (stream.Stream != null))
                        {
                            if (stream.IsKnownMemoryStream)
                            {
                                requestMessage.SetContentLengthHeader();
                            }
                            using (Stream stream2 = WebUtil.GetRequestStream(requestMessage, (DataServiceContext)base.Source))
                            {
                                int    num;
                                byte[] buffer = new byte[0x10000];
                                do
                                {
                                    num = stream.Stream.Read(buffer, 0, buffer.Length);
                                    if (num > 0)
                                    {
                                        stream2.Write(buffer, 0, num);
                                    }
                                }while (num > 0);
                            }
                        }
                        response = WebUtil.GetResponse(requestMessage, (DataServiceContext)base.Source, false);
                        this.HandleOperationResponse(response);
                        base.HandleOperationResponseHeaders(response.StatusCode, WebUtil.WrapResponseHeaders(response));
                        this.HandleOperationResponseData(response);
                        base.perRequest = null;
                    }
                }
                catch (InvalidOperationException exception)
                {
                    WebUtil.GetHttpWebResponse(exception, ref response);
                    this.HandleOperationException(exception, response);
                }
                finally
                {
                    if (response != null)
                    {
                        response.Close();
                    }
                }
            }while ((base.entryIndex < base.ChangedEntries.Count) && !base.IsCompletedInternally);
        }
示例#3
0
 internal DataServiceStreamResponse Execute()
 {
     try
     {
         HttpWebResponse webResponse = null;
         webResponse = WebUtil.GetResponse(this.requestMessage, (DataServiceContext)base.Source, true);
         this.SetHttpWebResponse(webResponse);
     }
     catch (Exception exception)
     {
         base.HandleFailure(exception);
         throw;
     }
     finally
     {
         base.SetCompleted();
         this.CompletedRequest();
     }
     if (base.Failure != null)
     {
         throw base.Failure;
     }
     return(this.End());
 }
示例#4
0
 internal void ExecuteQuery(DataServiceContext context)
 {
     try
     {
         if ((this.requestContentStream != null) && (this.requestContentStream.Stream != null))
         {
             if (this.requestContentStream.IsKnownMemoryStream)
             {
                 this.Request.SetContentLengthHeader();
             }
             using (Stream stream = WebUtil.GetRequestStream(this.Request, context))
             {
                 int    num;
                 byte[] buffer = new byte[0x10000];
                 do
                 {
                     num = this.requestContentStream.Stream.Read(buffer, 0, buffer.Length);
                     if (num > 0)
                     {
                         stream.Write(buffer, 0, num);
                     }
                 }while (num > 0);
             }
         }
         HttpWebResponse response = null;
         response = WebUtil.GetResponse(this.Request, context, true);
         this.SetHttpWebResponse(Util.NullCheck <HttpWebResponse>(response, InternalError.InvalidGetResponse));
         if (HttpStatusCode.NoContent != this.StatusCode)
         {
             using (Stream stream2 = WebUtil.GetResponseStream(this.httpWebResponse, context))
             {
                 if (stream2 != null)
                 {
                     Stream asyncResponseStreamCopy = this.GetAsyncResponseStreamCopy();
                     this.outputResponseStream = asyncResponseStreamCopy;
                     byte[] asyncResponseStreamCopyBuffer = this.GetAsyncResponseStreamCopyBuffer();
                     long   num2 = WebUtil.CopyStream(stream2, asyncResponseStreamCopy, ref asyncResponseStreamCopyBuffer);
                     if (this.responseStreamOwner)
                     {
                         if (0L == num2)
                         {
                             this.outputResponseStream = null;
                         }
                         else if (asyncResponseStreamCopy.Position < asyncResponseStreamCopy.Length)
                         {
                             ((MemoryStream)asyncResponseStreamCopy).SetLength(asyncResponseStreamCopy.Position);
                         }
                     }
                     this.PutAsyncResponseStreamCopyBuffer(asyncResponseStreamCopyBuffer);
                 }
             }
         }
     }
     catch (Exception exception)
     {
         base.HandleFailure(exception);
         throw;
     }
     finally
     {
         base.SetCompleted();
         this.CompletedRequest();
     }
     if (base.Failure != null)
     {
         throw base.Failure;
     }
 }