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

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

Issue 2717893003: Making candidate pool size behave as decided in JSEP. (Closed)
Patch Set: Merge with master Created 3 years, 9 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 | « no previous file | webrtc/p2p/base/portallocator.cc » ('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 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 class PortAllocator : public sigslot::has_slots<> { 299 class PortAllocator : public sigslot::has_slots<> {
300 public: 300 public:
301 PortAllocator() : 301 PortAllocator() :
302 flags_(kDefaultPortAllocatorFlags), 302 flags_(kDefaultPortAllocatorFlags),
303 min_port_(0), 303 min_port_(0),
304 max_port_(0), 304 max_port_(0),
305 step_delay_(kDefaultStepDelay), 305 step_delay_(kDefaultStepDelay),
306 allow_tcp_listen_(true), 306 allow_tcp_listen_(true),
307 candidate_filter_(CF_ALL) { 307 candidate_filter_(CF_ALL) {
308 } 308 }
309
309 virtual ~PortAllocator() {} 310 virtual ~PortAllocator() {}
310 311
311 // This should be called on the PortAllocator's thread before the 312 // This should be called on the PortAllocator's thread before the
312 // PortAllocator is used. Subclasses may override this if necessary. 313 // PortAllocator is used. Subclasses may override this if necessary.
313 virtual void Initialize() {} 314 virtual void Initialize() {}
314 315
315 // Set STUN and TURN servers to be used in future sessions, and set 316 // Set STUN and TURN servers to be used in future sessions, and set
316 // candidate pool size, as described in JSEP. 317 // candidate pool size, as described in JSEP.
317 // 318 //
318 // If the servers are changing and the candidate pool size is nonzero, 319 // If the servers are changing, and the candidate pool size is nonzero, and
319 // existing pooled sessions will be destroyed and new ones created. 320 // FreezeCandidatePool hasn't been called, existing pooled sessions will be
321 // destroyed and new ones created.
320 // 322 //
321 // If the servers are not changing but the candidate pool size is, 323 // If the servers are not changing but the candidate pool size is, and
322 // pooled sessions will be either created or destroyed as necessary. 324 // FreezeCandidatePool hasn't been called, pooled sessions will be either
325 // created or destroyed as necessary.
323 // 326 //
324 // Returns true if the configuration could successfully be changed. 327 // Returns true if the configuration could successfully be changed.
325 bool SetConfiguration(const ServerAddresses& stun_servers, 328 bool SetConfiguration(const ServerAddresses& stun_servers,
326 const std::vector<RelayServerConfig>& turn_servers, 329 const std::vector<RelayServerConfig>& turn_servers,
327 int candidate_pool_size, 330 int candidate_pool_size,
328 bool prune_turn_ports); 331 bool prune_turn_ports);
329 332
330 const ServerAddresses& stun_servers() const { return stun_servers_; } 333 const ServerAddresses& stun_servers() const { return stun_servers_; }
331 334
332 const std::vector<RelayServerConfig>& turn_servers() const { 335 const std::vector<RelayServerConfig>& turn_servers() const {
(...skipping 22 matching lines...) Expand all
355 // If no pooled sessions are available, returns null. 358 // If no pooled sessions are available, returns null.
356 std::unique_ptr<PortAllocatorSession> TakePooledSession( 359 std::unique_ptr<PortAllocatorSession> TakePooledSession(
357 const std::string& content_name, 360 const std::string& content_name,
358 int component, 361 int component,
359 const std::string& ice_ufrag, 362 const std::string& ice_ufrag,
360 const std::string& ice_pwd); 363 const std::string& ice_pwd);
361 364
362 // Returns the next session that would be returned by TakePooledSession. 365 // Returns the next session that would be returned by TakePooledSession.
363 const PortAllocatorSession* GetPooledSession() const; 366 const PortAllocatorSession* GetPooledSession() const;
364 367
368 // After FreezeCandidatePool is called, changing the candidate pool size will
369 // no longer be allowed, and changing ICE servers will not cause pooled
370 // sessions to be recreated.
371 //
372 // Expected to be called when SetLocalDescription is called on a
373 // PeerConnection. Can be called safely on any thread as long as not
374 // simultaneously with SetConfiguration.
375 void FreezeCandidatePool();
376
377 // Discard any remaining pooled sessions.
378 void DiscardCandidatePool();
379
365 uint32_t flags() const { return flags_; } 380 uint32_t flags() const { return flags_; }
366 void set_flags(uint32_t flags) { flags_ = flags; } 381 void set_flags(uint32_t flags) { flags_ = flags; }
367 382
368 // Gets/Sets the port range to use when choosing client ports. 383 // Gets/Sets the port range to use when choosing client ports.
369 int min_port() const { return min_port_; } 384 int min_port() const { return min_port_; }
370 int max_port() const { return max_port_; } 385 int max_port() const { return max_port_; }
371 bool SetPortRange(int min_port, int max_port) { 386 bool SetPortRange(int min_port, int max_port) {
372 if (min_port > max_port) { 387 if (min_port > max_port) {
373 return false; 388 return false;
374 } 389 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 uint32_t step_delay_; 437 uint32_t step_delay_;
423 bool allow_tcp_listen_; 438 bool allow_tcp_listen_;
424 uint32_t candidate_filter_; 439 uint32_t candidate_filter_;
425 std::string origin_; 440 std::string origin_;
426 441
427 private: 442 private:
428 ServerAddresses stun_servers_; 443 ServerAddresses stun_servers_;
429 std::vector<RelayServerConfig> turn_servers_; 444 std::vector<RelayServerConfig> turn_servers_;
430 int candidate_pool_size_ = 0; // Last value passed into SetConfiguration. 445 int candidate_pool_size_ = 0; // Last value passed into SetConfiguration.
431 std::deque<std::unique_ptr<PortAllocatorSession>> pooled_sessions_; 446 std::deque<std::unique_ptr<PortAllocatorSession>> pooled_sessions_;
447 bool candidate_pool_frozen_ = false;
432 bool prune_turn_ports_ = false; 448 bool prune_turn_ports_ = false;
433 449
434 webrtc::MetricsObserverInterface* metrics_observer_ = nullptr; 450 webrtc::MetricsObserverInterface* metrics_observer_ = nullptr;
435 }; 451 };
436 452
437 } // namespace cricket 453 } // namespace cricket
438 454
439 #endif // WEBRTC_P2P_BASE_PORTALLOCATOR_H_ 455 #endif // WEBRTC_P2P_BASE_PORTALLOCATOR_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/p2p/base/portallocator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698