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

Side by Side Diff: webrtc/p2p/base/portallocator.h

Issue 2120733002: Make the state transition for a PortAllocatorSession in each derived class (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: . Created 4 years, 5 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 unified diff | Download patch
« no previous file with comments | « webrtc/p2p/base/fakeportallocator.h ('k') | webrtc/p2p/client/basicportallocator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 81
82 // CF = CANDIDATE FILTER 82 // CF = CANDIDATE FILTER
83 enum { 83 enum {
84 CF_NONE = 0x0, 84 CF_NONE = 0x0,
85 CF_HOST = 0x1, 85 CF_HOST = 0x1,
86 CF_REFLEXIVE = 0x2, 86 CF_REFLEXIVE = 0x2,
87 CF_RELAY = 0x4, 87 CF_RELAY = 0x4,
88 CF_ALL = 0x7, 88 CF_ALL = 0x7,
89 }; 89 };
90 90
91 enum class SessionState {
92 GATHERING, // Actively allocating ports and gathering candidates.
93 CLEARED, // Current allocation process has been stopped but may start
94 // new ones.
95 STOPPED // This session has completely stopped, no new allocation
96 // process will be started.
97 };
98
99 // TODO(deadbeef): Rename to TurnCredentials (and username to ufrag). 91 // TODO(deadbeef): Rename to TurnCredentials (and username to ufrag).
100 struct RelayCredentials { 92 struct RelayCredentials {
101 RelayCredentials() {} 93 RelayCredentials() {}
102 RelayCredentials(const std::string& username, const std::string& password) 94 RelayCredentials(const std::string& username, const std::string& password)
103 : username(username), password(password) {} 95 : username(username), password(password) {}
104 96
105 bool operator==(const RelayCredentials& o) const { 97 bool operator==(const RelayCredentials& o) const {
106 return username == o.username && password == o.password; 98 return username == o.username && password == o.password;
107 } 99 }
108 bool operator!=(const RelayCredentials& o) const { return !(*this == o); } 100 bool operator!=(const RelayCredentials& o) const { return !(*this == o); }
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 bool pooled() const { return ice_ufrag_.empty(); } 152 bool pooled() const { return ice_ufrag_.empty(); }
161 153
162 // Setting this filter should affect not only candidates gathered in the 154 // Setting this filter should affect not only candidates gathered in the
163 // future, but candidates already gathered and ports already "ready", 155 // future, but candidates already gathered and ports already "ready",
164 // which would be returned by ReadyCandidates() and ReadyPorts(). 156 // which would be returned by ReadyCandidates() and ReadyPorts().
165 // 157 //
166 // Default filter should be CF_ALL. 158 // Default filter should be CF_ALL.
167 virtual void SetCandidateFilter(uint32_t filter) = 0; 159 virtual void SetCandidateFilter(uint32_t filter) = 0;
168 160
169 // Starts gathering STUN and Relay configurations. 161 // Starts gathering STUN and Relay configurations.
170 virtual void StartGettingPorts() { state_ = SessionState::GATHERING; } 162 virtual void StartGettingPorts() = 0;
171 // Completely stops the gathering process and will not start new ones. 163 // Completely stops the gathering process and will not start new ones.
172 virtual void StopGettingPorts() { state_ = SessionState::STOPPED; } 164 virtual void StopGettingPorts() = 0;
165 // Whether the session is actively getting ports.
166 virtual bool IsGettingPorts() = 0;
167 // ClearGettingPorts and IsCleared are used by continual gathering.
173 // Only stops the existing gathering process but may start new ones if needed. 168 // Only stops the existing gathering process but may start new ones if needed.
174 virtual void ClearGettingPorts() { state_ = SessionState::CLEARED; } 169 virtual void ClearGettingPorts() = 0;
175 // Whether the session is actively getting ports.
176 bool IsGettingPorts() { return state_ == SessionState::GATHERING; }
177 // Whether it is in the state where the existing gathering process is stopped, 170 // Whether it is in the state where the existing gathering process is stopped,
178 // but new ones may be started (basically after calling ClearGettingPorts). 171 // but new ones may be started (basically after calling ClearGettingPorts).
179 bool IsCleared() { return state_ == SessionState::CLEARED; } 172 virtual bool IsCleared() const { return false; }
180 // Whether the session has completely stopped. 173 // Whether the session has completely stopped.
181 bool IsStopped() { return state_ == SessionState::STOPPED; } 174 virtual bool IsStopped() const { return false; }
182 // Re-gathers candidates on networks that do not have any connections. More 175 // Re-gathers candidates on networks that do not have any connections. More
183 // precisely, a network interface may have more than one IP addresses (e.g., 176 // precisely, a network interface may have more than one IP addresses (e.g.,
184 // IPv4 and IPv6 addresses). Each address subnet will be used to create a 177 // IPv4 and IPv6 addresses). Each address subnet will be used to create a
185 // network. Only if all networks of an interface have no connection, the 178 // network. Only if all networks of an interface have no connection, the
186 // implementation should start re-gathering on all networks of that interface. 179 // implementation should start re-gathering on all networks of that interface.
187 virtual void RegatherOnFailedNetworks() {} 180 virtual void RegatherOnFailedNetworks() {}
188 // Re-gathers candidates on all networks. 181 // Re-gathers candidates on all networks.
189 // TODO(honghaiz): Implement this in BasicPortAllocator. 182 // TODO(honghaiz): Implement this in BasicPortAllocator.
190 virtual void RegatherOnAllNetworks() {} 183 virtual void RegatherOnAllNetworks() {}
191 184
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 ice_pwd_ = ice_pwd; 238 ice_pwd_ = ice_pwd;
246 UpdateIceParametersInternal(); 239 UpdateIceParametersInternal();
247 } 240 }
248 241
249 uint32_t flags_; 242 uint32_t flags_;
250 uint32_t generation_; 243 uint32_t generation_;
251 std::string content_name_; 244 std::string content_name_;
252 int component_; 245 int component_;
253 std::string ice_ufrag_; 246 std::string ice_ufrag_;
254 std::string ice_pwd_; 247 std::string ice_pwd_;
255 SessionState state_ = SessionState::CLEARED;
256 248
257 // SetIceParameters is an implementation detail which only PortAllocator 249 // SetIceParameters is an implementation detail which only PortAllocator
258 // should be able to call. 250 // should be able to call.
259 friend class PortAllocator; 251 friend class PortAllocator;
260 }; 252 };
261 253
262 // Every method of PortAllocator (including the destructor) must be called on 254 // Every method of PortAllocator (including the destructor) must be called on
263 // the same thread, except for the constructor which may be called on any 255 // the same thread, except for the constructor which may be called on any
264 // thread. 256 // thread.
265 // 257 //
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 // This variable represents the total number of pooled sessions 389 // This variable represents the total number of pooled sessions
398 // both owned by this class and taken by TakePooledSession. 390 // both owned by this class and taken by TakePooledSession.
399 int allocated_pooled_session_count_ = 0; 391 int allocated_pooled_session_count_ = 0;
400 std::deque<std::unique_ptr<PortAllocatorSession>> pooled_sessions_; 392 std::deque<std::unique_ptr<PortAllocatorSession>> pooled_sessions_;
401 bool prune_turn_ports_ = false; 393 bool prune_turn_ports_ = false;
402 }; 394 };
403 395
404 } // namespace cricket 396 } // namespace cricket
405 397
406 #endif // WEBRTC_P2P_BASE_PORTALLOCATOR_H_ 398 #endif // WEBRTC_P2P_BASE_PORTALLOCATOR_H_
OLDNEW
« no previous file with comments | « webrtc/p2p/base/fakeportallocator.h ('k') | webrtc/p2p/client/basicportallocator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698