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

Side by Side Diff: net/http/http_stream_factory_impl_job.h

Issue 2332193003: JobController3: Move MarkAlternativeServiceBroken to job controller (Closed)
Patch Set: move logic to job controller Created 4 years, 3 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 #ifndef NET_HTTP_HTTP_STREAM_FACTORY_IMPL_JOB_H_ 5 #ifndef NET_HTTP_HTTP_STREAM_FACTORY_IMPL_JOB_H_
6 #define NET_HTTP_HTTP_STREAM_FACTORY_IMPL_JOB_H_ 6 #define NET_HTTP_HTTP_STREAM_FACTORY_IMPL_JOB_H_
7 7
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 228
229 bool is_waiting() const { return next_state_ == STATE_WAIT_COMPLETE; } 229 bool is_waiting() const { return next_state_ == STATE_WAIT_COMPLETE; }
230 const SSLConfig& server_ssl_config() const; 230 const SSLConfig& server_ssl_config() const;
231 const SSLConfig& proxy_ssl_config() const; 231 const SSLConfig& proxy_ssl_config() const;
232 const ProxyInfo& proxy_info() const; 232 const ProxyInfo& proxy_info() const;
233 233
234 // Called to indicate that this job succeeded, and some other jobs 234 // Called to indicate that this job succeeded, and some other jobs
235 // will be orphaned. 235 // will be orphaned.
236 void ReportJobSucceededForRequest(); 236 void ReportJobSucceededForRequest();
237 237
238 // Marks that the other |job| has completed. 238 JobType job_type() const { return job_type_; }
239 virtual void MarkOtherJobComplete(const Job& job);
240 239
241 JobType job_type() const { return job_type_; } 240 bool alternative_broken() const { return alternative_broken_; }
241
242 const AlternativeService alternative_service() const {
243 return alternative_service_;
244 }
245 const ProxyServer alternative_proxy_server() const {
246 return alternative_proxy_server_;
247 }
242 248
243 private: 249 private:
244 friend class HttpStreamFactoryImplJobPeer; 250 friend class HttpStreamFactoryImplJobPeer;
245 251
246 enum State { 252 enum State {
247 STATE_START, 253 STATE_START,
248 STATE_RESOLVE_PROXY, 254 STATE_RESOLVE_PROXY,
249 STATE_RESOLVE_PROXY_COMPLETE, 255 STATE_RESOLVE_PROXY_COMPLETE,
250 256
251 // Note that when Alternate-Protocol says we can connect to an alternate 257 // Note that when Alternate-Protocol says we can connect to an alternate
(...skipping 22 matching lines...) Expand all
274 STATE_RESTART_TUNNEL_AUTH, 280 STATE_RESTART_TUNNEL_AUTH,
275 STATE_RESTART_TUNNEL_AUTH_COMPLETE, 281 STATE_RESTART_TUNNEL_AUTH_COMPLETE,
276 STATE_CREATE_STREAM, 282 STATE_CREATE_STREAM,
277 STATE_CREATE_STREAM_COMPLETE, 283 STATE_CREATE_STREAM_COMPLETE,
278 STATE_DRAIN_BODY_FOR_AUTH_RESTART, 284 STATE_DRAIN_BODY_FOR_AUTH_RESTART,
279 STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE, 285 STATE_DRAIN_BODY_FOR_AUTH_RESTART_COMPLETE,
280 STATE_DONE, 286 STATE_DONE,
281 STATE_NONE 287 STATE_NONE
282 }; 288 };
283 289
284 enum JobStatus {
285 STATUS_RUNNING,
286 STATUS_FAILED,
287 STATUS_BROKEN,
288 STATUS_SUCCEEDED
289 };
290
291 void OnStreamReadyCallback(); 290 void OnStreamReadyCallback();
292 void OnBidirectionalStreamImplReadyCallback(); 291 void OnBidirectionalStreamImplReadyCallback();
293 void OnWebSocketHandshakeStreamReadyCallback(); 292 void OnWebSocketHandshakeStreamReadyCallback();
294 // This callback function is called when a new SPDY session is created. 293 // This callback function is called when a new SPDY session is created.
295 void OnNewSpdySessionReadyCallback(); 294 void OnNewSpdySessionReadyCallback();
296 void OnStreamFailedCallback(int result); 295 void OnStreamFailedCallback(int result);
297 void OnCertificateErrorCallback(int result, const SSLInfo& ssl_info); 296 void OnCertificateErrorCallback(int result, const SSLInfo& ssl_info);
298 void OnNeedsProxyAuthCallback(const HttpResponseInfo& response_info, 297 void OnNeedsProxyAuthCallback(const HttpResponseInfo& response_info,
299 HttpAuthController* auth_controller); 298 HttpAuthController* auth_controller);
300 void OnNeedsClientAuthCallback(SSLCertRequestInfo* cert_info); 299 void OnNeedsClientAuthCallback(SSLCertRequestInfo* cert_info);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 372
374 // Called to handle a client certificate request. 373 // Called to handle a client certificate request.
375 int HandleCertificateRequest(int error); 374 int HandleCertificateRequest(int error);
376 375
377 // Moves this stream request into SPDY mode. 376 // Moves this stream request into SPDY mode.
378 void SwitchToSpdyMode(); 377 void SwitchToSpdyMode();
379 378
380 // Should we force QUIC for this stream request. 379 // Should we force QUIC for this stream request.
381 bool ShouldForceQuic() const; 380 bool ShouldForceQuic() const;
382 381
383 void MaybeMarkAlternativeServiceBroken();
384
385 // May notify proxy delegate that the alternative proxy server is broken. The
386 // alternative proxy server is considered as broken if the alternative proxy
387 // server job failed, but the main job was successful.
388 void MaybeNotifyAlternativeProxyServerBroken() const;
389
390 ClientSocketPoolManager::SocketGroupType GetSocketGroup() const; 382 ClientSocketPoolManager::SocketGroupType GetSocketGroup() const;
391 383
392 void MaybeCopyConnectionAttemptsFromSocketOrHandle(); 384 void MaybeCopyConnectionAttemptsFromSocketOrHandle();
393 385
394 // Record histograms of latency until Connect() completes. 386 // Record histograms of latency until Connect() completes.
395 static void LogHttpConnectedMetrics(const ClientSocketHandle& handle); 387 static void LogHttpConnectedMetrics(const ClientSocketHandle& handle);
396 388
397 // Invoked by the transport socket pool after host resolution is complete 389 // Invoked by the transport socket pool after host resolution is complete
398 // to allow the connection to be aborted, if a matching SPDY session can 390 // to allow the connection to be aborted, if a matching SPDY session can
399 // be found. Will return ERR_SPDY_SESSION_ALREADY_EXISTS if such a 391 // be found. Will return ERR_SPDY_SESSION_ALREADY_EXISTS if such a
(...skipping 19 matching lines...) Expand all
419 SSLInfo ssl_info_; 411 SSLInfo ssl_info_;
420 412
421 // The server we are trying to reach, could be that of the origin or of the 413 // The server we are trying to reach, could be that of the origin or of the
422 // alternative service (after applying host mapping rules). 414 // alternative service (after applying host mapping rules).
423 const HostPortPair destination_; 415 const HostPortPair destination_;
424 416
425 // The origin url we're trying to reach. This url may be different from the 417 // The origin url we're trying to reach. This url may be different from the
426 // original request when host mapping rules are set-up. 418 // original request when host mapping rules are set-up.
427 const GURL origin_url_; 419 const GURL origin_url_;
428 420
421 // True if alternative service or alternative proxy server needs to be marked
422 // as broken.
423 bool alternative_broken_;
Ryan Hamilton 2016/09/13 23:23:15 Is this different than the job failing?
424
429 // AlternativeService for this Job if this is an alternative Job. 425 // AlternativeService for this Job if this is an alternative Job.
430 const AlternativeService alternative_service_; 426 const AlternativeService alternative_service_;
431 427
432 // AlternativeService for the other Job if this is not an alternative Job.
433 AlternativeService other_job_alternative_service_;
434
435 // Unowned. |this| job is owned by |delegate_|. 428 // Unowned. |this| job is owned by |delegate_|.
436 Delegate* delegate_; 429 Delegate* delegate_;
437 430
438 // Alternative proxy server that should be used by |this| to fetch the 431 // Alternative proxy server that should be used by |this| to fetch the
439 // request. 432 // request.
440 const ProxyServer alternative_proxy_server_; 433 const ProxyServer alternative_proxy_server_;
441 434
442 // Alternative proxy server for the other job.
443 ProxyServer other_job_alternative_proxy_server_;
444
445 const JobType job_type_; 435 const JobType job_type_;
446 436
447 // True if handling a HTTPS request, or using SPDY with SSL 437 // True if handling a HTTPS request, or using SPDY with SSL
448 bool using_ssl_; 438 bool using_ssl_;
449 439
450 // True if this network transaction is using SPDY instead of HTTP. 440 // True if this network transaction is using SPDY instead of HTTP.
451 bool using_spdy_; 441 bool using_spdy_;
452 442
453 // True if this network transaction is using QUIC instead of HTTP. 443 // True if this network transaction is using QUIC instead of HTTP.
454 bool using_quic_; 444 bool using_quic_;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 476
487 // Initialized when we create a new SpdySession. 477 // Initialized when we create a new SpdySession.
488 base::WeakPtr<SpdySession> new_spdy_session_; 478 base::WeakPtr<SpdySession> new_spdy_session_;
489 479
490 // Initialized when we have an existing SpdySession. 480 // Initialized when we have an existing SpdySession.
491 base::WeakPtr<SpdySession> existing_spdy_session_; 481 base::WeakPtr<SpdySession> existing_spdy_session_;
492 482
493 // Only used if |new_spdy_session_| is non-NULL. 483 // Only used if |new_spdy_session_| is non-NULL.
494 bool spdy_session_direct_; 484 bool spdy_session_direct_;
495 485
496 JobStatus job_status_;
497 JobStatus other_job_status_;
498
499 // Type of stream that is requested. 486 // Type of stream that is requested.
500 HttpStreamRequest::StreamType stream_type_; 487 HttpStreamRequest::StreamType stream_type_;
501 488
502 base::WeakPtrFactory<Job> ptr_factory_; 489 base::WeakPtrFactory<Job> ptr_factory_;
503 490
504 DISALLOW_COPY_AND_ASSIGN(Job); 491 DISALLOW_COPY_AND_ASSIGN(Job);
505 }; 492 };
506 493
507 // Factory for creating Jobs. 494 // Factory for creating Jobs.
508 class HttpStreamFactoryImpl::JobFactory { 495 class HttpStreamFactoryImpl::JobFactory {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 const SSLConfig& server_ssl_config, 534 const SSLConfig& server_ssl_config,
548 const SSLConfig& proxy_ssl_config, 535 const SSLConfig& proxy_ssl_config,
549 HostPortPair destination, 536 HostPortPair destination,
550 GURL origin_url, 537 GURL origin_url,
551 NetLog* net_log) = 0; 538 NetLog* net_log) = 0;
552 }; 539 };
553 540
554 } // namespace net 541 } // namespace net
555 542
556 #endif // NET_HTTP_HTTP_STREAM_FACTORY_IMPL_JOB_H_ 543 #endif // NET_HTTP_HTTP_STREAM_FACTORY_IMPL_JOB_H_
OLDNEW
« no previous file with comments | « no previous file | net/http/http_stream_factory_impl_job.cc » ('j') | net/http/http_stream_factory_impl_job_controller.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698