TurnCustomizer - an interface for modifying stun messages sent by TurnPort

This patch adds an interface that allows modification of stun messages
sent by TurnPort. A user can inject a TurnCustomizer on the RTCConfig
and the TurnCustomizer will be invoked by TurnPort before sending
message. This allows user to e.g add custom attributes as described
in rtf5389.

BUG=webrtc:8313

Change-Id: I6f4333e9f8ff7fd20f32677be19285f15e1180b6
Reviewed-on: https://webrtc-review.googlesource.com/7618
Reviewed-by: Guido Urdaneta <guidou@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20233}
This commit is contained in:
Jonas Oreland
2017-10-10 14:01:40 +02:00
committed by Commit Bot
parent 2ff7ecfceb
commit bdcee28ee9
27 changed files with 559 additions and 36 deletions

View File

@ -25,6 +25,7 @@
namespace webrtc {
class MetricsObserverInterface;
class TurnCustomizer;
}
namespace cricket {
@ -362,7 +363,8 @@ class PortAllocator : public sigslot::has_slots<> {
bool SetConfiguration(const ServerAddresses& stun_servers,
const std::vector<RelayServerConfig>& turn_servers,
int candidate_pool_size,
bool prune_turn_ports);
bool prune_turn_ports,
webrtc::TurnCustomizer* turn_customizer = nullptr);
const ServerAddresses& stun_servers() const { return stun_servers_; }
@ -477,6 +479,10 @@ class PortAllocator : public sigslot::has_slots<> {
metrics_observer_ = observer;
}
webrtc::TurnCustomizer* turn_customizer() {
return turn_customizer_;
}
protected:
virtual PortAllocatorSession* CreateSessionInternal(
const std::string& content_name,
@ -512,6 +518,11 @@ class PortAllocator : public sigslot::has_slots<> {
bool prune_turn_ports_ = false;
webrtc::MetricsObserverInterface* metrics_observer_ = nullptr;
// Customizer for TURN messages.
// The instance is owned by application and will be shared among
// all TurnPort(s) created.
webrtc::TurnCustomizer* turn_customizer_ = nullptr;
};
} // namespace cricket