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

Unified Diff: net/flip/flip_session_pool.h

Issue 348066: Flip: FlipSessionPool changes. (Closed)
Patch Set: Windows build fix. Created 11 years, 1 month 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
Index: net/flip/flip_session_pool.h
diff --git a/net/flip/flip_session_pool.h b/net/flip/flip_session_pool.h
index 9562413ebf62203ec0cf5944f2b74f97c940aea3..e9c01a39d63a141c4498ff19b0c372e14b50fce9 100644
--- a/net/flip/flip_session_pool.h
+++ b/net/flip/flip_session_pool.h
@@ -15,43 +15,60 @@
namespace net {
+class ClientSocket;
class FlipSession;
class HttpNetworkSession;
// This is a very simple pool for open FlipSessions.
// TODO(mbelshe): Make this production ready.
-class FlipSessionPool {
+class FlipSessionPool : public base::RefCounted<FlipSessionPool> {
public:
- FlipSessionPool() {}
- virtual ~FlipSessionPool() {}
+ FlipSessionPool();
+ virtual ~FlipSessionPool();
- // Factory for finding open sessions.
+ // Either returns an existing FlipSession or creates a new FlipSession for
+ // use.
FlipSession* Get(const HostResolver::RequestInfo& info,
HttpNetworkSession* session);
- // Close all Flip Sessions; used for debugging.
- static void CloseAllSessions();
+ // Builds a FlipSession from an existing socket.
+ FlipSession* GetFlipSessionFromSocket(
+ const HostResolver::RequestInfo& info,
+ HttpNetworkSession* session,
+ ClientSocket* socket) {
+ // TODO(willchan): Implement this to allow a HttpNetworkTransaction to
+ // upgrade a TCP connection from HTTP to FLIP.
+ return NULL;
+ }
- protected:
- friend class FlipSession;
+ // TODO(willchan): Consider renaming to HasReusableSession, since perhaps we
+ // should be creating a new session.
+ bool HasSession(const HostResolver::RequestInfo& info) const;
- // Return a FlipSession to the pool.
- void Remove(FlipSession* session);
+ // Close all Flip Sessions; used for debugging.
+ void CloseAllSessions();
private:
+ friend class FlipSession; // Needed for Remove().
+
typedef std::list<FlipSession*> FlipSessionList;
typedef std::map<std::string, FlipSessionList*> FlipSessionsMap;
+ // Return a FlipSession to the pool.
+ void Remove(FlipSession* session);
+
// Helper functions for manipulating the lists.
- FlipSessionList* AddSessionList(std::string domain);
- static FlipSessionList* GetSessionList(std::string domain);
- static void RemoveSessionList(std::string domain);
+ FlipSessionList* AddSessionList(const std::string& domain);
+ FlipSessionList* GetSessionList(const std::string& domain);
+ const FlipSessionList* GetSessionList(const std::string& domain) const;
+ void RemoveSessionList(const std::string& domain);
// This is our weak session pool - one session per domain.
- static scoped_ptr<FlipSessionsMap> sessions_;
+ FlipSessionsMap sessions_;
+
+ DISALLOW_COPY_AND_ASSIGN(FlipSessionPool);
};
} // namespace net
#endif // NET_FLIP_FLIP_SESSION_POOL_H_
-

Powered by Google App Engine
This is Rietveld 408576698