Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(418)

Side by Side Diff: remoting/protocol/session_config.h

Issue 1277093006: Enable QUIC support in chromoting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@quic_adapters
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « remoting/protocol/session.h ('k') | remoting/protocol/session_config.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef REMOTING_PROTOCOL_SESSION_CONFIG_H_ 5 #ifndef REMOTING_PROTOCOL_SESSION_CONFIG_H_
6 #define REMOTING_PROTOCOL_SESSION_CONFIG_H_ 6 #define REMOTING_PROTOCOL_SESSION_CONFIG_H_
7 7
8 #include <list> 8 #include <list>
9 #include <string> 9 #include <string>
10 10
11 #include "base/basictypes.h" 11 #include "base/basictypes.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 13
14 namespace remoting { 14 namespace remoting {
15 namespace protocol { 15 namespace protocol {
16 16
17 extern const int kDefaultStreamVersion; 17 extern const int kDefaultStreamVersion;
18 18
19 // Struct for configuration parameters of a single channel. 19 // Struct for configuration parameters of a single channel.
20 // Some channels (like video) may have multiple underlying sockets that need 20 // Some channels (like video) may have multiple underlying sockets that need
21 // to be configured simultaneously. 21 // to be configured simultaneously.
22 struct ChannelConfig { 22 struct ChannelConfig {
23 enum TransportType { 23 enum TransportType {
24 TRANSPORT_STREAM, 24 TRANSPORT_STREAM,
25 TRANSPORT_MUX_STREAM, 25 TRANSPORT_MUX_STREAM,
26 TRANSPORT_QUIC_STREAM,
26 TRANSPORT_DATAGRAM, 27 TRANSPORT_DATAGRAM,
27 TRANSPORT_NONE, 28 TRANSPORT_NONE,
28 }; 29 };
29 30
30 enum Codec { 31 enum Codec {
31 CODEC_UNDEFINED, // Used for event and control channels. 32 CODEC_UNDEFINED, // Used for event and control channels.
32 CODEC_VERBATIM, 33 CODEC_VERBATIM,
33 CODEC_ZIP, 34 CODEC_ZIP,
34 CODEC_VP8, 35 CODEC_VP8,
35 CODEC_VP9, 36 CODEC_VP9,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 86
86 const ChannelConfig& control_config() const { return control_config_; } 87 const ChannelConfig& control_config() const { return control_config_; }
87 const ChannelConfig& event_config() const { return event_config_; } 88 const ChannelConfig& event_config() const { return event_config_; }
88 const ChannelConfig& video_config() const { return video_config_; } 89 const ChannelConfig& video_config() const { return video_config_; }
89 const ChannelConfig& audio_config() const { return audio_config_; } 90 const ChannelConfig& audio_config() const { return audio_config_; }
90 91
91 bool is_audio_enabled() const { 92 bool is_audio_enabled() const {
92 return audio_config_.transport != ChannelConfig::TRANSPORT_NONE; 93 return audio_config_.transport != ChannelConfig::TRANSPORT_NONE;
93 } 94 }
94 95
96 // Returns true if any of the channels is using QUIC.
97 bool is_using_quic() const {
98 return control_config_.transport == ChannelConfig::TRANSPORT_QUIC_STREAM ||
99 event_config_.transport == ChannelConfig::TRANSPORT_QUIC_STREAM ||
100 video_config_.transport == ChannelConfig::TRANSPORT_QUIC_STREAM ||
101 audio_config_.transport == ChannelConfig::TRANSPORT_QUIC_STREAM;
102 }
103
95 private: 104 private:
96 SessionConfig(); 105 SessionConfig();
97 106
98 bool standard_ice_ = true; 107 bool standard_ice_ = true;
99 108
100 ChannelConfig control_config_; 109 ChannelConfig control_config_;
101 ChannelConfig event_config_; 110 ChannelConfig event_config_;
102 ChannelConfig video_config_; 111 ChannelConfig video_config_;
103 ChannelConfig audio_config_; 112 ChannelConfig audio_config_;
104 }; 113 };
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 vp9_experiment_enabled_ = value; 171 vp9_experiment_enabled_ = value;
163 } 172 }
164 173
165 // Returns true if |config| is supported. 174 // Returns true if |config| is supported.
166 bool IsSupported(const SessionConfig& config) const; 175 bool IsSupported(const SessionConfig& config) const;
167 176
168 scoped_ptr<CandidateSessionConfig> Clone() const; 177 scoped_ptr<CandidateSessionConfig> Clone() const;
169 178
170 // Helpers for enabling/disabling specific features. 179 // Helpers for enabling/disabling specific features.
171 void DisableAudioChannel(); 180 void DisableAudioChannel();
181 void PreferTransport(ChannelConfig::TransportType transport);
172 182
173 private: 183 private:
174 CandidateSessionConfig(); 184 CandidateSessionConfig();
175 explicit CandidateSessionConfig(const CandidateSessionConfig& config); 185 explicit CandidateSessionConfig(const CandidateSessionConfig& config);
176 CandidateSessionConfig& operator=(const CandidateSessionConfig& b); 186 CandidateSessionConfig& operator=(const CandidateSessionConfig& b);
177 187
178 bool standard_ice_ = true; 188 bool standard_ice_ = true;
179 189
180 std::list<ChannelConfig> control_configs_; 190 std::list<ChannelConfig> control_configs_;
181 std::list<ChannelConfig> event_configs_; 191 std::list<ChannelConfig> event_configs_;
182 std::list<ChannelConfig> video_configs_; 192 std::list<ChannelConfig> video_configs_;
183 std::list<ChannelConfig> audio_configs_; 193 std::list<ChannelConfig> audio_configs_;
184 194
185 bool vp9_experiment_enabled_ = false; 195 bool vp9_experiment_enabled_ = false;
186 }; 196 };
187 197
188 } // namespace protocol 198 } // namespace protocol
189 } // namespace remoting 199 } // namespace remoting
190 200
191 #endif // REMOTING_PROTOCOL_SESSION_CONFIG_H_ 201 #endif // REMOTING_PROTOCOL_SESSION_CONFIG_H_
OLDNEW
« no previous file with comments | « remoting/protocol/session.h ('k') | remoting/protocol/session_config.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698