Index: remoting/protocol/transport_context.h |
diff --git a/remoting/protocol/transport_context.h b/remoting/protocol/transport_context.h |
index 0cc624117912dba50e0b9956b4aa485d9bd1f369..1c434f6858d46af798b485e42603908684ca460f 100644 |
--- a/remoting/protocol/transport_context.h |
+++ b/remoting/protocol/transport_context.h |
@@ -5,6 +5,7 @@ |
#ifndef REMOTING_PROTOCOL_TRANSPORT_CONTEXT_H_ |
#define REMOTING_PROTOCOL_TRANSPORT_CONTEXT_H_ |
+#include <array> |
#include <list> |
#include <string> |
#include <vector> |
@@ -31,6 +32,14 @@ class IceConfigRequest; |
// TURN configuration. |
class TransportContext : public base::RefCountedThreadSafe<TransportContext> { |
public: |
+ enum RelayMode { |
+ GTURN, |
+ TURN, |
+ |
+ LAST_RELAYMODE = TURN |
+ }; |
+ static const int kNumRelayModes = RelayMode::LAST_RELAYMODE + 1; |
+ |
typedef base::Callback<void(const IceConfig& ice_config)> |
GetIceConfigCallback; |
@@ -42,11 +51,14 @@ class TransportContext : public base::RefCountedThreadSafe<TransportContext> { |
const NetworkSettings& network_settings, |
TransportRole role); |
- // Enables standard TURN servers. |
- void UseTurn(const std::string& ice_config_url) { |
+ void set_ice_config_url(const std::string& ice_config_url) { |
ice_config_url_ = ice_config_url; |
} |
+ // Sets relay mode for all future calls of GetIceConfig(). Doesn't affect |
+ // previous GetIceConfig() requests. |
+ void set_relay_mode(RelayMode relay_mode) { relay_mode_ = relay_mode; } |
+ |
// Prepares fresh JingleInfo. It may be called while connection is being |
// negotiated to minimize the chance that the following GetIceConfig() will |
// be blocking. |
@@ -69,8 +81,8 @@ class TransportContext : public base::RefCountedThreadSafe<TransportContext> { |
~TransportContext(); |
- void EnsureFreshJingleInfo(); |
- void OnIceConfig(const IceConfig& ice_config); |
+ void EnsureFreshIceConfig(); |
+ void OnIceConfig(RelayMode relay_mode, const IceConfig& ice_config); |
SignalStrategy* signal_strategy_; |
scoped_ptr<PortAllocatorFactory> port_allocator_factory_; |
@@ -79,14 +91,15 @@ class TransportContext : public base::RefCountedThreadSafe<TransportContext> { |
TransportRole role_; |
std::string ice_config_url_; |
+ RelayMode relay_mode_ = RelayMode::GTURN; |
- scoped_ptr<IceConfigRequest> ice_config_request_; |
- |
- IceConfig ice_config_; |
+ std::array<scoped_ptr<IceConfigRequest>, kNumRelayModes> ice_config_request_; |
+ std::array<IceConfig, kNumRelayModes> ice_config_; |
- // When there is an active |jingle_info_request_| stores list of callbacks to |
+ // When there is an active |ice_config_request_| stores list of callbacks to |
// be called once the request is finished. |
- std::list<GetIceConfigCallback> pending_ice_config_callbacks_; |
+ std::array<std::list<GetIceConfigCallback>, kNumRelayModes> |
+ pending_ice_config_callbacks_; |
DISALLOW_COPY_AND_ASSIGN(TransportContext); |
}; |