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

Side by Side Diff: net/flip/flip_session.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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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_FLIP_FLIP_SESSION_H_ 5 #ifndef NET_FLIP_FLIP_SESSION_H_
6 #define NET_FLIP_FLIP_SESSION_H_ 6 #define NET_FLIP_FLIP_SESSION_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <list> 9 #include <list>
10 #include <map> 10 #include <map>
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 private: 113 private:
114 scoped_refptr<IOBufferWithSize> buffer_; 114 scoped_refptr<IOBufferWithSize> buffer_;
115 int priority_; 115 int priority_;
116 int position_; 116 int position_;
117 static int order_; // Maintains a FIFO order for equal priorities. 117 static int order_; // Maintains a FIFO order for equal priorities.
118 }; 118 };
119 119
120 class FlipSession : public base::RefCounted<FlipSession>, 120 class FlipSession : public base::RefCounted<FlipSession>,
121 public flip::FlipFramerVisitorInterface { 121 public flip::FlipFramerVisitorInterface {
122 public: 122 public:
123 // Factory for finding open sessions.
124 // TODO(mbelshe): Break this out into a connection pool class?
125 static FlipSession* GetFlipSession(const HostResolver::RequestInfo&,
126 HttpNetworkSession* session);
127 virtual ~FlipSession(); 123 virtual ~FlipSession();
128 124
129 // Get the domain for this FlipSession. 125 // Get the domain for this FlipSession.
130 std::string domain() { return domain_; } 126 const std::string& domain() const { return domain_; }
131 127
132 // Connect the FLIP Socket. 128 // Connect the FLIP Socket.
133 // Returns net::Error::OK on success. 129 // Returns net::Error::OK on success.
134 // Note that this call does not wait for the connect to complete. Callers can 130 // Note that this call does not wait for the connect to complete. Callers can
135 // immediately start using the FlipSession while it connects. 131 // immediately start using the FlipSession while it connects.
136 net::Error Connect(const std::string& group_name, 132 net::Error Connect(const std::string& group_name,
137 const HostResolver::RequestInfo& host, int priority); 133 const HostResolver::RequestInfo& host, int priority);
138 134
139 // Create a new stream. 135 // Create a new stream.
140 // FlipDelegate must remain valid until the stream is either cancelled by the 136 // FlipDelegate must remain valid until the stream is either cancelled by the
141 // creator via CancelStream or the FlipDelegate OnClose or OnCancel callbacks 137 // creator via CancelStream or the FlipDelegate OnClose or OnCancel callbacks
142 // have been made. 138 // have been made.
143 // Once the stream is created, the delegate should wait for a callback. 139 // Once the stream is created, the delegate should wait for a callback.
144 int CreateStream(FlipDelegate* delegate); 140 int CreateStream(FlipDelegate* delegate);
145 141
146 // Cancel a stream. 142 // Cancel a stream.
147 bool CancelStream(int id); 143 bool CancelStream(int id);
148 144
149 // Check if a stream is active. 145 // Check if a stream is active.
150 bool IsStreamActive(int id); 146 bool IsStreamActive(int id) const;
151 147
152 // The LoadState is used for informing the user of the current network 148 // The LoadState is used for informing the user of the current network
153 // status, such as "resolving host", "connecting", etc. 149 // status, such as "resolving host", "connecting", etc.
154 LoadState GetLoadState() const; 150 LoadState GetLoadState() const;
151
155 protected: 152 protected:
156 friend class FlipNetworkTransactionTest; 153 friend class FlipNetworkTransactionTest;
157 friend class FlipSessionPool; 154 friend class FlipSessionPool;
158 friend class HttpNetworkLayer; // Temporary for server. 155 friend class HttpNetworkLayer; // Temporary for server.
159 156
160 // Provide access to the framer for testing. 157 // Provide access to the framer for testing.
161 flip::FlipFramer* GetFramer() { return &flip_framer_; } 158 flip::FlipFramer* GetFramer() { return &flip_framer_; }
162 159
163 // Create a new FlipSession. 160 // Create a new FlipSession.
164 // |host| is the hostname that this session connects to. 161 // |host| is the hostname that this session connects to.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 251
255 // TODO(mbelshe): this is ugly!! 252 // TODO(mbelshe): this is ugly!!
256 // The packet we are currently sending. 253 // The packet we are currently sending.
257 PrioritizedIOBuffer in_flight_write_; 254 PrioritizedIOBuffer in_flight_write_;
258 bool delayed_write_pending_; 255 bool delayed_write_pending_;
259 bool write_pending_; 256 bool write_pending_;
260 257
261 // Flip Frame state. 258 // Flip Frame state.
262 flip::FlipFramer flip_framer_; 259 flip::FlipFramer flip_framer_;
263 260
264 // This is our weak session pool - one session per domain.
265 static scoped_ptr<FlipSessionPool> session_pool_;
266 static bool use_ssl_; 261 static bool use_ssl_;
267 }; 262 };
268 263
269 } // namespace net 264 } // namespace net
270 265
271 #endif // NET_FLIP_FLIP_SESSION_H_ 266 #endif // NET_FLIP_FLIP_SESSION_H_
272
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698