Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: net/quic/chromium/quic_chromium_client_stream.h

Issue 2877063002: Add an async ReadBody method to QuicChromiumClientStream::Handle (Closed)
Patch Set: format Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // NOTE: This code is not shared between Google and Chrome. 5 // NOTE: This code is not shared between Google and Chrome.
6 6
7 #ifndef NET_QUIC_CHROMIUM_QUIC_CHROMIUM_CLIENT_STREAM_H_ 7 #ifndef NET_QUIC_CHROMIUM_QUIC_CHROMIUM_CLIENT_STREAM_H_
8 #define NET_QUIC_CHROMIUM_QUIC_CHROMIUM_CLIENT_STREAM_H_ 8 #define NET_QUIC_CHROMIUM_QUIC_CHROMIUM_CLIENT_STREAM_H_
9 9
10 #include <stddef.h> 10 #include <stddef.h>
(...skipping 25 matching lines...) Expand all
36 // on the Handle. 36 // on the Handle.
37 // Delegate handles protocol specific behavior of a quic stream. 37 // Delegate handles protocol specific behavior of a quic stream.
38 class NET_EXPORT_PRIVATE Delegate { 38 class NET_EXPORT_PRIVATE Delegate {
39 public: 39 public:
40 Delegate() {} 40 Delegate() {}
41 41
42 // Called when trailing headers are available. 42 // Called when trailing headers are available.
43 virtual void OnTrailingHeadersAvailable(const SpdyHeaderBlock& headers, 43 virtual void OnTrailingHeadersAvailable(const SpdyHeaderBlock& headers,
44 size_t frame_len) = 0; 44 size_t frame_len) = 0;
45 45
46 // Called when data is available to be read.
47 virtual void OnDataAvailable() = 0;
48
49 // Called when the stream is closed by the peer. 46 // Called when the stream is closed by the peer.
50 virtual void OnClose() = 0; 47 virtual void OnClose() = 0;
51 48
52 // Called when the stream is closed because of an error. 49 // Called when the stream is closed because of an error.
53 virtual void OnError(int error) = 0; 50 virtual void OnError(int error) = 0;
54 51
55 protected: 52 protected:
56 virtual ~Delegate() {} 53 virtual ~Delegate() {}
57 54
58 private: 55 private:
(...skipping 10 matching lines...) Expand all
69 66
70 // Reads initial headers into |header_block| and returns the length of 67 // Reads initial headers into |header_block| and returns the length of
71 // the HEADERS frame which contained them. If headers are not available, 68 // the HEADERS frame which contained them. If headers are not available,
72 // returns ERR_IO_PENDING and will invoke |callback| asynchronously when 69 // returns ERR_IO_PENDING and will invoke |callback| asynchronously when
73 // the headers arrive. 70 // the headers arrive.
74 // TODO(rch): Invoke |callback| when there is a stream or connection error 71 // TODO(rch): Invoke |callback| when there is a stream or connection error
75 // instead of calling OnClose() or OnError(). 72 // instead of calling OnClose() or OnError().
76 int ReadInitialHeaders(SpdyHeaderBlock* header_block, 73 int ReadInitialHeaders(SpdyHeaderBlock* header_block,
77 const CompletionCallback& callback); 74 const CompletionCallback& callback);
78 75
76 // Reads at most |buffer_len| bytes of body into |buffer| and returns the
77 // number of bytes read. If body is not available, returns ERR_IO_PENDING
78 // and will invoke |callback| asynchronously when data arrive.
79 // TODO(rch): Invoke |callback| when there is a stream or connection error
80 // instead of calling OnClose() or OnError().
81 int ReadBody(IOBuffer* buffer,
82 int buffer_len,
83 const CompletionCallback& callback);
84
79 // Writes |header_block| to the peer. Closes the write side if |fin| is 85 // Writes |header_block| to the peer. Closes the write side if |fin| is
80 // true. If non-null, |ack_notifier_delegate| will be notified when the 86 // true. If non-null, |ack_notifier_delegate| will be notified when the
81 // headers are ACK'd by the peer. 87 // headers are ACK'd by the peer.
82 size_t WriteHeaders(SpdyHeaderBlock header_block, 88 size_t WriteHeaders(SpdyHeaderBlock header_block,
83 bool fin, 89 bool fin,
84 QuicReferenceCountedPointer<QuicAckListenerInterface> 90 QuicReferenceCountedPointer<QuicAckListenerInterface>
85 ack_notifier_delegate); 91 ack_notifier_delegate);
86 92
87 // Writes |data| to the peer. Closes the write side if |fin| is true. 93 // Writes |data| to the peer. Closes the write side if |fin| is true.
88 // If the data could not be written immediately, returns ERR_IO_PENDING 94 // If the data could not be written immediately, returns ERR_IO_PENDING
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 162
157 // Saves various fields from the stream before the stream goes away. 163 // Saves various fields from the stream before the stream goes away.
158 void SaveState(); 164 void SaveState();
159 165
160 QuicChromiumClientStream* stream_; // Unowned. 166 QuicChromiumClientStream* stream_; // Unowned.
161 Delegate* delegate_; // Owns this. 167 Delegate* delegate_; // Owns this.
162 168
163 CompletionCallback read_headers_callback_; 169 CompletionCallback read_headers_callback_;
164 SpdyHeaderBlock* read_headers_buffer_; 170 SpdyHeaderBlock* read_headers_buffer_;
165 171
172 CompletionCallback read_body_callback_;
173 IOBuffer* read_body_buffer_;
174 int read_body_buffer_len_;
175
166 QuicStreamId id_; 176 QuicStreamId id_;
167 QuicErrorCode connection_error_; 177 QuicErrorCode connection_error_;
168 QuicRstStreamErrorCode stream_error_; 178 QuicRstStreamErrorCode stream_error_;
169 bool fin_sent_; 179 bool fin_sent_;
170 bool fin_received_; 180 bool fin_received_;
171 uint64_t stream_bytes_read_; 181 uint64_t stream_bytes_read_;
172 uint64_t stream_bytes_written_; 182 uint64_t stream_bytes_written_;
173 bool is_done_reading_; 183 bool is_done_reading_;
174 bool is_first_stream_; 184 bool is_first_stream_;
175 size_t num_bytes_consumed_; 185 size_t num_bytes_consumed_;
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 size_t initial_headers_frame_len_; 289 size_t initial_headers_frame_len_;
280 290
281 base::WeakPtrFactory<QuicChromiumClientStream> weak_factory_; 291 base::WeakPtrFactory<QuicChromiumClientStream> weak_factory_;
282 292
283 DISALLOW_COPY_AND_ASSIGN(QuicChromiumClientStream); 293 DISALLOW_COPY_AND_ASSIGN(QuicChromiumClientStream);
284 }; 294 };
285 295
286 } // namespace net 296 } // namespace net
287 297
288 #endif // NET_QUIC_CHROMIUM_QUIC_CHROMIUM_CLIENT_STREAM_H_ 298 #endif // NET_QUIC_CHROMIUM_QUIC_CHROMIUM_CLIENT_STREAM_H_
OLDNEW
« no previous file with comments | « net/quic/chromium/bidirectional_stream_quic_impl_unittest.cc ('k') | net/quic/chromium/quic_chromium_client_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698