Index: webrtc/p2p/base/portallocator.h |
diff --git a/webrtc/p2p/base/portallocator.h b/webrtc/p2p/base/portallocator.h |
index 8befbadcc73981375d22ba23b321c417fbb2cd21..3c81068060a3a717f94e329db7ed541dc86c9e51 100644 |
--- a/webrtc/p2p/base/portallocator.h |
+++ b/webrtc/p2p/base/portallocator.h |
@@ -23,6 +23,10 @@ |
#include "webrtc/base/sigslot.h" |
#include "webrtc/base/thread.h" |
+namespace webrtc { |
+class MetricsObserverInterface; |
+} |
+ |
namespace cricket { |
// PortAllocator is responsible for allocating Port types for a given |
@@ -72,6 +76,9 @@ enum { |
PORTALLOCATOR_DISABLE_COSTLY_NETWORKS = 0x2000, |
}; |
+// Defines various reasons that have caused ICE regathering. |
+enum class IceRegatheringReason { NETWORK_CHANGE, NETWORK_FAILURE, MAX_VALUE }; |
+ |
const uint32_t kDefaultPortAllocatorFlags = 0; |
const uint32_t kDefaultStepDelay = 1000; // 1 sec step delay. |
@@ -216,6 +223,9 @@ class PortAllocatorSession : public sigslot::has_slots<> { |
SignalCandidatesRemoved; |
sigslot::signal1<PortAllocatorSession*> SignalCandidatesAllocationDone; |
+ sigslot::signal2<PortAllocatorSession*, IceRegatheringReason> |
+ SignalIceRegathering; |
+ |
virtual uint32_t generation() { return generation_; } |
virtual void set_generation(uint32_t generation) { generation_ = generation; } |
sigslot::signal1<PortAllocatorSession*> SignalDestroyed; |
@@ -370,6 +380,10 @@ class PortAllocator : public sigslot::has_slots<> { |
const std::string& origin() const { return origin_; } |
void set_origin(const std::string& origin) { origin_ = origin; } |
+ void SetMetricsObserver(webrtc::MetricsObserverInterface* observer) { |
+ metrics_observer_ = observer; |
+ } |
+ |
protected: |
virtual PortAllocatorSession* CreateSessionInternal( |
const std::string& content_name, |
@@ -377,6 +391,14 @@ class PortAllocator : public sigslot::has_slots<> { |
const std::string& ice_ufrag, |
const std::string& ice_pwd) = 0; |
+ webrtc::MetricsObserverInterface* metrics_observer() { |
+ return metrics_observer_; |
+ } |
+ |
+ const std::deque<std::unique_ptr<PortAllocatorSession>>& pooled_sessions() { |
+ return pooled_sessions_; |
+ } |
+ |
uint32_t flags_; |
std::string agent_; |
rtc::ProxyInfo proxy_; |
@@ -397,6 +419,8 @@ class PortAllocator : public sigslot::has_slots<> { |
int allocated_pooled_session_count_ = 0; |
std::deque<std::unique_ptr<PortAllocatorSession>> pooled_sessions_; |
bool prune_turn_ports_ = false; |
+ |
+ webrtc::MetricsObserverInterface* metrics_observer_ = nullptr; |
}; |
} // namespace cricket |