OLD | NEW |
---|---|
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 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
300 class PortAllocator : public sigslot::has_slots<> { | 300 class PortAllocator : public sigslot::has_slots<> { |
301 public: | 301 public: |
302 PortAllocator() : | 302 PortAllocator() : |
303 flags_(kDefaultPortAllocatorFlags), | 303 flags_(kDefaultPortAllocatorFlags), |
304 min_port_(0), | 304 min_port_(0), |
305 max_port_(0), | 305 max_port_(0), |
306 step_delay_(kDefaultStepDelay), | 306 step_delay_(kDefaultStepDelay), |
307 allow_tcp_listen_(true), | 307 allow_tcp_listen_(true), |
308 candidate_filter_(CF_ALL) { | 308 candidate_filter_(CF_ALL) { |
309 } | 309 } |
310 | |
310 virtual ~PortAllocator() {} | 311 virtual ~PortAllocator() {} |
311 | 312 |
312 // This should be called on the PortAllocator's thread before the | 313 // This should be called on the PortAllocator's thread before the |
313 // PortAllocator is used. Subclasses may override this if necessary. | 314 // PortAllocator is used. Subclasses may override this if necessary. |
314 virtual void Initialize() {} | 315 virtual void Initialize() {} |
315 | 316 |
316 // Set STUN and TURN servers to be used in future sessions, and set | 317 // Set STUN and TURN servers to be used in future sessions, and set |
317 // candidate pool size, as described in JSEP. | 318 // candidate pool size, as described in JSEP. |
318 // | 319 // |
319 // If the servers are changing and the candidate pool size is nonzero, | 320 // If the servers are changing, and the candidate pool size is nonzero, and |
320 // existing pooled sessions will be destroyed and new ones created. | 321 // FreezeCandidatePool hasn't been called, existing pooled sessions will be |
322 // destroyed and new ones created. | |
321 // | 323 // |
322 // If the servers are not changing but the candidate pool size is, | 324 // If the servers are not changing but the candidate pool size is, and |
323 // pooled sessions will be either created or destroyed as necessary. | 325 // FreezeCandidatePool hasn't been called, pooled sessions will be either |
326 // created or destroyed as necessary. | |
324 // | 327 // |
325 // Returns true if the configuration could successfully be changed. | 328 // Returns true if the configuration could successfully be changed. |
326 bool SetConfiguration(const ServerAddresses& stun_servers, | 329 bool SetConfiguration(const ServerAddresses& stun_servers, |
327 const std::vector<RelayServerConfig>& turn_servers, | 330 const std::vector<RelayServerConfig>& turn_servers, |
328 int candidate_pool_size, | 331 int candidate_pool_size, |
329 bool prune_turn_ports); | 332 bool prune_turn_ports); |
330 | 333 |
331 const ServerAddresses& stun_servers() const { return stun_servers_; } | 334 const ServerAddresses& stun_servers() const { return stun_servers_; } |
332 | 335 |
333 const std::vector<RelayServerConfig>& turn_servers() const { | 336 const std::vector<RelayServerConfig>& turn_servers() const { |
(...skipping 22 matching lines...) Expand all Loading... | |
356 // If no pooled sessions are available, returns null. | 359 // If no pooled sessions are available, returns null. |
357 std::unique_ptr<PortAllocatorSession> TakePooledSession( | 360 std::unique_ptr<PortAllocatorSession> TakePooledSession( |
358 const std::string& content_name, | 361 const std::string& content_name, |
359 int component, | 362 int component, |
360 const std::string& ice_ufrag, | 363 const std::string& ice_ufrag, |
361 const std::string& ice_pwd); | 364 const std::string& ice_pwd); |
362 | 365 |
363 // Returns the next session that would be returned by TakePooledSession. | 366 // Returns the next session that would be returned by TakePooledSession. |
364 const PortAllocatorSession* GetPooledSession() const; | 367 const PortAllocatorSession* GetPooledSession() const; |
365 | 368 |
369 // After FreezeCandidatePool is called, changing the candidate pool size will | |
370 // no longer be allowed, and changing ICE servers will not cause pooled | |
371 // sessions to be recreated. | |
372 // | |
373 // Expected to be called when SetLocalDescription is called on a | |
374 // PeerConnection. Can be called safely on any thread as long as not | |
375 // simultaneously with SetConfiguration. | |
376 void FreezeCandidatePool(); | |
377 | |
378 // Discard any remaining pooled sessions. | |
379 void DiscardPooledSessions(); | |
pthatcher1
2017/03/09 00:28:15
DiscardCandidatePool?
To be consistent with Freez
Taylor Brandstetter
2017/03/09 14:59:03
Done
| |
380 | |
366 uint32_t flags() const { return flags_; } | 381 uint32_t flags() const { return flags_; } |
367 void set_flags(uint32_t flags) { flags_ = flags; } | 382 void set_flags(uint32_t flags) { flags_ = flags; } |
368 | 383 |
369 const std::string& user_agent() const { return agent_; } | 384 const std::string& user_agent() const { return agent_; } |
370 const rtc::ProxyInfo& proxy() const { return proxy_; } | 385 const rtc::ProxyInfo& proxy() const { return proxy_; } |
371 void set_proxy(const std::string& agent, const rtc::ProxyInfo& proxy) { | 386 void set_proxy(const std::string& agent, const rtc::ProxyInfo& proxy) { |
372 agent_ = agent; | 387 agent_ = agent; |
373 proxy_ = proxy; | 388 proxy_ = proxy; |
374 } | 389 } |
375 | 390 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
432 uint32_t step_delay_; | 447 uint32_t step_delay_; |
433 bool allow_tcp_listen_; | 448 bool allow_tcp_listen_; |
434 uint32_t candidate_filter_; | 449 uint32_t candidate_filter_; |
435 std::string origin_; | 450 std::string origin_; |
436 | 451 |
437 private: | 452 private: |
438 ServerAddresses stun_servers_; | 453 ServerAddresses stun_servers_; |
439 std::vector<RelayServerConfig> turn_servers_; | 454 std::vector<RelayServerConfig> turn_servers_; |
440 int candidate_pool_size_ = 0; // Last value passed into SetConfiguration. | 455 int candidate_pool_size_ = 0; // Last value passed into SetConfiguration. |
441 std::deque<std::unique_ptr<PortAllocatorSession>> pooled_sessions_; | 456 std::deque<std::unique_ptr<PortAllocatorSession>> pooled_sessions_; |
457 bool candidate_pool_frozen_ = false; | |
442 bool prune_turn_ports_ = false; | 458 bool prune_turn_ports_ = false; |
443 | 459 |
444 webrtc::MetricsObserverInterface* metrics_observer_ = nullptr; | 460 webrtc::MetricsObserverInterface* metrics_observer_ = nullptr; |
445 }; | 461 }; |
446 | 462 |
447 } // namespace cricket | 463 } // namespace cricket |
448 | 464 |
449 #endif // WEBRTC_P2P_BASE_PORTALLOCATOR_H_ | 465 #endif // WEBRTC_P2P_BASE_PORTALLOCATOR_H_ |
OLD | NEW |