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

Unified Diff: net/spdy/spdy_session_pool.h

Issue 2832973003: Split net/spdy into core and chromium subdirectories. (Closed)
Patch Set: Fix some more build rules. Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/spdy/spdy_session_key.cc ('k') | net/spdy/spdy_session_pool.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_session_pool.h
diff --git a/net/spdy/spdy_session_pool.h b/net/spdy/spdy_session_pool.h
deleted file mode 100644
index 7d0b294ed75b0465827bcc19929f231ae5aa4e4e..0000000000000000000000000000000000000000
--- a/net/spdy/spdy_session_pool.h
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_SPDY_SPDY_SESSION_POOL_H_
-#define NET_SPDY_SPDY_SESSION_POOL_H_
-
-#include <stddef.h>
-
-#include <map>
-#include <memory>
-#include <set>
-#include <vector>
-
-#include "base/macros.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/weak_ptr.h"
-#include "net/base/host_port_pair.h"
-#include "net/base/ip_endpoint.h"
-#include "net/base/net_errors.h"
-#include "net/base/net_export.h"
-#include "net/base/network_change_notifier.h"
-#include "net/cert/cert_database.h"
-#include "net/proxy/proxy_config.h"
-#include "net/proxy/proxy_server.h"
-#include "net/spdy/platform/api/spdy_string.h"
-#include "net/spdy/server_push_delegate.h"
-#include "net/spdy/spdy_protocol.h"
-#include "net/spdy/spdy_session_key.h"
-#include "net/ssl/ssl_config_service.h"
-
-namespace base {
-namespace trace_event {
-class ProcessMemoryDump;
-}
-}
-
-namespace net {
-
-class ClientSocketHandle;
-class HostResolver;
-class HttpServerProperties;
-class NetLogWithSource;
-class ProxyDelegate;
-class SpdySession;
-class TransportSecurityState;
-
-// This is a very simple pool for open SpdySessions.
-class NET_EXPORT SpdySessionPool
- : public NetworkChangeNotifier::IPAddressObserver,
- public SSLConfigService::Observer,
- public CertDatabase::Observer {
- public:
- typedef base::TimeTicks (*TimeFunc)(void);
-
- SpdySessionPool(HostResolver* host_resolver,
- SSLConfigService* ssl_config_service,
- HttpServerProperties* http_server_properties,
- TransportSecurityState* transport_security_state,
- bool enable_ping_based_connection_checking,
- size_t session_max_recv_window_size,
- const SettingsMap& initial_settings,
- SpdySessionPool::TimeFunc time_func,
- ProxyDelegate* proxy_delegate);
- ~SpdySessionPool() override;
-
- // In the functions below, a session is "available" if this pool has
- // a reference to it and there is some SpdySessionKey for which
- // FindAvailableSession() will return it. A session is "unavailable"
- // if this pool has a reference to it but it won't be returned by
- // FindAvailableSession() for any SpdySessionKey; for example, this
- // can happen when a session receives a GOAWAY frame and is still
- // processing existing streams.
-
- // Create a new SPDY session from an existing socket. There must
- // not already be a session for the given key.
- //
- // |is_secure| can be false for testing or when SPDY is configured
- // to work with non-secure sockets.
- //
- // Returns the new SpdySession. Note that the SpdySession begins reading from
- // |connection| on a subsequent event loop iteration, so it may be closed
- // immediately afterwards if the first read of |connection| fails.
- base::WeakPtr<SpdySession> CreateAvailableSessionFromSocket(
- const SpdySessionKey& key,
- std::unique_ptr<ClientSocketHandle> connection,
- const NetLogWithSource& net_log,
- bool is_secure);
-
- // If |url| is not empty and there is a session for |key| that has an
- // unclaimed push stream for |url|, return it.
- // Otherwise if there is an available session for |key|, return it.
- // Otherwise if there is a session to pool to based on IP address:
- // * if |enable_ip_based_pooling == true|,
- // then mark it as available for |key| and return it;
- // * if |enable_ip_based_pooling == false|,
- // then remove it from the available sessions, and return nullptr.
- // Otherwise return nullptr.
- base::WeakPtr<SpdySession> FindAvailableSession(
- const SpdySessionKey& key,
- const GURL& url,
- bool enable_ip_based_pooling,
- const NetLogWithSource& net_log);
-
- // Remove all mappings and aliases for the given session, which must
- // still be available. Except for in tests, this must be called by
- // the given session itself.
- void MakeSessionUnavailable(
- const base::WeakPtr<SpdySession>& available_session);
-
- // Removes an unavailable session from the pool. Except for in
- // tests, this must be called by the given session itself.
- void RemoveUnavailableSession(
- const base::WeakPtr<SpdySession>& unavailable_session);
-
- // Close only the currently existing SpdySessions with |error|.
- // Let any new ones created while this method is running continue to
- // live.
- void CloseCurrentSessions(Error error);
-
- // Close only the currently existing SpdySessions that are idle.
- // Let any new ones created while this method is running continue to
- // live.
- void CloseCurrentIdleSessions();
-
- // Close all SpdySessions, including any new ones created in the process of
- // closing the current ones.
- void CloseAllSessions();
-
- // (Un)register a SpdySession with an unclaimed pushed stream for |url|, so
- // that the right SpdySession can be served by FindAvailableSession.
- void RegisterUnclaimedPushedStream(GURL url,
- base::WeakPtr<SpdySession> spdy_session);
- void UnregisterUnclaimedPushedStream(const GURL& url,
- SpdySession* spdy_session);
-
- // Creates a Value summary of the state of the spdy session pool.
- std::unique_ptr<base::Value> SpdySessionPoolInfoToValue() const;
-
- HttpServerProperties* http_server_properties() {
- return http_server_properties_;
- }
-
- void set_server_push_delegate(ServerPushDelegate* push_delegate) {
- push_delegate_ = push_delegate;
- }
-
- // NetworkChangeNotifier::IPAddressObserver methods:
-
- // We flush all idle sessions and release references to the active ones so
- // they won't get re-used. The active ones will either complete successfully
- // or error out due to the IP address change.
- void OnIPAddressChanged() override;
-
- // SSLConfigService::Observer methods:
-
- // We perform the same flushing as described above when SSL settings change.
- void OnSSLConfigChanged() override;
-
- // CertDatabase::Observer methods:
-
- // We perform the same flushing as described above when certificate database
- // is changed.
- void OnCertDBChanged() override;
-
- void DumpMemoryStats(base::trace_event::ProcessMemoryDump* pmd,
- const SpdyString& parent_dump_absolute_name) const;
-
- private:
- friend class SpdySessionPoolPeer; // For testing.
-
- typedef std::set<SpdySession*> SessionSet;
- typedef std::vector<base::WeakPtr<SpdySession> > WeakSessionList;
- typedef std::map<SpdySessionKey, base::WeakPtr<SpdySession> >
- AvailableSessionMap;
- typedef std::map<IPEndPoint, SpdySessionKey> AliasMap;
- typedef std::map<GURL, WeakSessionList> UnclaimedPushedStreamMap;
-
- // Returns true iff |session| is in |available_sessions_|.
- bool IsSessionAvailable(const base::WeakPtr<SpdySession>& session) const;
-
- // Map the given key to the given session. There must not already be
- // a mapping for |key|.
- void MapKeyToAvailableSession(const SpdySessionKey& key,
- const base::WeakPtr<SpdySession>& session);
-
- // Returns an iterator into |available_sessions_| for the given key,
- // which may be equal to |available_sessions_.end()|.
- AvailableSessionMap::iterator LookupAvailableSessionByKey(
- const SpdySessionKey& key);
-
- // Remove the mapping of the given key, which must exist.
- void UnmapKey(const SpdySessionKey& key);
-
- // Remove all aliases for |key| from the aliases table.
- void RemoveAliases(const SpdySessionKey& key);
-
- // Get a copy of the current sessions as a list of WeakPtrs. Used by
- // CloseCurrentSessionsHelper() below.
- WeakSessionList GetCurrentSessions() const;
-
- // Close only the currently existing SpdySessions with |error|. Let
- // any new ones created while this method is running continue to
- // live. If |idle_only| is true only idle sessions are closed.
- void CloseCurrentSessionsHelper(Error error,
- const SpdyString& description,
- bool idle_only);
-
- HttpServerProperties* http_server_properties_;
-
- TransportSecurityState* transport_security_state_;
-
- // The set of all sessions. This is a superset of the sessions in
- // |available_sessions_|.
- //
- // |sessions_| owns all its SpdySession objects.
- SessionSet sessions_;
-
- // This is a map of available sessions by key. A session may appear
- // more than once in this map if it has aliases.
- AvailableSessionMap available_sessions_;
-
- // A map of IPEndPoint aliases for sessions.
- AliasMap aliases_;
-
- // A map of all SpdySessions owned by |this| that have an unclaimed pushed
- // streams for a GURL. Might contain invalid WeakPtr's.
- // A single SpdySession can only have at most one pushed stream for each GURL,
- // but it is possible that multiple SpdySessions have pushed streams for the
- // same GURL.
- UnclaimedPushedStreamMap unclaimed_pushed_streams_;
-
- const scoped_refptr<SSLConfigService> ssl_config_service_;
- HostResolver* const resolver_;
-
- // Defaults to true. May be controlled via SpdySessionPoolPeer for tests.
- bool enable_sending_initial_data_;
- bool enable_ping_based_connection_checking_;
-
- size_t session_max_recv_window_size_;
-
- // Settings that are sent in the initial SETTINGS frame
- // (if |enable_sending_initial_data_| is true),
- // and also control SpdySession parameters like initial receive window size
- // and maximum HPACK dynamic table size.
- const SettingsMap initial_settings_;
-
- TimeFunc time_func_;
- ServerPushDelegate* push_delegate_;
-
- // Determines if a proxy is a trusted SPDY proxy, which is allowed to push
- // resources from origins that are different from those of their associated
- // streams. May be nullptr.
- ProxyDelegate* proxy_delegate_;
-
- DISALLOW_COPY_AND_ASSIGN(SpdySessionPool);
-};
-
-} // namespace net
-
-#endif // NET_SPDY_SPDY_SESSION_POOL_H_
« no previous file with comments | « net/spdy/spdy_session_key.cc ('k') | net/spdy/spdy_session_pool.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698