Chromium Code Reviews| Index: net/http/http_server_properties_impl.cc |
| diff --git a/net/http/http_server_properties_impl.cc b/net/http/http_server_properties_impl.cc |
| index d4e1303b5dde9dc6c88d60ddba78a9f43f29f51e..0608247560fd2dc561effcf39e53581647c111d6 100644 |
| --- a/net/http/http_server_properties_impl.cc |
| +++ b/net/http/http_server_properties_impl.cc |
| @@ -8,10 +8,18 @@ |
| #include "base/memory/scoped_ptr.h" |
| #include "base/stl_util.h" |
| #include "base/stringprintf.h" |
| +#include "net/http/http_pipelined_host_capability.h" |
| namespace net { |
| -HttpServerPropertiesImpl::HttpServerPropertiesImpl() { |
| +// TODO(simonjam): Run experiments with different values of this to see what |
| +// value is good at avoiding evictions without eating too much memory. Until |
| +// then, this is just a bad guess. |
| +static const int kDefaultNumHostsToRemember = 200; |
| + |
| +HttpServerPropertiesImpl::HttpServerPropertiesImpl() |
| + : pipeline_capability_map_( |
| + new CachedPipelineCapabilityMap(kDefaultNumHostsToRemember)) { |
| } |
| HttpServerPropertiesImpl::~HttpServerPropertiesImpl() { |
| @@ -48,6 +56,21 @@ void HttpServerPropertiesImpl::InitializeSpdySettingsServers( |
| spdy_settings_map_.swap(*spdy_settings_map); |
| } |
| +void HttpServerPropertiesImpl::InitializePipelineCapabilities( |
| + const PipelineCapabilityMap* pipeline_capability_map) { |
| + PipelineCapabilityMap::const_iterator it; |
| + pipeline_capability_map_->Clear(); |
| + for (it = pipeline_capability_map->begin(); |
| + it != pipeline_capability_map->end(); ++it) { |
| + pipeline_capability_map_->Put(it->first, it->second); |
| + } |
| +} |
| + |
| +void HttpServerPropertiesImpl::SetNumPipelinedHostsToRemember(int max_size) { |
| + CHECK(pipeline_capability_map_->empty()); |
|
mmenke
2011/12/06 20:02:55
Think this one should actually be a DCHECK. Other
|
| + pipeline_capability_map_.reset(new CachedPipelineCapabilityMap(max_size)); |
| +} |
| + |
| void HttpServerPropertiesImpl::GetSpdyServerList( |
| base::ListValue* spdy_server_list) const { |
| DCHECK(CalledOnValidThread()); |
| @@ -94,6 +117,7 @@ void HttpServerPropertiesImpl::Clear() { |
| spdy_servers_table_.clear(); |
| alternate_protocol_map_.clear(); |
| spdy_settings_map_.clear(); |
| + pipeline_capability_map_->Clear(); |
| } |
| bool HttpServerPropertiesImpl::SupportsSpdy( |
| @@ -239,4 +263,41 @@ HttpServerPropertiesImpl::spdy_settings_map() const { |
| return spdy_settings_map_; |
| } |
| +HttpPipelinedHostCapability HttpServerPropertiesImpl::GetPipelineCapability( |
| + const HostPortPair& origin) { |
| + HttpPipelinedHostCapability capability = PIPELINE_UNKNOWN; |
| + CachedPipelineCapabilityMap::const_iterator it = |
| + pipeline_capability_map_->Get(origin); |
| + if (it != pipeline_capability_map_->end()) { |
| + capability = it->second; |
| + } |
| + return capability; |
| +} |
| + |
| +void HttpServerPropertiesImpl::SetPipelineCapability( |
| + const HostPortPair& origin, |
| + HttpPipelinedHostCapability capability) { |
| + CachedPipelineCapabilityMap::iterator it = |
| + pipeline_capability_map_->Peek(origin); |
| + if (it == pipeline_capability_map_->end() || |
| + it->second != PIPELINE_INCAPABLE) { |
| + pipeline_capability_map_->Put(origin, capability); |
| + } |
| +} |
| + |
| +void HttpServerPropertiesImpl::ClearPipelineCapabilities() { |
| + pipeline_capability_map_->Clear(); |
| +} |
| + |
| +PipelineCapabilityMap |
| +HttpServerPropertiesImpl::GetPipelineCapabilityMap() const { |
| + PipelineCapabilityMap result; |
| + CachedPipelineCapabilityMap::const_iterator it; |
| + for (it = pipeline_capability_map_->begin(); |
| + it != pipeline_capability_map_->end(); ++it) { |
| + result[it->first] = it->second; |
| + } |
| + return result; |
| +} |
| + |
| } // namespace net |