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

Side by Side Diff: blimp/common/logging.cc

Issue 1933053003: Used oneof in blimp_message.proto (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits Created 4 years, 7 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 | « blimp/common/logging.h ('k') | blimp/common/logging_unittest.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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "blimp/common/logging.h" 5 #include "blimp/common/logging.h"
6 6
7 #include <iostream> 7 #include <iostream>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 default: 162 default:
163 break; 163 break;
164 } 164 }
165 } 165 }
166 }; 166 };
167 167
168 // Logs fields from PROTOCOL_CONTROL messages. 168 // Logs fields from PROTOCOL_CONTROL messages.
169 class ProtocolControlLogExtractor : public LogExtractor { 169 class ProtocolControlLogExtractor : public LogExtractor {
170 void ExtractFields(const BlimpMessage& message, 170 void ExtractFields(const BlimpMessage& message,
171 LogFields* output) const override { 171 LogFields* output) const override {
172 switch (message.protocol_control().type()) { 172 switch (message.protocol_control().connection_message_case()) {
173 case ProtocolControlMessage::START_CONNECTION: 173 case ProtocolControlMessage::kStartConnection:
174 AddField("subtype", "START_CONNECTION", output); 174 AddField("subtype", "START_CONNECTION", output);
175 AddField("client_token", 175 AddField("client_token",
176 message.protocol_control().start_connection().client_token(), 176 message.protocol_control().start_connection().client_token(),
177 output); 177 output);
178 AddField( 178 AddField(
179 "protocol_version", 179 "protocol_version",
180 message.protocol_control().start_connection().protocol_version(), 180 message.protocol_control().start_connection().protocol_version(),
181 output); 181 output);
182 break; 182 break;
183 case ProtocolControlMessage::CHECKPOINT_ACK: 183 case ProtocolControlMessage::kCheckpointAck:
184 AddField("subtype", "CHECKPOINT_ACK", output); 184 AddField("subtype", "CHECKPOINT_ACK", output);
185 AddField("checkpoint_id", 185 AddField("checkpoint_id",
186 message.protocol_control().checkpoint_ack().checkpoint_id(), 186 message.protocol_control().checkpoint_ack().checkpoint_id(),
187 output); 187 output);
188 break; 188 break;
189 default: 189 default:
190 break; 190 break;
191 } 191 }
192 } 192 }
193 }; 193 };
(...skipping 30 matching lines...) Expand all
224 output); 224 output);
225 AddField("client_os_info", engine_settings.client_os_info(), output); 225 AddField("client_os_info", engine_settings.client_os_info(), output);
226 } 226 }
227 } 227 }
228 }; 228 };
229 229
230 // Logs fields from TAB_CONTROL messages. 230 // Logs fields from TAB_CONTROL messages.
231 class TabControlLogExtractor : public LogExtractor { 231 class TabControlLogExtractor : public LogExtractor {
232 void ExtractFields(const BlimpMessage& message, 232 void ExtractFields(const BlimpMessage& message,
233 LogFields* output) const override { 233 LogFields* output) const override {
234 switch (message.tab_control().type()) { 234 switch (message.tab_control().tab_control_case()) {
235 case TabControlMessage::CREATE_TAB: 235 case TabControlMessage::kCreateTab:
236 AddField("subtype", "CREATE_TAB", output); 236 AddField("subtype", "CREATE_TAB", output);
237 break; 237 break;
238 case TabControlMessage::CLOSE_TAB: 238 case TabControlMessage::kCloseTab:
239 AddField("subtype", "CLOSE_TAB", output); 239 AddField("subtype", "CLOSE_TAB", output);
240 break; 240 break;
241 case TabControlMessage::SIZE: 241 case TabControlMessage::kSize:
242 AddField("subtype", "SIZE", output); 242 AddField("subtype", "SIZE", output);
243 AddField("size", message.tab_control().size(), output); 243 AddField("size", message.tab_control().size(), output);
244 break; 244 break;
245 default: // unknown 245 default: // unknown
246 break; 246 break;
247 } 247 }
248 } 248 }
249 }; 249 };
250 250
251 // No fields are extracted from |message|. 251 // No fields are extracted from |message|.
252 class NullLogExtractor : public LogExtractor { 252 class NullLogExtractor : public LogExtractor {
253 void ExtractFields(const BlimpMessage& message, 253 void ExtractFields(const BlimpMessage& message,
254 LogFields* output) const override {} 254 LogFields* output) const override {}
255 }; 255 };
256 256
257 } // namespace 257 } // namespace
258 258
259 BlimpMessageLogger::BlimpMessageLogger() { 259 BlimpMessageLogger::BlimpMessageLogger() {
260 AddHandler("COMPOSITOR", BlimpMessage::COMPOSITOR, 260 AddHandler("COMPOSITOR", BlimpMessage::kCompositor,
261 base::WrapUnique(new CompositorLogExtractor)); 261 base::WrapUnique(new CompositorLogExtractor));
262 AddHandler("INPUT", BlimpMessage::INPUT, 262 AddHandler("INPUT", BlimpMessage::kInput,
263 base::WrapUnique(new InputLogExtractor)); 263 base::WrapUnique(new InputLogExtractor));
264 AddHandler("NAVIGATION", BlimpMessage::NAVIGATION, 264 AddHandler("NAVIGATION", BlimpMessage::kNavigation,
265 base::WrapUnique(new NavigationLogExtractor)); 265 base::WrapUnique(new NavigationLogExtractor));
266 AddHandler("PROTOCOL_CONTROL", BlimpMessage::PROTOCOL_CONTROL, 266 AddHandler("PROTOCOL_CONTROL", BlimpMessage::kProtocolControl,
267 base::WrapUnique(new ProtocolControlLogExtractor)); 267 base::WrapUnique(new ProtocolControlLogExtractor));
268 AddHandler("RENDER_WIDGET", BlimpMessage::RENDER_WIDGET, 268 AddHandler("RENDER_WIDGET", BlimpMessage::kRenderWidget,
269 base::WrapUnique(new RenderWidgetLogExtractor)); 269 base::WrapUnique(new RenderWidgetLogExtractor));
270 AddHandler("SETTINGS", BlimpMessage::SETTINGS, 270 AddHandler("SETTINGS", BlimpMessage::kSettings,
271 base::WrapUnique(new SettingsLogExtractor)); 271 base::WrapUnique(new SettingsLogExtractor));
272 AddHandler("TAB_CONTROL", BlimpMessage::TAB_CONTROL, 272 AddHandler("TAB_CONTROL", BlimpMessage::kTabControl,
273 base::WrapUnique(new TabControlLogExtractor)); 273 base::WrapUnique(new TabControlLogExtractor));
274 } 274 }
275 275
276 BlimpMessageLogger::~BlimpMessageLogger() {} 276 BlimpMessageLogger::~BlimpMessageLogger() {}
277 277
278 void BlimpMessageLogger::AddHandler(const std::string& type_name, 278 void BlimpMessageLogger::AddHandler(const std::string& feature_name,
279 BlimpMessage::Type type, 279 BlimpMessage::FeatureCase feature_case,
280 std::unique_ptr<LogExtractor> extractor) { 280 std::unique_ptr<LogExtractor> extractor) {
281 DCHECK(extractors_.find(type) == extractors_.end()); 281 DCHECK(extractors_.find(feature_case) == extractors_.end());
282 DCHECK(!type_name.empty()); 282 DCHECK(!feature_name.empty());
283 extractors_[type] = make_pair(type_name, std::move(extractor)); 283 extractors_[feature_case] = make_pair(feature_name, std::move(extractor));
284 } 284 }
285 285
286 void BlimpMessageLogger::LogMessageToStream(const BlimpMessage& message, 286 void BlimpMessageLogger::LogMessageToStream(const BlimpMessage& message,
287 std::ostream* out) const { 287 std::ostream* out) const {
288 LogFields fields; 288 LogFields fields;
289 289
290 auto extractor = extractors_.find(message.type()); 290 auto extractor = extractors_.find(message.feature_case());
291 if (extractor != extractors_.end()) { 291 if (extractor != extractors_.end()) {
292 // An extractor is registered for |message|. 292 // An extractor is registered for |message|.
293 // Add the human-readable name of |message.type|. 293 // Add the human-readable name of |message.type|.
294 fields.push_back(make_pair("type", extractor->second.first)); 294 fields.push_back(make_pair("type", extractor->second.first));
295 extractor->second.second->ExtractFields(message, &fields); 295 extractor->second.second->ExtractFields(message, &fields);
296 } else { 296 } else {
297 // Don't know the human-readable name of |message.type|. 297 // Don't know the human-readable name of |message.type|.
298 // Just represent it using its numeric form instead. 298 // Just represent it using its numeric form instead.
299 AddField("type", message.type(), &fields); 299 AddField("type", message.feature_case(), &fields);
300 } 300 }
301 301
302 // Append "target_tab_id" (if present) and "byte_size" to the field set. 302 // Append "target_tab_id" (if present) and "byte_size" to the field set.
303 if (message.has_target_tab_id()) { 303 if (message.has_target_tab_id()) {
304 AddField("target_tab_id", message.target_tab_id(), &fields); 304 AddField("target_tab_id", message.target_tab_id(), &fields);
305 } 305 }
306 AddField("byte_size", message.ByteSize(), &fields); 306 AddField("byte_size", message.ByteSize(), &fields);
307 307
308 // Format message using the syntax: 308 // Format message using the syntax:
309 // <BlimpMessage field1=value1 field2="value 2"> 309 // <BlimpMessage field1=value1 field2="value 2">
310 *out << "<BlimpMessage "; 310 *out << "<BlimpMessage ";
311 for (size_t i = 0; i < fields.size(); ++i) { 311 for (size_t i = 0; i < fields.size(); ++i) {
312 *out << fields[i].first << "=" << fields[i].second 312 *out << fields[i].first << "=" << fields[i].second
313 << (i != fields.size() - 1 ? " " : ""); 313 << (i != fields.size() - 1 ? " " : "");
314 } 314 }
315 *out << ">"; 315 *out << ">";
316 } 316 }
317 317
318 std::ostream& operator<<(std::ostream& out, const BlimpMessage& message) { 318 std::ostream& operator<<(std::ostream& out, const BlimpMessage& message) {
319 g_logger.Get().LogMessageToStream(message, &out); 319 g_logger.Get().LogMessageToStream(message, &out);
320 return out; 320 return out;
321 } 321 }
322 322
323 } // namespace blimp 323 } // namespace blimp
OLDNEW
« no previous file with comments | « blimp/common/logging.h ('k') | blimp/common/logging_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698