OLD | NEW |
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 // The base class for client/server reliable streams. | 5 // The base class for client/server reliable streams. |
6 | 6 |
7 // It does not contain the entire interface needed by an application to interact | 7 // It does not contain the entire interface needed by an application to interact |
8 // with a QUIC stream. Some parts of the interface must be obtained by | 8 // with a QUIC stream. Some parts of the interface must be obtained by |
9 // accessing the owning session object. A subclass of ReliableQuicStream | 9 // accessing the owning session object. A subclass of ReliableQuicStream |
10 // connects the object and the application that generates and consumes the data | 10 // connects the object and the application that generates and consumes the data |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 bool fin_received() const { return fin_received_; } | 162 bool fin_received() const { return fin_received_; } |
163 | 163 |
164 // Sets the sequencer to consume all incoming data itself and not call | 164 // Sets the sequencer to consume all incoming data itself and not call |
165 // OnDataAvailable(). | 165 // OnDataAvailable(). |
166 // When the FIN is received, the stream will be notified automatically (via | 166 // When the FIN is received, the stream will be notified automatically (via |
167 // OnFinRead()) (which may happen during the call of StopReading()). | 167 // OnFinRead()) (which may happen during the call of StopReading()). |
168 // TODO(dworley): There should be machinery to send a RST_STREAM/NO_ERROR and | 168 // TODO(dworley): There should be machinery to send a RST_STREAM/NO_ERROR and |
169 // stop sending stream-level flow-control updates when this end sends FIN. | 169 // stop sending stream-level flow-control updates when this end sends FIN. |
170 virtual void StopReading(); | 170 virtual void StopReading(); |
171 | 171 |
| 172 // Get peer IP of the lastest packet which connection is dealing/delt with. |
| 173 virtual const IPEndPoint& PeerAddressOfLatestPacket() const; |
| 174 |
172 protected: | 175 protected: |
173 // Sends as much of 'data' to the connection as the connection will consume, | 176 // Sends as much of 'data' to the connection as the connection will consume, |
174 // and then buffers any remaining data in queued_data_. | 177 // and then buffers any remaining data in queued_data_. |
175 // If fin is true: if it is immediately passed on to the session, | 178 // If fin is true: if it is immediately passed on to the session, |
176 // write_side_closed() becomes true, otherwise fin_buffered_ becomes true. | 179 // write_side_closed() becomes true, otherwise fin_buffered_ becomes true. |
177 void WriteOrBufferData(base::StringPiece data, | 180 void WriteOrBufferData(base::StringPiece data, |
178 bool fin, | 181 bool fin, |
179 QuicAckListenerInterface* ack_listener); | 182 QuicAckListenerInterface* ack_listener); |
180 | 183 |
181 // Sends as many bytes in the first |count| buffers of |iov| to the connection | 184 // Sends as many bytes in the first |count| buffers of |iov| to the connection |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 // connection level flow control limits (but are stream level flow control | 295 // connection level flow control limits (but are stream level flow control |
293 // limited). | 296 // limited). |
294 bool stream_contributes_to_connection_flow_control_; | 297 bool stream_contributes_to_connection_flow_control_; |
295 | 298 |
296 DISALLOW_COPY_AND_ASSIGN(ReliableQuicStream); | 299 DISALLOW_COPY_AND_ASSIGN(ReliableQuicStream); |
297 }; | 300 }; |
298 | 301 |
299 } // namespace net | 302 } // namespace net |
300 | 303 |
301 #endif // NET_QUIC_RELIABLE_QUIC_STREAM_H_ | 304 #endif // NET_QUIC_RELIABLE_QUIC_STREAM_H_ |
OLD | NEW |