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

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

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU Created 4 years, 8 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/secure_channel_factory.cc ('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 <memory>
9 #include <string> 10 #include <string>
10 11
11 #include "base/memory/scoped_ptr.h"
12 12
13 namespace remoting { 13 namespace remoting {
14 namespace protocol { 14 namespace protocol {
15 15
16 extern const int kDefaultStreamVersion; 16 extern const int kDefaultStreamVersion;
17 17
18 // Struct for configuration parameters of a single channel. 18 // Struct for configuration parameters of a single channel.
19 // Some channels (like video) may have multiple underlying sockets that need 19 // Some channels (like video) may have multiple underlying sockets that need
20 // to be configured simultaneously. 20 // to be configured simultaneously.
21 struct ChannelConfig { 21 struct ChannelConfig {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 ICE, 68 ICE,
69 69
70 // New WebRTC-based protocol. 70 // New WebRTC-based protocol.
71 WEBRTC, 71 WEBRTC,
72 }; 72 };
73 73
74 // Selects session configuration that is supported by both participants. 74 // Selects session configuration that is supported by both participants.
75 // nullptr is returned if such configuration doesn't exist. When selecting 75 // nullptr is returned if such configuration doesn't exist. When selecting
76 // channel configuration priority is given to the configs listed first 76 // channel configuration priority is given to the configs listed first
77 // in |client_config|. 77 // in |client_config|.
78 static scoped_ptr<SessionConfig> SelectCommon( 78 static std::unique_ptr<SessionConfig> SelectCommon(
79 const CandidateSessionConfig* client_config, 79 const CandidateSessionConfig* client_config,
80 const CandidateSessionConfig* host_config); 80 const CandidateSessionConfig* host_config);
81 81
82 // Extracts final protocol configuration. Must be used for the description 82 // Extracts final protocol configuration. Must be used for the description
83 // received in the session-accept stanza. If the selection is ambiguous 83 // received in the session-accept stanza. If the selection is ambiguous
84 // (e.g. there is more than one configuration for one of the channel) 84 // (e.g. there is more than one configuration for one of the channel)
85 // or undefined (e.g. no configurations for a channel) then nullptr is 85 // or undefined (e.g. no configurations for a channel) then nullptr is
86 // returned. 86 // returned.
87 static scoped_ptr<SessionConfig> GetFinalConfig( 87 static std::unique_ptr<SessionConfig> GetFinalConfig(
88 const CandidateSessionConfig* candidate_config); 88 const CandidateSessionConfig* candidate_config);
89 89
90 // Returns a suitable session configuration for use in tests. 90 // Returns a suitable session configuration for use in tests.
91 static scoped_ptr<SessionConfig> ForTest(); 91 static std::unique_ptr<SessionConfig> ForTest();
92 static scoped_ptr<SessionConfig> ForTestWithVerbatimVideo(); 92 static std::unique_ptr<SessionConfig> ForTestWithVerbatimVideo();
93 static scoped_ptr<SessionConfig> ForTestWithWebrtc(); 93 static std::unique_ptr<SessionConfig> ForTestWithWebrtc();
94 94
95 Protocol protocol() const { return protocol_; } 95 Protocol protocol() const { return protocol_; }
96 96
97 // All fields below should be ignored when protocol() is set to WEBRTC. 97 // All fields below should be ignored when protocol() is set to WEBRTC.
98 const ChannelConfig& control_config() const; 98 const ChannelConfig& control_config() const;
99 const ChannelConfig& event_config() const; 99 const ChannelConfig& event_config() const;
100 const ChannelConfig& video_config() const; 100 const ChannelConfig& video_config() const;
101 const ChannelConfig& audio_config() const; 101 const ChannelConfig& audio_config() const;
102 102
103 bool is_audio_enabled() const { 103 bool is_audio_enabled() const {
104 return audio_config_.transport != ChannelConfig::TRANSPORT_NONE; 104 return audio_config_.transport != ChannelConfig::TRANSPORT_NONE;
105 } 105 }
106 106
107 private: 107 private:
108 SessionConfig(Protocol protocol); 108 SessionConfig(Protocol protocol);
109 109
110 const Protocol protocol_; 110 const Protocol protocol_;
111 111
112 ChannelConfig control_config_; 112 ChannelConfig control_config_;
113 ChannelConfig event_config_; 113 ChannelConfig event_config_;
114 ChannelConfig video_config_; 114 ChannelConfig video_config_;
115 ChannelConfig audio_config_; 115 ChannelConfig audio_config_;
116 }; 116 };
117 117
118 // Defines session description that is sent from client to the host in the 118 // Defines session description that is sent from client to the host in the
119 // session-initiate message. It is different from the regular Config 119 // session-initiate message. It is different from the regular Config
120 // because it allows one to specify multiple configurations for each channel. 120 // because it allows one to specify multiple configurations for each channel.
121 class CandidateSessionConfig { 121 class CandidateSessionConfig {
122 public: 122 public:
123 static scoped_ptr<CandidateSessionConfig> CreateEmpty(); 123 static std::unique_ptr<CandidateSessionConfig> CreateEmpty();
124 static scoped_ptr<CandidateSessionConfig> CreateFrom( 124 static std::unique_ptr<CandidateSessionConfig> CreateFrom(
125 const SessionConfig& config); 125 const SessionConfig& config);
126 static scoped_ptr<CandidateSessionConfig> CreateDefault(); 126 static std::unique_ptr<CandidateSessionConfig> CreateDefault();
127 127
128 ~CandidateSessionConfig(); 128 ~CandidateSessionConfig();
129 129
130 bool webrtc_supported() const { return webrtc_supported_; } 130 bool webrtc_supported() const { return webrtc_supported_; }
131 void set_webrtc_supported(bool webrtc_supported) { 131 void set_webrtc_supported(bool webrtc_supported) {
132 webrtc_supported_ = webrtc_supported; 132 webrtc_supported_ = webrtc_supported;
133 } 133 }
134 134
135 bool ice_supported() const { return ice_supported_; } 135 bool ice_supported() const { return ice_supported_; }
136 void set_ice_supported(bool ice_supported) { ice_supported_ = ice_supported; } 136 void set_ice_supported(bool ice_supported) { ice_supported_ = ice_supported; }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 // 175 //
176 // TODO(sergeyu): Remove this kludge as soon as VP9 is enabled by default. 176 // TODO(sergeyu): Remove this kludge as soon as VP9 is enabled by default.
177 bool vp9_experiment_enabled() const { return vp9_experiment_enabled_; } 177 bool vp9_experiment_enabled() const { return vp9_experiment_enabled_; }
178 void set_vp9_experiment_enabled(bool value) { 178 void set_vp9_experiment_enabled(bool value) {
179 vp9_experiment_enabled_ = value; 179 vp9_experiment_enabled_ = value;
180 } 180 }
181 181
182 // Returns true if |config| is supported. 182 // Returns true if |config| is supported.
183 bool IsSupported(const SessionConfig& config) const; 183 bool IsSupported(const SessionConfig& config) const;
184 184
185 scoped_ptr<CandidateSessionConfig> Clone() const; 185 std::unique_ptr<CandidateSessionConfig> Clone() const;
186 186
187 // Helpers for enabling/disabling specific features. 187 // Helpers for enabling/disabling specific features.
188 void DisableAudioChannel(); 188 void DisableAudioChannel();
189 void PreferTransport(ChannelConfig::TransportType transport); 189 void PreferTransport(ChannelConfig::TransportType transport);
190 190
191 private: 191 private:
192 CandidateSessionConfig(); 192 CandidateSessionConfig();
193 explicit CandidateSessionConfig(const CandidateSessionConfig& config); 193 explicit CandidateSessionConfig(const CandidateSessionConfig& config);
194 CandidateSessionConfig& operator=(const CandidateSessionConfig& b); 194 CandidateSessionConfig& operator=(const CandidateSessionConfig& b);
195 195
196 bool webrtc_supported_ = false; 196 bool webrtc_supported_ = false;
197 bool ice_supported_ = false; 197 bool ice_supported_ = false;
198 198
199 std::list<ChannelConfig> control_configs_; 199 std::list<ChannelConfig> control_configs_;
200 std::list<ChannelConfig> event_configs_; 200 std::list<ChannelConfig> event_configs_;
201 std::list<ChannelConfig> video_configs_; 201 std::list<ChannelConfig> video_configs_;
202 std::list<ChannelConfig> audio_configs_; 202 std::list<ChannelConfig> audio_configs_;
203 203
204 bool vp9_experiment_enabled_ = false; 204 bool vp9_experiment_enabled_ = false;
205 }; 205 };
206 206
207 } // namespace protocol 207 } // namespace protocol
208 } // namespace remoting 208 } // namespace remoting
209 209
210 #endif // REMOTING_PROTOCOL_SESSION_CONFIG_H_ 210 #endif // REMOTING_PROTOCOL_SESSION_CONFIG_H_
OLDNEW
« no previous file with comments | « remoting/protocol/secure_channel_factory.cc ('k') | remoting/protocol/session_config.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698