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 // A QuicSession, which demuxes a single connection to individual streams. | 5 // A QuicSession, which demuxes a single connection to individual streams. |
6 | 6 |
7 #ifndef NET_QUIC_QUIC_SESSION_H_ | 7 #ifndef NET_QUIC_QUIC_SESSION_H_ |
8 #define NET_QUIC_QUIC_SESSION_H_ | 8 #define NET_QUIC_QUIC_SESSION_H_ |
9 | 9 |
10 #include <map> | 10 #include <map> |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 // the server and thus the encryption key has been updated. Therefore the | 46 // the server and thus the encryption key has been updated. Therefore the |
47 // connection should resend any packets that were sent under | 47 // connection should resend any packets that were sent under |
48 // ENCRYPTION_INITIAL. (Client only.) | 48 // ENCRYPTION_INITIAL. (Client only.) |
49 ENCRYPTION_REESTABLISHED, | 49 ENCRYPTION_REESTABLISHED, |
50 // HANDSHAKE_CONFIRMED, in a client, indicates the the server has accepted | 50 // HANDSHAKE_CONFIRMED, in a client, indicates the the server has accepted |
51 // our handshake. In a server it indicates that a full, valid client hello | 51 // our handshake. In a server it indicates that a full, valid client hello |
52 // has been received. (Client and server.) | 52 // has been received. (Client and server.) |
53 HANDSHAKE_CONFIRMED, | 53 HANDSHAKE_CONFIRMED, |
54 }; | 54 }; |
55 | 55 |
| 56 // Takes ownership of |connection|. |
56 QuicSession(QuicConnection* connection, const QuicConfig& config); | 57 QuicSession(QuicConnection* connection, const QuicConfig& config); |
57 | 58 |
58 ~QuicSession() override; | 59 ~QuicSession() override; |
59 | 60 |
60 virtual void Initialize(); | 61 virtual void Initialize(); |
61 | 62 |
62 // QuicConnectionVisitorInterface methods: | 63 // QuicConnectionVisitorInterface methods: |
63 void OnStreamFrame(const QuicStreamFrame& frame) override; | 64 void OnStreamFrame(const QuicStreamFrame& frame) override; |
64 void OnRstStream(const QuicRstStreamFrame& frame) override; | 65 void OnRstStream(const QuicRstStreamFrame& frame) override; |
65 void OnGoAway(const QuicGoAwayFrame& frame) override; | 66 void OnGoAway(const QuicGoAwayFrame& frame) override; |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 // Return the reserved crypto stream. | 219 // Return the reserved crypto stream. |
219 virtual QuicCryptoStream* GetCryptoStream() = 0; | 220 virtual QuicCryptoStream* GetCryptoStream() = 0; |
220 | 221 |
221 // Adds 'stream' to the active stream map. | 222 // Adds 'stream' to the active stream map. |
222 virtual void ActivateStream(ReliableQuicStream* stream); | 223 virtual void ActivateStream(ReliableQuicStream* stream); |
223 | 224 |
224 // Returns the stream ID for a new outgoing stream, and increments the | 225 // Returns the stream ID for a new outgoing stream, and increments the |
225 // underlying counter. | 226 // underlying counter. |
226 QuicStreamId GetNextOutgoingStreamId(); | 227 QuicStreamId GetNextOutgoingStreamId(); |
227 | 228 |
228 ReliableQuicStream* GetIncomingDynamicStream(QuicStreamId stream_id); | 229 // Returns existing stream with id = |stream_id|. If no such stream exists, |
229 | 230 // and |stream_id| is a peer-created id, then a new stream is created and |
230 ReliableQuicStream* GetDynamicStream(const QuicStreamId stream_id); | 231 // returned. However if |stream_id| is a locally-created id and no such stream |
| 232 // exists, the connection is closed. |
| 233 ReliableQuicStream* GetOrCreateDynamicStream(QuicStreamId stream_id); |
231 | 234 |
232 // This is called after every call other than OnConnectionClose from the | 235 // This is called after every call other than OnConnectionClose from the |
233 // QuicConnectionVisitor to allow post-processing once the work has been done. | 236 // QuicConnectionVisitor to allow post-processing once the work has been done. |
234 // In this case, it deletes streams given that it's safe to do so (no other | 237 // In this case, it deletes streams given that it's safe to do so (no other |
235 // operations are being done on the streams at this time) | 238 // operations are being done on the streams at this time) |
236 virtual void PostProcessAfterData(); | 239 virtual void PostProcessAfterData(); |
237 | 240 |
238 StreamMap& static_streams() { return static_stream_map_; } | 241 StreamMap& static_streams() { return static_stream_map_; } |
239 const StreamMap& static_streams() const { return static_stream_map_; } | 242 const StreamMap& static_streams() const { return static_stream_map_; } |
240 | 243 |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 | 337 |
335 // Indicate if there is pending data for the crypto stream. | 338 // Indicate if there is pending data for the crypto stream. |
336 bool has_pending_handshake_; | 339 bool has_pending_handshake_; |
337 | 340 |
338 DISALLOW_COPY_AND_ASSIGN(QuicSession); | 341 DISALLOW_COPY_AND_ASSIGN(QuicSession); |
339 }; | 342 }; |
340 | 343 |
341 } // namespace net | 344 } // namespace net |
342 | 345 |
343 #endif // NET_QUIC_QUIC_SESSION_H_ | 346 #endif // NET_QUIC_QUIC_SESSION_H_ |
OLD | NEW |