| 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 #ifndef NET_HTTP_HTTP_PIPELINED_HOST_IMPL_H_ | 5 #ifndef NET_HTTP_HTTP_PIPELINED_HOST_IMPL_H_ |
| 6 #define NET_HTTP_HTTP_PIPELINED_HOST_IMPL_H_ | 6 #define NET_HTTP_HTTP_PIPELINED_HOST_IMPL_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 struct SSLConfig; | 30 struct SSLConfig; |
| 31 | 31 |
| 32 // Manages all of the pipelining state for specific host with active pipelined | 32 // Manages all of the pipelining state for specific host with active pipelined |
| 33 // HTTP requests. Manages connection jobs, constructs pipelined streams, and | 33 // HTTP requests. Manages connection jobs, constructs pipelined streams, and |
| 34 // assigns requests to the least loaded pipelined connection. | 34 // assigns requests to the least loaded pipelined connection. |
| 35 class NET_EXPORT_PRIVATE HttpPipelinedHostImpl | 35 class NET_EXPORT_PRIVATE HttpPipelinedHostImpl |
| 36 : public HttpPipelinedHost, | 36 : public HttpPipelinedHost, |
| 37 public HttpPipelinedConnection::Delegate { | 37 public HttpPipelinedConnection::Delegate { |
| 38 public: | 38 public: |
| 39 HttpPipelinedHostImpl(HttpPipelinedHost::Delegate* delegate, | 39 HttpPipelinedHostImpl(HttpPipelinedHost::Delegate* delegate, |
| 40 const HostPortPair& origin, | 40 const HttpPipelinedHost::Key& key, |
| 41 HttpPipelinedConnection::Factory* factory, | 41 HttpPipelinedConnection::Factory* factory, |
| 42 HttpPipelinedHostCapability capability); | 42 HttpPipelinedHostCapability capability); |
| 43 virtual ~HttpPipelinedHostImpl(); | 43 virtual ~HttpPipelinedHostImpl(); |
| 44 | 44 |
| 45 // HttpPipelinedHost interface | 45 // HttpPipelinedHost interface |
| 46 virtual HttpPipelinedStream* CreateStreamOnNewPipeline( | 46 virtual HttpPipelinedStream* CreateStreamOnNewPipeline( |
| 47 ClientSocketHandle* connection, | 47 ClientSocketHandle* connection, |
| 48 const SSLConfig& used_ssl_config, | 48 const SSLConfig& used_ssl_config, |
| 49 const ProxyInfo& used_proxy_info, | 49 const ProxyInfo& used_proxy_info, |
| 50 const BoundNetLog& net_log, | 50 const BoundNetLog& net_log, |
| 51 bool was_npn_negotiated, | 51 bool was_npn_negotiated, |
| 52 SSLClientSocket::NextProto protocol_negotiated) OVERRIDE; | 52 SSLClientSocket::NextProto protocol_negotiated) OVERRIDE; |
| 53 | 53 |
| 54 virtual HttpPipelinedStream* CreateStreamOnExistingPipeline() OVERRIDE; | 54 virtual HttpPipelinedStream* CreateStreamOnExistingPipeline() OVERRIDE; |
| 55 | 55 |
| 56 virtual bool IsExistingPipelineAvailable() const OVERRIDE; | 56 virtual bool IsExistingPipelineAvailable() const OVERRIDE; |
| 57 | 57 |
| 58 // HttpPipelinedConnection::Delegate interface | 58 // HttpPipelinedConnection::Delegate interface |
| 59 | 59 |
| 60 // Called when a pipelined connection completes a request. Adds a pending | 60 // Called when a pipelined connection completes a request. Adds a pending |
| 61 // request to the pipeline if the pipeline is still usable. | 61 // request to the pipeline if the pipeline is still usable. |
| 62 virtual void OnPipelineHasCapacity( | 62 virtual void OnPipelineHasCapacity( |
| 63 HttpPipelinedConnection* pipeline) OVERRIDE; | 63 HttpPipelinedConnection* pipeline) OVERRIDE; |
| 64 | 64 |
| 65 virtual void OnPipelineFeedback( | 65 virtual void OnPipelineFeedback( |
| 66 HttpPipelinedConnection* pipeline, | 66 HttpPipelinedConnection* pipeline, |
| 67 HttpPipelinedConnection::Feedback feedback) OVERRIDE; | 67 HttpPipelinedConnection::Feedback feedback) OVERRIDE; |
| 68 | 68 |
| 69 virtual const HostPortPair& origin() const OVERRIDE; | 69 virtual const Key& GetKey() const OVERRIDE; |
| 70 | 70 |
| 71 // Creates a Value summary of this host's |pipelines_|. Caller assumes | 71 // Creates a Value summary of this host's |pipelines_|. Caller assumes |
| 72 // ownership of the returned Value. | 72 // ownership of the returned Value. |
| 73 virtual base::Value* PipelineInfoToValue() const OVERRIDE; | 73 virtual base::Value* PipelineInfoToValue() const OVERRIDE; |
| 74 | 74 |
| 75 // Returns the maximum number of in-flight pipelined requests we'll allow on a | 75 // Returns the maximum number of in-flight pipelined requests we'll allow on a |
| 76 // single connection. | 76 // single connection. |
| 77 static int max_pipeline_depth() { return 3; } | 77 static int max_pipeline_depth() { return 3; } |
| 78 | 78 |
| 79 private: | 79 private: |
| (...skipping 18 matching lines...) Expand all Loading... |
| 98 // Returns true if |pipeline| can handle a new request. This is true if the | 98 // Returns true if |pipeline| can handle a new request. This is true if the |
| 99 // |pipeline| is active, usable, has capacity, and |capability_| is | 99 // |pipeline| is active, usable, has capacity, and |capability_| is |
| 100 // sufficient. | 100 // sufficient. |
| 101 bool CanPipelineAcceptRequests(HttpPipelinedConnection* pipeline) const; | 101 bool CanPipelineAcceptRequests(HttpPipelinedConnection* pipeline) const; |
| 102 | 102 |
| 103 // Called when |this| moves from UNKNOWN |capability_| to PROBABLY_CAPABLE. | 103 // Called when |this| moves from UNKNOWN |capability_| to PROBABLY_CAPABLE. |
| 104 // Causes all pipelines to increase capacity to start pipelining. | 104 // Causes all pipelines to increase capacity to start pipelining. |
| 105 void NotifyAllPipelinesHaveCapacity(); | 105 void NotifyAllPipelinesHaveCapacity(); |
| 106 | 106 |
| 107 HttpPipelinedHost::Delegate* delegate_; | 107 HttpPipelinedHost::Delegate* delegate_; |
| 108 const HostPortPair origin_; | 108 const Key key_; |
| 109 PipelineInfoMap pipelines_; | 109 PipelineInfoMap pipelines_; |
| 110 scoped_ptr<HttpPipelinedConnection::Factory> factory_; | 110 scoped_ptr<HttpPipelinedConnection::Factory> factory_; |
| 111 HttpPipelinedHostCapability capability_; | 111 HttpPipelinedHostCapability capability_; |
| 112 | 112 |
| 113 DISALLOW_COPY_AND_ASSIGN(HttpPipelinedHostImpl); | 113 DISALLOW_COPY_AND_ASSIGN(HttpPipelinedHostImpl); |
| 114 }; | 114 }; |
| 115 | 115 |
| 116 } // namespace net | 116 } // namespace net |
| 117 | 117 |
| 118 #endif // NET_HTTP_HTTP_PIPELINED_HOST_IMPL_H_ | 118 #endif // NET_HTTP_HTTP_PIPELINED_HOST_IMPL_H_ |
| OLD | NEW |