| Index: net/quic/quic_chromium_client_session.h
|
| diff --git a/net/quic/quic_chromium_client_session.h b/net/quic/quic_chromium_client_session.h
|
| index 72424c2c026daa009434afe73dc1d5e978c4d544..b8fec03d26301e09eb7203affd26ee801a4323d7 100644
|
| --- a/net/quic/quic_chromium_client_session.h
|
| +++ b/net/quic/quic_chromium_client_session.h
|
| @@ -174,7 +174,7 @@ class NET_EXPORT_PRIVATE QuicChromiumClientSession
|
| void OnSuccessfulVersionNegotiation(const QuicVersion& version) override;
|
|
|
| // QuicPacketReader::Visitor methods:
|
| - void OnReadError(int result) override;
|
| + void OnReadError(int result, const DatagramClientSocket* socket) override;
|
| bool OnPacket(const QuicEncryptedPacket& packet,
|
| IPEndPoint local_address,
|
| IPEndPoint peer_address) override;
|
| @@ -189,7 +189,7 @@ class NET_EXPORT_PRIVATE QuicChromiumClientSession
|
| // Resumes a crypto handshake with the server after a timeout.
|
| int ResumeCryptoConnect(const CompletionCallback& callback);
|
|
|
| - // Causes the QuicConnectionHelper to start reading from the socket
|
| + // Causes the QuicConnectionHelper to start reading from all sockets
|
| // and passing the data along to the QuicConnection.
|
| void StartReading();
|
|
|
| @@ -222,6 +222,21 @@ class NET_EXPORT_PRIVATE QuicChromiumClientSession
|
|
|
| QuicDisabledReason disabled_reason() const { return disabled_reason_; }
|
|
|
| + // Migrates session onto new socket, i.e., starts reading from |socket|
|
| + // in addition to any previous sockets, and sets |writer| to be the new
|
| + // default writer. Returns true if socket was successfully added to the
|
| + // session and the session was successfully migrated to using the new socket.
|
| + // Returns false if number of migrations exceeds kMaxReadersPerQuicSession.
|
| + // Takes ownership of |socket|, |reader|, and |writer|.
|
| + bool MigrateToSocket(scoped_ptr<DatagramClientSocket> socket,
|
| + scoped_ptr<QuicPacketReader> reader,
|
| + scoped_ptr<QuicPacketWriter> writer);
|
| +
|
| + // Returns current default socket. This is the socket over which all
|
| + // QUIC packets are sent. This default socket can change, so do not store the
|
| + // returned socket.
|
| + const DatagramClientSocket* GetDefaultSocket() const;
|
| +
|
| protected:
|
| // QuicSession methods:
|
| QuicSpdyStream* CreateIncomingDynamicStream(QuicStreamId id) override;
|
| @@ -271,7 +286,7 @@ class NET_EXPORT_PRIVATE QuicChromiumClientSession
|
| bool require_confirmation_;
|
| scoped_ptr<QuicCryptoClientStream> crypto_stream_;
|
| QuicStreamFactory* stream_factory_;
|
| - scoped_ptr<DatagramClientSocket> socket_;
|
| + std::vector<scoped_ptr<DatagramClientSocket>> sockets_;
|
| TransportSecurityState* transport_security_state_;
|
| scoped_ptr<QuicServerInfo> server_info_;
|
| scoped_ptr<CertVerifyResult> cert_verify_result_;
|
| @@ -283,7 +298,7 @@ class NET_EXPORT_PRIVATE QuicChromiumClientSession
|
| size_t num_total_streams_;
|
| base::TaskRunner* task_runner_;
|
| BoundNetLog net_log_;
|
| - QuicPacketReader packet_reader_;
|
| + std::vector<scoped_ptr<QuicPacketReader>> packet_readers_;
|
| base::TimeTicks dns_resolution_end_time_;
|
| base::TimeTicks handshake_start_; // Time the handshake was started.
|
| scoped_ptr<QuicConnectionLogger> logger_;
|
|
|