public ReadBufferState(byte[] buffer, int offset, int count, HttpStreamAsyncResult ares) { Buffer = buffer; Offset = offset; Count = count; InitialCount = count; Ares = ares; }
public ReadBufferState(byte[] buffer, int offset, int count, HttpStreamAsyncResult asyncResult) { _buffer = buffer; _offset = offset; _count = count; _initialCount = count; _asyncResult = asyncResult; }
public ReadBufferState ( byte [] buffer, int offset, int count, HttpStreamAsyncResult ares) { Buffer = buffer; Offset = offset; Count = count; InitialCount = count; Ares = ares; }
public override IAsyncResult BeginRead (byte [] buffer, int offset, int count, AsyncCallback cback, object state) { if (disposed) throw new ObjectDisposedException (typeof (RequestStream).ToString ()); int nread = FillFromBuffer (buffer, offset, count); if (nread > 0 || nread == -1) { HttpStreamAsyncResult ares = new HttpStreamAsyncResult (); ares.Buffer = buffer; ares.Offset = offset; ares.Count = count; ares.Callback = cback; ares.State = state; ares.SynchRead = System.Math.Max (0, nread); ares.Complete (); return ares; } // Avoid reading past the end of the request to allow // for HTTP pipelining if (remaining_body >= 0 && count > remaining_body) count = (int) System.Math.Min (Int32.MaxValue, remaining_body); return stream.BeginRead (buffer, offset, count, cback, state); }
public override IAsyncResult BeginRead ( byte [] buffer, int offset, int count, AsyncCallback cback, object state) { if (disposed) throw new ObjectDisposedException (GetType ().ToString ()); if (buffer == null) throw new ArgumentNullException ("buffer"); int len = buffer.Length; if (offset < 0 || offset > len) throw new ArgumentOutOfRangeException ("offset exceeds the size of buffer"); if (count < 0 || offset > len - count) throw new ArgumentOutOfRangeException ("offset+size exceeds the size of buffer"); HttpStreamAsyncResult ares = new HttpStreamAsyncResult (); ares.Callback = cback; ares.State = state; if (no_more_data) { ares.Complete (); return ares; } int nread = decoder.Read (buffer, offset, count); offset += nread; count -= nread; if (count == 0) { // got all we wanted, no need to bother the decoder yet ares.Count = nread; ares.Complete (); return ares; } if (!decoder.WantMore) { no_more_data = nread == 0; ares.Count = nread; ares.Complete (); return ares; } ares.Buffer = new byte [8192]; ares.Offset = 0; ares.Count = 8192; ReadBufferState rb = new ReadBufferState (buffer, offset, count, ares); rb.InitialCount += nread; base.BeginRead (ares.Buffer, ares.Offset, ares.Count, OnRead, rb); return ares; }
public new IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback cback, object state) { if (_disposed) throw new ObjectDisposedException(typeof(RequestStream).ToString()); var nread = FillFromBuffer(buffer, offset, count); if (nread > 0 || nread == -1) { var ares = new HttpStreamAsyncResult { Buffer = buffer, Offset = offset, Count = count, Callback = cback, State = state, SynchRead = Math.Max(0, nread) }; ares.Complete(); return ares; } // Avoid reading past the end of the request to allow // for HTTP pipelining if (_remainingBody >= 0 && count > _remainingBody) count = (int)Math.Min(int.MaxValue, _remainingBody); return _stream.BeginRead(buffer, offset, count, cback, state); }