Index: remoting/protocol/session_config.cc |
diff --git a/remoting/protocol/session_config.cc b/remoting/protocol/session_config.cc |
index f6163f4fa8df622d07e92dfa5ce85620ec484416..460da2807bfa7bd13b1cbdbca1eac2b837b08e66 100644 |
--- a/remoting/protocol/session_config.cc |
+++ b/remoting/protocol/session_config.cc |
@@ -9,18 +9,124 @@ |
namespace remoting { |
namespace protocol { |
-namespace { |
- |
-bool IsChannelConfigSupported(const std::list<ChannelConfig>& list, |
- const ChannelConfig& value) { |
- return std::find(list.begin(), list.end(), value) != list.end(); |
-} |
- |
-bool SelectCommonChannelConfig(const std::list<ChannelConfig>& host_configs, |
- const std::list<ChannelConfig>& client_configs, |
- ChannelConfig* config) { |
- // Usually each of these lists will contain just a few elements, so iterating |
- // over all of them is not a problem. |
+const int kDefaultStreamVersion = 2; |
+const int kControlStreamVersion = 3; |
+ |
+ChannelConfig ChannelConfig::None() { |
+ return ChannelConfig(); |
+} |
+ |
+ChannelConfig::ChannelConfig() |
+ : transport(TRANSPORT_NONE), |
+ version(0), |
+ codec(CODEC_UNDEFINED) { |
+} |
+ |
+ChannelConfig::ChannelConfig(TransportType transport, int version, Codec codec) |
+ : transport(transport), |
+ version(version), |
+ codec(codec) { |
+} |
+ |
+bool ChannelConfig::operator==(const ChannelConfig& b) const { |
+ // If the transport field is set to NONE then all other fields are irrelevant. |
+ if (transport == ChannelConfig::TRANSPORT_NONE) |
+ return transport == b.transport; |
+ return transport == b.transport && version == b.version && codec == b.codec; |
+} |
+ |
+SessionConfig::SessionConfig() { |
+} |
+ |
+// static |
+SessionConfig SessionConfig::ForTest() { |
+ SessionConfig result; |
+ result.set_control_config(ChannelConfig(ChannelConfig::TRANSPORT_MUX_STREAM, |
+ kControlStreamVersion, |
+ ChannelConfig::CODEC_UNDEFINED)); |
+ result.set_event_config(ChannelConfig(ChannelConfig::TRANSPORT_MUX_STREAM, |
+ kDefaultStreamVersion, |
+ ChannelConfig::CODEC_UNDEFINED)); |
+ result.set_video_config(ChannelConfig(ChannelConfig::TRANSPORT_STREAM, |
+ kDefaultStreamVersion, |
+ ChannelConfig::CODEC_VP8)); |
+ result.set_audio_config(ChannelConfig(ChannelConfig::TRANSPORT_NONE, |
+ kDefaultStreamVersion, |
+ ChannelConfig::CODEC_UNDEFINED)); |
+ return result; |
+} |
+ |
+CandidateSessionConfig::CandidateSessionConfig() { } |
+ |
+CandidateSessionConfig::CandidateSessionConfig( |
+ const CandidateSessionConfig& config) |
+ : control_configs_(config.control_configs_), |
+ event_configs_(config.event_configs_), |
+ video_configs_(config.video_configs_), |
+ audio_configs_(config.audio_configs_) { |
+} |
+ |
+CandidateSessionConfig::~CandidateSessionConfig() { } |
+ |
+bool CandidateSessionConfig::Select( |
+ const CandidateSessionConfig* client_config, |
+ SessionConfig* result) { |
+ ChannelConfig control_config; |
+ ChannelConfig event_config; |
+ ChannelConfig video_config; |
+ ChannelConfig audio_config; |
+ |
+ if (!SelectCommonChannelConfig( |
+ control_configs_, client_config->control_configs_, &control_config) || |
+ !SelectCommonChannelConfig( |
+ event_configs_, client_config->event_configs_, &event_config) || |
+ !SelectCommonChannelConfig( |
+ video_configs_, client_config->video_configs_, &video_config) || |
+ !SelectCommonChannelConfig( |
+ audio_configs_, client_config->audio_configs_, &audio_config)) { |
+ return false; |
+ } |
+ |
+ result->set_control_config(control_config); |
+ result->set_event_config(event_config); |
+ result->set_video_config(video_config); |
+ result->set_audio_config(audio_config); |
+ |
+ return true; |
+} |
+ |
+bool CandidateSessionConfig::IsSupported( |
+ const SessionConfig& config) const { |
+ return |
+ IsChannelConfigSupported(control_configs_, config.control_config()) && |
+ IsChannelConfigSupported(event_configs_, config.event_config()) && |
+ IsChannelConfigSupported(video_configs_, config.video_config()) && |
+ IsChannelConfigSupported(audio_configs_, config.audio_config()); |
+} |
+ |
+bool CandidateSessionConfig::GetFinalConfig(SessionConfig* result) const { |
+ if (control_configs_.size() != 1 || |
+ event_configs_.size() != 1 || |
+ video_configs_.size() != 1 || |
+ audio_configs_.size() != 1) { |
+ return false; |
+ } |
+ |
+ result->set_control_config(control_configs_.front()); |
+ result->set_event_config(event_configs_.front()); |
+ result->set_video_config(video_configs_.front()); |
+ result->set_audio_config(audio_configs_.front()); |
+ |
+ return true; |
+} |
+ |
+// static |
+bool CandidateSessionConfig::SelectCommonChannelConfig( |
+ const std::list<ChannelConfig>& host_configs, |
+ const std::list<ChannelConfig>& client_configs, |
+ ChannelConfig* config) { |
+ // Usually each of these vectors will contain just several elements, |
+ // so iterating over all of them is not a problem. |
std::list<ChannelConfig>::const_iterator it; |
for (it = client_configs.begin(); it != client_configs.end(); ++it) { |
if (IsChannelConfigSupported(host_configs, *it)) { |
@@ -31,129 +137,11 @@ |
return false; |
} |
-} // namespace |
- |
-const int kDefaultStreamVersion = 2; |
-const int kControlStreamVersion = 3; |
- |
-ChannelConfig ChannelConfig::None() { |
- return ChannelConfig(); |
-} |
- |
-ChannelConfig::ChannelConfig(TransportType transport, int version, Codec codec) |
- : transport(transport), |
- version(version), |
- codec(codec) { |
-} |
- |
-bool ChannelConfig::operator==(const ChannelConfig& b) const { |
- // If the transport field is set to NONE then all other fields are irrelevant. |
- if (transport == ChannelConfig::TRANSPORT_NONE) |
- return transport == b.transport; |
- return transport == b.transport && version == b.version && codec == b.codec; |
-} |
- |
-// static |
-scoped_ptr<SessionConfig> SessionConfig::SelectCommon( |
- const CandidateSessionConfig* client_config, |
- const CandidateSessionConfig* host_config) { |
- scoped_ptr<SessionConfig> result(new SessionConfig()); |
- ChannelConfig control_config; |
- ChannelConfig event_config; |
- ChannelConfig video_config; |
- ChannelConfig audio_config; |
- |
- result->standard_ice_ = |
- host_config->standard_ice() && client_config->standard_ice(); |
- |
- if (!SelectCommonChannelConfig(host_config->control_configs(), |
- client_config->control_configs(), |
- &result->control_config_) || |
- !SelectCommonChannelConfig(host_config->event_configs(), |
- client_config->event_configs(), |
- &result->event_config_) || |
- !SelectCommonChannelConfig(host_config->video_configs(), |
- client_config->video_configs(), |
- &result->video_config_) || |
- !SelectCommonChannelConfig(host_config->audio_configs(), |
- client_config->audio_configs(), |
- &result->audio_config_)) { |
- return nullptr; |
- } |
- |
- return result; |
-} |
- |
-// static |
-scoped_ptr<SessionConfig> SessionConfig::GetFinalConfig( |
- const CandidateSessionConfig* candidate_config) { |
- if (candidate_config->control_configs().size() != 1 || |
- candidate_config->event_configs().size() != 1 || |
- candidate_config->video_configs().size() != 1 || |
- candidate_config->audio_configs().size() != 1) { |
- return nullptr; |
- } |
- |
- scoped_ptr<SessionConfig> result(new SessionConfig()); |
- result->standard_ice_ = candidate_config->standard_ice(); |
- result->control_config_ = candidate_config->control_configs().front(); |
- result->event_config_ = candidate_config->event_configs().front(); |
- result->video_config_ = candidate_config->video_configs().front(); |
- result->audio_config_ = candidate_config->audio_configs().front(); |
- |
- return result.Pass(); |
-} |
- |
-// static |
-scoped_ptr<SessionConfig> SessionConfig::ForTest() { |
- scoped_ptr<SessionConfig> result(new SessionConfig()); |
- result->standard_ice_ = true; |
- result->control_config_ = ChannelConfig(ChannelConfig::TRANSPORT_MUX_STREAM, |
- kControlStreamVersion, |
- ChannelConfig::CODEC_UNDEFINED); |
- result->event_config_ = ChannelConfig(ChannelConfig::TRANSPORT_MUX_STREAM, |
- kDefaultStreamVersion, |
- ChannelConfig::CODEC_UNDEFINED); |
- result->video_config_ = ChannelConfig(ChannelConfig::TRANSPORT_STREAM, |
- kDefaultStreamVersion, |
- ChannelConfig::CODEC_VP8); |
- result->audio_config_ = ChannelConfig(ChannelConfig::TRANSPORT_NONE, |
- kDefaultStreamVersion, |
- ChannelConfig::CODEC_UNDEFINED); |
- return result.Pass(); |
-} |
- |
-// static |
-scoped_ptr<SessionConfig> SessionConfig::WithLegacyIceForTest() { |
- scoped_ptr<SessionConfig> result = ForTest(); |
- result->standard_ice_ = false; |
- return result.Pass(); |
-} |
- |
-SessionConfig::SessionConfig() { |
-} |
- |
- |
-CandidateSessionConfig::CandidateSessionConfig() { } |
- |
-CandidateSessionConfig::CandidateSessionConfig( |
- const CandidateSessionConfig& config) |
- : standard_ice_(true), |
- control_configs_(config.control_configs_), |
- event_configs_(config.event_configs_), |
- video_configs_(config.video_configs_), |
- audio_configs_(config.audio_configs_) { |
-} |
- |
-CandidateSessionConfig::~CandidateSessionConfig() { } |
- |
-bool CandidateSessionConfig::IsSupported( |
- const SessionConfig& config) const { |
- return |
- IsChannelConfigSupported(control_configs_, config.control_config()) && |
- IsChannelConfigSupported(event_configs_, config.event_config()) && |
- IsChannelConfigSupported(video_configs_, config.video_config()) && |
- IsChannelConfigSupported(audio_configs_, config.audio_config()); |
+// static |
+bool CandidateSessionConfig::IsChannelConfigSupported( |
+ const std::list<ChannelConfig>& vector, |
+ const ChannelConfig& value) { |
+ return std::find(vector.begin(), vector.end(), value) != vector.end(); |
} |
scoped_ptr<CandidateSessionConfig> CandidateSessionConfig::Clone() const { |
@@ -169,7 +157,6 @@ |
scoped_ptr<CandidateSessionConfig> CandidateSessionConfig::CreateFrom( |
const SessionConfig& config) { |
scoped_ptr<CandidateSessionConfig> result = CreateEmpty(); |
- result->set_standard_ice(config.standard_ice()); |
result->mutable_control_configs()->push_back(config.control_config()); |
result->mutable_event_configs()->push_back(config.event_config()); |
result->mutable_video_configs()->push_back(config.video_config()); |
@@ -181,8 +168,6 @@ |
scoped_ptr<CandidateSessionConfig> CandidateSessionConfig::CreateDefault() { |
scoped_ptr<CandidateSessionConfig> result = CreateEmpty(); |
- result->set_standard_ice(true); |
- |
// Control channel. |
result->mutable_control_configs()->push_back( |
ChannelConfig(ChannelConfig::TRANSPORT_MUX_STREAM, |