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 e512b457b9a8126c425b76047aa182ee0871f3c5..e95d47840629d81a4c5940db3c8f7877a47ce6a0 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 trailing headers are available. |
- virtual void OnTrailingHeadersAvailable(const SpdyHeaderBlock& headers, |
- size_t frame_len) = 0; |
- |
// Called when the stream is closed by the peer. |
virtual void OnClose() = 0; |
@@ -82,6 +78,15 @@ class NET_EXPORT_PRIVATE QuicChromiumClientStream : public QuicSpdyStream { |
int buffer_len, |
const CompletionCallback& callback); |
+ // Reads trailing 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 ReadTrailingHeaders(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. |
@@ -154,8 +159,7 @@ class NET_EXPORT_PRIVATE QuicChromiumClientStream : public QuicSpdyStream { |
// Methods invoked by the stream. |
void OnInitialHeadersAvailable(); |
- void OnTrailingHeadersAvailable(const SpdyHeaderBlock& headers, |
- size_t frame_len); |
+ void OnTrailingHeadersAvailable(); |
void OnDataAvailable(); |
void OnCanWrite(); |
void OnClose(); |
@@ -260,16 +264,16 @@ class NET_EXPORT_PRIVATE QuicChromiumClientStream : public QuicSpdyStream { |
bool DeliverInitialHeaders(SpdyHeaderBlock* header_block, int* frame_len); |
+ bool DeliverTrailingHeaders(SpdyHeaderBlock* header_block, int* frame_len); |
+ |
using QuicSpdyStream::HasBufferedData; |
using QuicStream::sequencer; |
private: |
void NotifyHandleOfInitialHeadersAvailableLater(); |
void NotifyHandleOfInitialHeadersAvailable(); |
- void NotifyHandleOfTrailingHeadersAvailableLater(SpdyHeaderBlock headers, |
- size_t frame_len); |
- void NotifyHandleOfTrailingHeadersAvailable(SpdyHeaderBlock headers, |
- size_t frame_len); |
+ void NotifyHandleOfTrailingHeadersAvailableLater(); |
+ void NotifyHandleOfTrailingHeadersAvailable(); |
void NotifyHandleOfDataAvailableLater(); |
void NotifyHandleOfDataAvailable(); |
@@ -291,6 +295,9 @@ class NET_EXPORT_PRIVATE QuicChromiumClientStream : public QuicSpdyStream { |
// Length of the HEADERS frame containing initial headers. |
size_t initial_headers_frame_len_; |
+ // Length of the HEADERS frame containing trailing headers. |
+ size_t trailing_headers_frame_len_; |
+ |
base::WeakPtrFactory<QuicChromiumClientStream> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(QuicChromiumClientStream); |