| Index: net/flip/flip_session_pool.cc
|
| diff --git a/net/flip/flip_session_pool.cc b/net/flip/flip_session_pool.cc
|
| index 274ebf1bfb18a87835a82b29a71dd9bd8292b859..386fddc9e12e54096f635e389f73bab49bb162b0 100644
|
| --- a/net/flip/flip_session_pool.cc
|
| +++ b/net/flip/flip_session_pool.cc
|
| @@ -10,16 +10,16 @@
|
| namespace net {
|
|
|
| // The maximum number of sessions to open to a single domain.
|
| -const size_t kMaxSessionsPerDomain = 1;
|
| +static const size_t kMaxSessionsPerDomain = 1;
|
|
|
| -scoped_ptr<FlipSessionPool::FlipSessionsMap> FlipSessionPool::sessions_;
|
| +FlipSessionPool::FlipSessionPool() {}
|
| +FlipSessionPool::~FlipSessionPool() {
|
| + CloseAllSessions();
|
| +}
|
|
|
| FlipSession* FlipSessionPool::Get(const HostResolver::RequestInfo& info,
|
| HttpNetworkSession* session) {
|
| - if (!sessions_.get())
|
| - sessions_.reset(new FlipSessionsMap());
|
| -
|
| - const std::string domain = info.hostname();
|
| + const std::string& domain = info.hostname();
|
| FlipSession* flip_session = NULL;
|
| FlipSessionList* list = GetSessionList(domain);
|
| if (list) {
|
| @@ -43,48 +43,60 @@ FlipSession* FlipSessionPool::Get(const HostResolver::RequestInfo& info,
|
| return flip_session;
|
| }
|
|
|
| +bool FlipSessionPool::HasSession(const HostResolver::RequestInfo& info) const {
|
| + const std::string& domain = info.hostname();
|
| + if (GetSessionList(domain))
|
| + return true;
|
| + return false;
|
| +}
|
| +
|
| void FlipSessionPool::Remove(FlipSession* session) {
|
| std::string domain = session->domain();
|
| FlipSessionList* list = GetSessionList(domain);
|
| if (list == NULL)
|
| return;
|
| list->remove(session);
|
| - if (!list->size())
|
| + if (list->empty())
|
| RemoveSessionList(domain);
|
| }
|
|
|
| FlipSessionPool::FlipSessionList*
|
| - FlipSessionPool::AddSessionList(std::string domain) {
|
| - DCHECK(sessions_->find(domain) == sessions_->end());
|
| - return (*sessions_)[domain] = new FlipSessionList();
|
| + FlipSessionPool::AddSessionList(const std::string& domain) {
|
| + DCHECK(sessions_.find(domain) == sessions_.end());
|
| + return sessions_[domain] = new FlipSessionList();
|
| }
|
|
|
| -// static
|
| FlipSessionPool::FlipSessionList*
|
| - FlipSessionPool::GetSessionList(std::string domain) {
|
| - FlipSessionsMap::iterator it = sessions_->find(domain);
|
| - if (it == sessions_->end())
|
| + FlipSessionPool::GetSessionList(const std::string& domain) {
|
| + FlipSessionsMap::iterator it = sessions_.find(domain);
|
| + if (it == sessions_.end())
|
| return NULL;
|
| return it->second;
|
| }
|
|
|
| -// static
|
| -void FlipSessionPool::RemoveSessionList(std::string domain) {
|
| +const FlipSessionPool::FlipSessionList*
|
| + FlipSessionPool::GetSessionList(const std::string& domain) const {
|
| + FlipSessionsMap::const_iterator it = sessions_.find(domain);
|
| + if (it == sessions_.end())
|
| + return NULL;
|
| + return it->second;
|
| +}
|
| +
|
| +void FlipSessionPool::RemoveSessionList(const std::string& domain) {
|
| FlipSessionList* list = GetSessionList(domain);
|
| if (list) {
|
| delete list;
|
| - sessions_->erase(domain);
|
| + sessions_.erase(domain);
|
| } else {
|
| DCHECK(false) << "removing orphaned session list";
|
| }
|
| }
|
|
|
| -// static
|
| void FlipSessionPool::CloseAllSessions() {
|
| - while (sessions_.get() && sessions_->size()) {
|
| - FlipSessionList* list = sessions_->begin()->second;
|
| + while (sessions_.size()) {
|
| + FlipSessionList* list = sessions_.begin()->second;
|
| DCHECK(list);
|
| - sessions_->erase(sessions_->begin()->first);
|
| + sessions_.erase(sessions_.begin()->first);
|
| while (list->size()) {
|
| FlipSession* session = list->front();
|
| list->pop_front();
|
| @@ -96,4 +108,3 @@ void FlipSessionPool::CloseAllSessions() {
|
| }
|
|
|
| } // namespace net
|
| -
|
|
|