Chromium Code Reviews| 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 client specific QuicSession subclass. This class owns the underlying | 5 // A client specific QuicSession subclass. This class owns the underlying |
| 6 // QuicConnection and QuicConnectionHelper objects. The connection stores | 6 // QuicConnection and QuicConnectionHelper objects. The connection stores |
| 7 // a non-owning pointer to the helper so this session needs to ensure that | 7 // a non-owning pointer to the helper so this session needs to ensure that |
| 8 // the helper outlives the connection. | 8 // the helper outlives the connection. |
| 9 | 9 |
| 10 #ifndef NET_QUIC_CHROMIUM_QUIC_CHROMIUM_CLIENT_SESSION_H_ | 10 #ifndef NET_QUIC_CHROMIUM_QUIC_CHROMIUM_CLIENT_SESSION_H_ |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 59 namespace test { | 59 namespace test { |
| 60 class QuicChromiumClientSessionPeer; | 60 class QuicChromiumClientSessionPeer; |
| 61 } // namespace test | 61 } // namespace test |
| 62 | 62 |
| 63 class NET_EXPORT_PRIVATE QuicChromiumClientSession | 63 class NET_EXPORT_PRIVATE QuicChromiumClientSession |
| 64 : public QuicClientSessionBase, | 64 : public QuicClientSessionBase, |
| 65 public MultiplexedSession, | 65 public MultiplexedSession, |
| 66 public QuicChromiumPacketReader::Visitor, | 66 public QuicChromiumPacketReader::Visitor, |
| 67 public QuicChromiumPacketWriter::Delegate { | 67 public QuicChromiumPacketWriter::Delegate { |
| 68 public: | 68 public: |
| 69 // An interface for observing events on a session. | 69 class StreamRequest; |
| 70 class NET_EXPORT_PRIVATE Observer { | 70 |
| 71 // Wrapper for interacting with the session in a restricted fashion which | |
| 72 // hides the details of the underlying session's lifetime. All methods of | |
| 73 // the Handle are safe to use even after the underlying session is destroyed. | |
| 74 class NET_EXPORT_PRIVATE Handle : public MultiplexedSessionHandle { | |
|
xunjieli
2017/05/04 16:54:42
Can we disallow copy and assign for this class so
Ryan Hamilton
2017/05/05 03:50:24
Done.
| |
| 71 public: | 75 public: |
| 72 virtual ~Observer() {} | 76 explicit Handle(const base::WeakPtr<QuicChromiumClientSession>& session); |
| 73 virtual void OnCryptoHandshakeConfirmed() = 0; | 77 Handle(const Handle& other); |
| 74 virtual void OnSuccessfulVersionNegotiation(const QuicVersion& version) = 0; | 78 ~Handle(); |
| 75 virtual void OnSessionClosed(int error, bool port_migration_detected) = 0; | 79 |
| 80 // Returns true if the session is still connected. | |
| 81 bool IsConnected() const; | |
| 82 | |
| 83 // Returns true if the handshake has been confirmed. | |
| 84 // the handle is not valid. | |
|
xunjieli
2017/05/04 16:54:42
nit: delete the second line.
Ryan Hamilton
2017/05/05 03:50:25
Done.
| |
| 85 bool IsCryptoHandshakeConfirmed() const; | |
| 86 | |
| 87 // Returns a new stream request which can be used to create a new | |
| 88 // QUIC stream. If |requires_confirmation| is true, then the requested | |
| 89 // stream will not be created until the handshake as been confirmed. | |
|
xunjieli
2017/05/04 16:54:42
nit: s/as/has
Ryan Hamilton
2017/05/05 03:50:24
Removed this method completely. Yay! :)
| |
| 90 std::unique_ptr<StreamRequest> CreateStreamRequest( | |
| 91 bool requires_confirmation) const; | |
| 92 | |
| 93 // Sends Rst for the stream, and makes sure that future calls to | |
| 94 // IsClosedStream(id) return true, which ensures that any subsequent | |
| 95 // frames related to this stream will be ignored (modulo flow | |
| 96 // control accounting). | |
| 97 void ResetPromised(QuicStreamId id, QuicRstStreamErrorCode error_code); | |
| 98 | |
| 99 // Returns a new packet bundler while will cause writes to be batched up | |
| 100 // until a packet is full, or the last bundler is destroyed. | |
| 101 std::unique_ptr<QuicConnection::ScopedPacketBundler> CreatePacketBundler( | |
| 102 QuicConnection::AckBundling bundling_mode); | |
| 103 | |
| 104 // Populates network error details for this session. | |
| 105 void PopulateNetErrorDetails(NetErrorDetails* details) const; | |
| 106 | |
| 107 // Returns the connection timing for the handshake of this session. | |
| 108 const LoadTimingInfo::ConnectTiming& GetConnectTiming(); | |
| 109 | |
| 110 // Signs the exported keying material used for Token Binding using key | |
| 111 // |*key| and puts the signature in |*out|. Returns a net error code. | |
| 112 Error GetTokenBindingSignature(crypto::ECPrivateKey* key, | |
| 113 TokenBindingType tb_type, | |
| 114 std::vector<uint8_t>* out); | |
| 115 | |
| 116 // Returns true if |other| is a handle to the same session as this handle. | |
| 117 bool SharesSameSession(const Handle& other) const; | |
| 118 | |
| 119 // Returns the QUIC version used by the session. | |
| 120 QuicVersion GetQuicVersion() const; | |
| 121 | |
| 122 // Copies the remote udp address into |address| and returns a net error | |
| 123 // code. | |
| 124 int GetPeerAddress(IPEndPoint* address) const; | |
| 125 | |
| 126 // Returns the push promise index associated with the session. | |
| 127 QuicClientPushPromiseIndex* GetPushPromiseIndex(); | |
| 128 | |
| 129 // Returns the session's server ID. | |
| 130 QuicServerId server_id() const { return server_id_; } | |
| 131 | |
| 132 // Returns the session's net log. | |
| 133 const NetLogWithSource& net_log() const { return net_log_; } | |
| 134 | |
| 135 private: | |
| 136 friend class QuicChromiumClientSession; | |
| 137 friend class QuicChromiumClientSession::StreamRequest; | |
| 138 | |
| 139 // Waits for the handshake to be confirmed and invokes |callback| when | |
| 140 // that happens. If the handshake has already been confirmed, returns OK. | |
| 141 // If the connection has already been closed, returns a net error. If the | |
| 142 // connection closes before the handshake is confirmed, |callback| will | |
| 143 // be invoked with an error. | |
| 144 int WaitForHandshakeConfirmation(const CompletionCallback& callback); | |
| 145 | |
| 146 // Called when the handshake is confirmed. | |
| 147 void OnCryptoHandshakeConfirmed(); | |
| 148 | |
| 149 // Called when the session is closed with a net error. | |
| 150 void OnSessionClosed(int error, bool port_migration_detected); | |
| 151 | |
| 152 // Called by |request| to create a stream. | |
| 153 int TryCreateStream(StreamRequest* request); | |
| 154 | |
| 155 // Called by |request| to cancel stream request. | |
| 156 void CancelRequest(StreamRequest* request); | |
| 157 | |
| 158 base::WeakPtr<QuicChromiumClientSession> session_; | |
| 159 NetLogWithSource net_log_; | |
| 160 | |
| 161 // Information latched from the session when it is closed. | |
|
xunjieli
2017/05/04 16:54:42
nit: consider rephrasing "latched" to "saved" or s
Ryan Hamilton
2017/05/05 03:50:24
Heh, sure. "latched" is pretty common vocabulary i
| |
| 162 bool was_handshake_confirmed_; | |
| 163 int error_; | |
| 164 bool port_migration_detected_; | |
| 165 QuicServerId server_id_; | |
| 166 QuicVersion quic_version_; | |
| 167 LoadTimingInfo::ConnectTiming connect_timing_; | |
| 168 QuicClientPushPromiseIndex* push_promise_index_; | |
| 76 }; | 169 }; |
| 77 | 170 |
| 78 // A helper class used to manage a request to create a stream. | 171 // A helper class used to manage a request to create a stream. |
| 79 class NET_EXPORT_PRIVATE StreamRequest { | 172 class NET_EXPORT_PRIVATE StreamRequest { |
| 80 public: | 173 public: |
| 81 // Cancels any pending stream creation request and resets |stream_| if | 174 // Cancels any pending stream creation request and resets |stream_| if |
| 82 // it has not yet been released. | 175 // it has not yet been released. |
| 83 ~StreamRequest(); | 176 ~StreamRequest(); |
| 84 | 177 |
| 85 // Starts a request to create a stream. If OK is returned, then | 178 // Starts a request to create a stream. If OK is returned, then |
| 86 // |stream_| will be updated with the newly created stream. If | 179 // |stream_| will be updated with the newly created stream. If |
| 87 // ERR_IO_PENDING is returned, then when the request is eventuallly | 180 // ERR_IO_PENDING is returned, then when the request is eventuallly |
| 88 // complete |callback| will be called. | 181 // complete |callback| will be called. |
| 89 int StartRequest(const CompletionCallback& callback); | 182 int StartRequest(const CompletionCallback& callback); |
| 90 | 183 |
| 91 // Releases |stream_| to the caller | 184 // Releases |stream_| to the caller |
| 92 QuicChromiumClientStream* ReleaseStream(); | 185 QuicChromiumClientStream* ReleaseStream(); |
| 93 | 186 |
| 94 private: | 187 private: |
| 95 friend class QuicChromiumClientSession; | 188 friend class QuicChromiumClientSession; |
| 96 | 189 |
| 97 enum State { | 190 enum State { |
| 98 STATE_NONE, | 191 STATE_NONE, |
| 99 STATE_WAIT_FOR_CONFIRMATION, | 192 STATE_WAIT_FOR_CONFIRMATION, |
| 100 STATE_WAIT_FOR_CONFIRMATION_COMPLETE, | 193 STATE_WAIT_FOR_CONFIRMATION_COMPLETE, |
| 101 STATE_REQUEST_STREAM, | 194 STATE_REQUEST_STREAM, |
| 102 STATE_REQUEST_STREAM_COMPLETE, | 195 STATE_REQUEST_STREAM_COMPLETE, |
| 103 }; | 196 }; |
| 104 | 197 |
| 105 StreamRequest(const base::WeakPtr<QuicChromiumClientSession>& session, | 198 StreamRequest(QuicChromiumClientSession::Handle session, |
| 106 bool requires_confirmation); | 199 bool requires_confirmation); |
| 107 | 200 |
| 108 void OnIOComplete(int rv); | 201 void OnIOComplete(int rv); |
| 109 void DoCallback(int rv); | 202 void DoCallback(int rv); |
| 110 | 203 |
| 111 int DoLoop(int rv); | 204 int DoLoop(int rv); |
| 112 int DoWaitForConfirmation(); | 205 int DoWaitForConfirmation(); |
| 113 int DoWaitForConfirmationComplete(int rv); | 206 int DoWaitForConfirmationComplete(int rv); |
| 114 int DoRequestStream(); | 207 int DoRequestStream(); |
| 115 int DoRequestStreamComplete(int rv); | 208 int DoRequestStreamComplete(int rv); |
| 116 | 209 |
| 117 // Called by |session_| for an asynchronous request when the stream | 210 // Called by |session_| for an asynchronous request when the stream |
| 118 // request has finished successfully. | 211 // request has finished successfully. |
| 119 void OnRequestCompleteSuccess(QuicChromiumClientStream* stream); | 212 void OnRequestCompleteSuccess(QuicChromiumClientStream* stream); |
| 120 | 213 |
| 121 // Called by |session_| for an asynchronous request when the stream | 214 // Called by |session_| for an asynchronous request when the stream |
| 122 // request has finished with an error. Also called with ERR_ABORTED | 215 // request has finished with an error. Also called with ERR_ABORTED |
| 123 // if |session_| is destroyed while the stream request is still pending. | 216 // if |session_| is destroyed while the stream request is still pending. |
| 124 void OnRequestCompleteFailure(int rv); | 217 void OnRequestCompleteFailure(int rv); |
| 125 | 218 |
| 126 base::WeakPtr<QuicChromiumClientSession> session_; | 219 QuicChromiumClientSession::Handle session_; |
| 127 const bool requires_confirmation_; | 220 const bool requires_confirmation_; |
| 128 CompletionCallback callback_; | 221 CompletionCallback callback_; |
| 129 QuicChromiumClientStream* stream_; | 222 QuicChromiumClientStream* stream_; |
| 130 // For tracking how much time pending stream requests wait. | 223 // For tracking how much time pending stream requests wait. |
| 131 base::TimeTicks pending_start_time_; | 224 base::TimeTicks pending_start_time_; |
| 132 State next_state_; | 225 State next_state_; |
| 133 | 226 |
| 134 base::WeakPtrFactory<StreamRequest> weak_factory_; | 227 base::WeakPtrFactory<StreamRequest> weak_factory_; |
| 135 | 228 |
| 136 DISALLOW_COPY_AND_ASSIGN(StreamRequest); | 229 DISALLOW_COPY_AND_ASSIGN(StreamRequest); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 159 base::TimeTicks dns_resolution_end_time, | 252 base::TimeTicks dns_resolution_end_time, |
| 160 QuicClientPushPromiseIndex* push_promise_index, | 253 QuicClientPushPromiseIndex* push_promise_index, |
| 161 ServerPushDelegate* push_delegate, | 254 ServerPushDelegate* push_delegate, |
| 162 base::TaskRunner* task_runner, | 255 base::TaskRunner* task_runner, |
| 163 std::unique_ptr<SocketPerformanceWatcher> socket_performance_watcher, | 256 std::unique_ptr<SocketPerformanceWatcher> socket_performance_watcher, |
| 164 NetLog* net_log); | 257 NetLog* net_log); |
| 165 ~QuicChromiumClientSession() override; | 258 ~QuicChromiumClientSession() override; |
| 166 | 259 |
| 167 void Initialize() override; | 260 void Initialize() override; |
| 168 | 261 |
| 169 void AddObserver(Observer* observer); | 262 void AddHandle(Handle* handle); |
| 170 void RemoveObserver(Observer* observer); | 263 void RemoveHandle(Handle* handle); |
| 171 | 264 |
| 172 // Waits for the handshake to be confirmed and invokes |callback| when | 265 // Waits for the handshake to be confirmed and invokes |callback| when |
| 173 // that happens. If the handshake has already been confirmed, returns OK. | 266 // that happens. If the handshake has already been confirmed, returns OK. |
| 174 // If the connection has already been closed, returns a net error. If the | 267 // If the connection has already been closed, returns a net error. If the |
| 175 // connection closes before the handshake is confirmed, |callback| will | 268 // connection closes before the handshake is confirmed, |callback| will |
| 176 // be invoked with an error. | 269 // be invoked with an error. |
| 177 int WaitForHandshakeConfirmation(const CompletionCallback& callback); | 270 int WaitForHandshakeConfirmation(const CompletionCallback& callback); |
| 178 | 271 |
| 179 // Returns a new stream request which can be used to create a new | |
| 180 // QUIC stream. If |requires_confirmation| is true, then the requested | |
| 181 // stream will not be created until the handshake as been confirmed. | |
| 182 std::unique_ptr<StreamRequest> CreateStreamRequest( | |
| 183 bool requires_confirmation); | |
| 184 | |
| 185 // Attempts to create a new stream. If the stream can be | 272 // Attempts to create a new stream. If the stream can be |
| 186 // created immediately, returns OK. If the open stream limit | 273 // created immediately, returns OK. If the open stream limit |
| 187 // has been reached, returns ERR_IO_PENDING, and |request| | 274 // has been reached, returns ERR_IO_PENDING, and |request| |
| 188 // will be added to the stream requets queue and will | 275 // will be added to the stream requets queue and will |
| 189 // be completed asynchronously. | 276 // be completed asynchronously. |
| 190 // TODO(rch): remove |stream| from this and use setter on |request| | 277 // TODO(rch): remove |stream| from this and use setter on |request| |
| 191 // and fix in spdy too. | 278 // and fix in spdy too. |
| 192 int TryCreateStream(StreamRequest* request); | 279 int TryCreateStream(StreamRequest* request); |
| 193 | 280 |
| 194 // Cancels the pending stream creation request. | 281 // Cancels the pending stream creation request. |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 257 | 344 |
| 258 // Close the session because of |net_error| and notifies the factory | 345 // Close the session because of |net_error| and notifies the factory |
| 259 // that this session has been closed, which will delete the session. | 346 // that this session has been closed, which will delete the session. |
| 260 void CloseSessionOnError(int net_error, QuicErrorCode quic_error); | 347 void CloseSessionOnError(int net_error, QuicErrorCode quic_error); |
| 261 | 348 |
| 262 std::unique_ptr<base::Value> GetInfoAsValue( | 349 std::unique_ptr<base::Value> GetInfoAsValue( |
| 263 const std::set<HostPortPair>& aliases); | 350 const std::set<HostPortPair>& aliases); |
| 264 | 351 |
| 265 const NetLogWithSource& net_log() const { return net_log_; } | 352 const NetLogWithSource& net_log() const { return net_log_; } |
| 266 | 353 |
| 267 base::WeakPtr<QuicChromiumClientSession> GetWeakPtr(); | 354 // Return a Handle to this session. |
| 355 QuicChromiumClientSession::Handle GetHandle(); | |
| 268 | 356 |
| 269 // Returns the number of client hello messages that have been sent on the | 357 // Returns the number of client hello messages that have been sent on the |
| 270 // crypto stream. If the handshake has completed then this is one greater | 358 // crypto stream. If the handshake has completed then this is one greater |
| 271 // than the number of round-trips needed for the handshake. | 359 // than the number of round-trips needed for the handshake. |
| 272 int GetNumSentClientHellos() const; | 360 int GetNumSentClientHellos() const; |
| 273 | 361 |
| 274 // Returns the stream id of the push stream if it is not claimed yet, or 0 | 362 // Returns the stream id of the push stream if it is not claimed yet, or 0 |
| 275 // otherwise. | 363 // otherwise. |
| 276 QuicStreamId GetStreamIdForPush(const GURL& pushed_url); | 364 QuicStreamId GetStreamIdForPush(const GURL& pushed_url); |
| 277 | 365 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 309 const NetLogWithSource& net_log); | 397 const NetLogWithSource& net_log); |
| 310 | 398 |
| 311 // Schedules a migration alarm to wait for a new network. | 399 // Schedules a migration alarm to wait for a new network. |
| 312 void OnNoNewNetwork(); | 400 void OnNoNewNetwork(); |
| 313 | 401 |
| 314 // Called when migration alarm fires. If migration has not occurred | 402 // Called when migration alarm fires. If migration has not occurred |
| 315 // since alarm was set, closes session with error. | 403 // since alarm was set, closes session with error. |
| 316 void OnMigrationTimeout(size_t num_sockets); | 404 void OnMigrationTimeout(size_t num_sockets); |
| 317 | 405 |
| 318 // Populates network error details for this session. | 406 // Populates network error details for this session. |
| 319 void PopulateNetErrorDetails(NetErrorDetails* details); | 407 void PopulateNetErrorDetails(NetErrorDetails* details) const; |
| 320 | 408 |
| 321 // Returns current default socket. This is the socket over which all | 409 // Returns current default socket. This is the socket over which all |
| 322 // QUIC packets are sent. This default socket can change, so do not store the | 410 // QUIC packets are sent. This default socket can change, so do not store the |
| 323 // returned socket. | 411 // returned socket. |
| 324 const DatagramClientSocket* GetDefaultSocket() const; | 412 const DatagramClientSocket* GetDefaultSocket() const; |
| 325 | 413 |
| 326 bool IsAuthorized(const std::string& hostname) override; | 414 bool IsAuthorized(const std::string& hostname) override; |
| 327 | 415 |
| 328 // Returns true if session has one ore more streams marked as non-migratable. | 416 // Returns true if session has one ore more streams marked as non-migratable. |
| 329 bool HasNonMigratableStreams() const; | 417 bool HasNonMigratableStreams() const; |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 353 // QuicSession methods: | 441 // QuicSession methods: |
| 354 bool ShouldCreateIncomingDynamicStream(QuicStreamId id) override; | 442 bool ShouldCreateIncomingDynamicStream(QuicStreamId id) override; |
| 355 bool ShouldCreateOutgoingDynamicStream() override; | 443 bool ShouldCreateOutgoingDynamicStream() override; |
| 356 | 444 |
| 357 QuicChromiumClientStream* CreateIncomingDynamicStream( | 445 QuicChromiumClientStream* CreateIncomingDynamicStream( |
| 358 QuicStreamId id) override; | 446 QuicStreamId id) override; |
| 359 | 447 |
| 360 private: | 448 private: |
| 361 friend class test::QuicChromiumClientSessionPeer; | 449 friend class test::QuicChromiumClientSessionPeer; |
| 362 | 450 |
| 363 typedef std::set<Observer*> ObserverSet; | 451 typedef std::set<Handle*> HandleSet; |
| 364 typedef std::list<StreamRequest*> StreamRequestQueue; | 452 typedef std::list<StreamRequest*> StreamRequestQueue; |
| 365 | 453 |
| 366 QuicChromiumClientStream* CreateOutgoingReliableStreamImpl(); | 454 QuicChromiumClientStream* CreateOutgoingReliableStreamImpl(); |
| 367 QuicChromiumClientStream* CreateIncomingReliableStreamImpl(QuicStreamId id); | 455 QuicChromiumClientStream* CreateIncomingReliableStreamImpl(QuicStreamId id); |
| 368 // A completion callback invoked when a read completes. | 456 // A completion callback invoked when a read completes. |
| 369 void OnReadComplete(int result); | 457 void OnReadComplete(int result); |
| 370 | 458 |
| 371 void OnClosedStream(); | 459 void OnClosedStream(); |
| 372 | 460 |
| 373 void CloseAllStreams(int net_error); | 461 void CloseAllStreams(int net_error); |
| 374 void CloseAllObservers(int net_error); | 462 void CloseAllHandles(int net_error); |
| 375 void CancelAllRequests(int net_error); | 463 void CancelAllRequests(int net_error); |
| 376 void NotifyRequestsOfConfirmation(int net_error); | 464 void NotifyRequestsOfConfirmation(int net_error); |
| 377 | 465 |
| 378 // Notifies the factory that this session is going away and no more streams | 466 // Notifies the factory that this session is going away and no more streams |
| 379 // should be created from it. This needs to be called before closing any | 467 // should be created from it. This needs to be called before closing any |
| 380 // streams, because closing a stream may cause a new stream to be created. | 468 // streams, because closing a stream may cause a new stream to be created. |
| 381 void NotifyFactoryOfSessionGoingAway(); | 469 void NotifyFactoryOfSessionGoingAway(); |
| 382 | 470 |
| 383 // Posts a task to notify the factory that this session has been closed. | 471 // Posts a task to notify the factory that this session has been closed. |
| 384 void NotifyFactoryOfSessionClosedLater(); | 472 void NotifyFactoryOfSessionClosedLater(); |
| 385 | 473 |
| 386 // Notifies the factory that this session has been closed which will | 474 // Notifies the factory that this session has been closed which will |
| 387 // delete |this|. | 475 // delete |this|. |
| 388 void NotifyFactoryOfSessionClosed(); | 476 void NotifyFactoryOfSessionClosed(); |
| 389 | 477 |
| 390 QuicServerId server_id_; | 478 QuicServerId server_id_; |
| 391 bool require_confirmation_; | 479 bool require_confirmation_; |
| 392 std::unique_ptr<QuicCryptoClientStream> crypto_stream_; | 480 std::unique_ptr<QuicCryptoClientStream> crypto_stream_; |
| 393 QuicStreamFactory* stream_factory_; | 481 QuicStreamFactory* stream_factory_; |
| 394 std::vector<std::unique_ptr<DatagramClientSocket>> sockets_; | 482 std::vector<std::unique_ptr<DatagramClientSocket>> sockets_; |
| 395 TransportSecurityState* transport_security_state_; | 483 TransportSecurityState* transport_security_state_; |
| 396 std::unique_ptr<QuicServerInfo> server_info_; | 484 std::unique_ptr<QuicServerInfo> server_info_; |
| 397 std::unique_ptr<CertVerifyResult> cert_verify_result_; | 485 std::unique_ptr<CertVerifyResult> cert_verify_result_; |
| 398 std::unique_ptr<ct::CTVerifyResult> ct_verify_result_; | 486 std::unique_ptr<ct::CTVerifyResult> ct_verify_result_; |
| 399 std::string pinning_failure_log_; | 487 std::string pinning_failure_log_; |
| 400 bool pkp_bypassed_; | 488 bool pkp_bypassed_; |
| 401 ObserverSet observers_; | 489 HandleSet handles_; |
| 402 StreamRequestQueue stream_requests_; | 490 StreamRequestQueue stream_requests_; |
| 403 std::vector<CompletionCallback> waiting_for_confirmation_callbacks_; | 491 std::vector<CompletionCallback> waiting_for_confirmation_callbacks_; |
| 404 CompletionCallback callback_; | 492 CompletionCallback callback_; |
| 405 size_t num_total_streams_; | 493 size_t num_total_streams_; |
| 406 base::TaskRunner* task_runner_; | 494 base::TaskRunner* task_runner_; |
| 407 NetLogWithSource net_log_; | 495 NetLogWithSource net_log_; |
| 408 std::vector<std::unique_ptr<QuicChromiumPacketReader>> packet_readers_; | 496 std::vector<std::unique_ptr<QuicChromiumPacketReader>> packet_readers_; |
| 409 LoadTimingInfo::ConnectTiming connect_timing_; | 497 LoadTimingInfo::ConnectTiming connect_timing_; |
| 410 std::unique_ptr<QuicConnectionLogger> logger_; | 498 std::unique_ptr<QuicConnectionLogger> logger_; |
| 411 // True when the session is going away, and streams may no longer be created | 499 // True when the session is going away, and streams may no longer be created |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 423 uint64_t bytes_pushed_count_; | 511 uint64_t bytes_pushed_count_; |
| 424 uint64_t bytes_pushed_and_unclaimed_count_; | 512 uint64_t bytes_pushed_and_unclaimed_count_; |
| 425 // Stores packet that witnesses socket write error. This packet is | 513 // Stores packet that witnesses socket write error. This packet is |
| 426 // written to a new socket after migration completes. | 514 // written to a new socket after migration completes. |
| 427 scoped_refptr<StringIOBuffer> packet_; | 515 scoped_refptr<StringIOBuffer> packet_; |
| 428 // TODO(jri): Replace use of migration_pending_ sockets_.size(). | 516 // TODO(jri): Replace use of migration_pending_ sockets_.size(). |
| 429 // When a task is posted for MigrateSessionOnError, pass in | 517 // When a task is posted for MigrateSessionOnError, pass in |
| 430 // sockets_.size(). Then in MigrateSessionOnError, check to see if | 518 // sockets_.size(). Then in MigrateSessionOnError, check to see if |
| 431 // the current sockets_.size() == the passed in value. | 519 // the current sockets_.size() == the passed in value. |
| 432 bool migration_pending_; // True while migration is underway. | 520 bool migration_pending_; // True while migration is underway. |
| 521 std::unique_ptr<Handle> self_handle_; // Handle to this session | |
| 433 base::WeakPtrFactory<QuicChromiumClientSession> weak_factory_; | 522 base::WeakPtrFactory<QuicChromiumClientSession> weak_factory_; |
| 434 | 523 |
| 435 DISALLOW_COPY_AND_ASSIGN(QuicChromiumClientSession); | 524 DISALLOW_COPY_AND_ASSIGN(QuicChromiumClientSession); |
| 436 }; | 525 }; |
| 437 | 526 |
| 438 } // namespace net | 527 } // namespace net |
| 439 | 528 |
| 440 #endif // NET_QUIC_CHROMIUM_QUIC_CHROMIUM_CLIENT_SESSION_H_ | 529 #endif // NET_QUIC_CHROMIUM_QUIC_CHROMIUM_CLIENT_SESSION_H_ |
| OLD | NEW |