| Index: net/quic/chromium/quic_chromium_client_stream.h
|
| diff --git a/net/quic/chromium/quic_chromium_client_stream.h b/net/quic/chromium/quic_chromium_client_stream.h
|
| index e8d05e96ba88735e189821e65d50ed7db657cef2..9192d5cc3ff368297897919c398ab965566fa7c1 100644
|
| --- a/net/quic/chromium/quic_chromium_client_stream.h
|
| +++ b/net/quic/chromium/quic_chromium_client_stream.h
|
| @@ -39,10 +39,6 @@ class NET_EXPORT_PRIVATE QuicChromiumClientStream : public QuicSpdyStream {
|
| public:
|
| Delegate() {}
|
|
|
| - // Called when initial headers are available.
|
| - virtual void OnInitialHeadersAvailable(const SpdyHeaderBlock& headers,
|
| - size_t frame_len) = 0;
|
| -
|
| // Called when trailing headers are available.
|
| virtual void OnTrailingHeadersAvailable(const SpdyHeaderBlock& headers,
|
| size_t frame_len) = 0;
|
| @@ -71,6 +67,15 @@ class NET_EXPORT_PRIVATE QuicChromiumClientStream : public QuicSpdyStream {
|
| // Returns true if the stream is still connected.
|
| bool IsOpen() { return stream_ != nullptr; }
|
|
|
| + // Reads initial headers into |header_block| and returns the length of
|
| + // the HEADERS frame which contained them. If headers are not available,
|
| + // returns ERR_IO_PENDING and will invoke |callback| asynchronously when
|
| + // the headers arrive.
|
| + // TODO(rch): Invoke |callback| when there is a stream or connection error
|
| + // instead of calling OnClose() or OnError().
|
| + int ReadInitialHeaders(SpdyHeaderBlock* header_block,
|
| + const CompletionCallback& callback);
|
| +
|
| // Writes |header_block| to the peer. Closes the write side if |fin| is
|
| // true. If non-null, |ack_notifier_delegate| will be notified when the
|
| // headers are ACK'd by the peer.
|
| @@ -142,8 +147,7 @@ class NET_EXPORT_PRIVATE QuicChromiumClientStream : public QuicSpdyStream {
|
| Handle(QuicChromiumClientStream* stream, Delegate* delegate);
|
|
|
| // Methods invoked by the stream.
|
| - void OnInitialHeadersAvailable(const SpdyHeaderBlock& headers,
|
| - size_t frame_len);
|
| + void OnInitialHeadersAvailable();
|
| void OnTrailingHeadersAvailable(const SpdyHeaderBlock& headers,
|
| size_t frame_len);
|
| void OnDataAvailable();
|
| @@ -156,6 +160,9 @@ class NET_EXPORT_PRIVATE QuicChromiumClientStream : public QuicSpdyStream {
|
| QuicChromiumClientStream* stream_; // Unowned.
|
| Delegate* delegate_; // Owns this.
|
|
|
| + CompletionCallback read_headers_callback_;
|
| + SpdyHeaderBlock* read_headers_buffer_;
|
| +
|
| QuicStreamId id_;
|
| QuicErrorCode connection_error_;
|
| QuicRstStreamErrorCode stream_error_;
|
| @@ -234,14 +241,14 @@ class NET_EXPORT_PRIVATE QuicChromiumClientStream : public QuicSpdyStream {
|
| // True if this stream is the first data stream created on this session.
|
| bool IsFirstStream();
|
|
|
| + bool DeliverInitialHeaders(SpdyHeaderBlock* header_block, int* frame_len);
|
| +
|
| using QuicSpdyStream::HasBufferedData;
|
| using QuicStream::sequencer;
|
|
|
| private:
|
| - void NotifyHandleOfInitialHeadersAvailableLater(SpdyHeaderBlock headers,
|
| - size_t frame_len);
|
| - void NotifyHandleOfInitialHeadersAvailable(SpdyHeaderBlock headers,
|
| - size_t frame_len);
|
| + void NotifyHandleOfInitialHeadersAvailableLater();
|
| + void NotifyHandleOfInitialHeadersAvailable();
|
| void NotifyHandleOfTrailingHeadersAvailableLater(SpdyHeaderBlock headers,
|
| size_t frame_len);
|
| void NotifyHandleOfTrailingHeadersAvailable(SpdyHeaderBlock headers,
|
|
|