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

Unified Diff: blimp/common/logging.cc

Issue 2026053002: Blimp: change logger to use switch/case for types. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « blimp/common/logging.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: blimp/common/logging.cc
diff --git a/blimp/common/logging.cc b/blimp/common/logging.cc
index 174c2b4554a1111de459d0fd429f0a662d1d9f7d..b7c861cc565ce93df481ffff04aab2922666428d 100644
--- a/blimp/common/logging.cc
+++ b/blimp/common/logging.cc
@@ -21,8 +21,7 @@
namespace blimp {
namespace {
-static base::LazyInstance<BlimpMessageLogger> g_logger =
- LAZY_INSTANCE_INITIALIZER;
+typedef std::vector<std::pair<std::string, std::string>> LogFields;
// The AddField() suite of functions are used to convert KV pairs with
// arbitrarily typed values into string/string KV pairs for logging.
@@ -69,18 +68,18 @@ void AddField(const std::string& key, const T& value, LogFields* output) {
// fields from BlimpMessages.
// Logs fields from COMPOSITOR messages.
-class CompositorLogExtractor : public LogExtractor {
- void ExtractFields(const BlimpMessage& message,
- LogFields* output) const override {
+class CompositorLogExtractor {
+ public:
+ static void ExtractFields(const BlimpMessage& message, LogFields* output) {
Wez 2016/06/01 21:35:15 Looks like this, and the other static member metho
Kevin M 2016/06/02 18:05:00 Done.
AddField("render_widget_id", message.compositor().render_widget_id(),
output);
}
};
// Logs fields from INPUT messages.
-class InputLogExtractor : public LogExtractor {
- void ExtractFields(const BlimpMessage& message,
- LogFields* output) const override {
+class InputLogExtractor {
+ public:
+ static void ExtractFields(const BlimpMessage& message, LogFields* output) {
AddField("render_widget_id", message.input().render_widget_id(), output);
AddField("timestamp_seconds", message.input().timestamp_seconds(), output);
switch (message.input().type()) {
@@ -121,9 +120,9 @@ class InputLogExtractor : public LogExtractor {
};
// Logs fields from NAVIGATION messages.
-class NavigationLogExtractor : public LogExtractor {
- void ExtractFields(const BlimpMessage& message,
- LogFields* output) const override {
+class NavigationLogExtractor {
+ public:
+ static void ExtractFields(const BlimpMessage& message, LogFields* output) {
switch (message.navigation().type()) {
case NavigationMessage::NAVIGATION_STATE_CHANGED:
AddField("subtype", "NAVIGATION_STATE_CHANGED", output);
@@ -168,9 +167,9 @@ class NavigationLogExtractor : public LogExtractor {
};
// Logs fields from PROTOCOL_CONTROL messages.
-class ProtocolControlLogExtractor : public LogExtractor {
- void ExtractFields(const BlimpMessage& message,
- LogFields* output) const override {
+class ProtocolControlLogExtractor {
+ public:
+ static void ExtractFields(const BlimpMessage& message, LogFields* output) {
switch (message.protocol_control().connection_message_case()) {
case ProtocolControlMessage::kStartConnection:
AddField("subtype", "START_CONNECTION", output);
@@ -195,9 +194,9 @@ class ProtocolControlLogExtractor : public LogExtractor {
};
// Logs fields from RENDER_WIDGET messages.
-class RenderWidgetLogExtractor : public LogExtractor {
- void ExtractFields(const BlimpMessage& message,
- LogFields* output) const override {
+class RenderWidgetLogExtractor {
+ public:
+ static void ExtractFields(const BlimpMessage& message, LogFields* output) {
switch (message.render_widget().type()) {
case RenderWidgetMessage::INITIALIZE:
AddField("subtype", "INITIALIZE", output);
@@ -215,9 +214,9 @@ class RenderWidgetLogExtractor : public LogExtractor {
};
// Logs fields from SETTINGS messages.
-class SettingsLogExtractor : public LogExtractor {
- void ExtractFields(const BlimpMessage& message,
- LogFields* output) const override {
+class SettingsLogExtractor {
+ public:
+ static void ExtractFields(const BlimpMessage& message, LogFields* output) {
if (message.settings().has_engine_settings()) {
const EngineSettingsMessage& engine_settings =
message.settings().engine_settings();
@@ -230,9 +229,9 @@ class SettingsLogExtractor : public LogExtractor {
};
// Logs fields from TAB_CONTROL messages.
-class TabControlLogExtractor : public LogExtractor {
- void ExtractFields(const BlimpMessage& message,
- LogFields* output) const override {
+class TabControlLogExtractor {
+ public:
+ static void ExtractFields(const BlimpMessage& message, LogFields* output) {
switch (message.tab_control().tab_control_case()) {
case TabControlMessage::kCreateTab:
AddField("subtype", "CREATE_TAB", output);
@@ -251,9 +250,9 @@ class TabControlLogExtractor : public LogExtractor {
};
// Logs fields from BLOB_CHANNEL messages.
-class BlobChannelLogExtractor : public LogExtractor {
- void ExtractFields(const BlimpMessage& message,
- LogFields* output) const override {
+class BlobChannelLogExtractor {
+ public:
+ static void ExtractFields(const BlimpMessage& message, LogFields* output) {
switch (message.blob_channel().type_case()) {
case BlobChannelMessage::TypeCase::kTransferBlob:
AddField("subtype", "TRANSFER_BLOB", output);
@@ -272,57 +271,48 @@ class BlobChannelLogExtractor : public LogExtractor {
}
};
-// No fields are extracted from |message|.
-class NullLogExtractor : public LogExtractor {
- void ExtractFields(const BlimpMessage& message,
- LogFields* output) const override {}
-};
-
-} // namespace
-
-BlimpMessageLogger::BlimpMessageLogger() {
- AddHandler("COMPOSITOR", BlimpMessage::kCompositor,
- base::WrapUnique(new CompositorLogExtractor));
- AddHandler("INPUT", BlimpMessage::kInput,
- base::WrapUnique(new InputLogExtractor));
- AddHandler("NAVIGATION", BlimpMessage::kNavigation,
- base::WrapUnique(new NavigationLogExtractor));
- AddHandler("PROTOCOL_CONTROL", BlimpMessage::kProtocolControl,
- base::WrapUnique(new ProtocolControlLogExtractor));
- AddHandler("RENDER_WIDGET", BlimpMessage::kRenderWidget,
- base::WrapUnique(new RenderWidgetLogExtractor));
- AddHandler("SETTINGS", BlimpMessage::kSettings,
- base::WrapUnique(new SettingsLogExtractor));
- AddHandler("TAB_CONTROL", BlimpMessage::kTabControl,
- base::WrapUnique(new TabControlLogExtractor));
- AddHandler("BLOB_CHANNEL", BlimpMessage::kBlobChannel,
- base::WrapUnique(new BlobChannelLogExtractor));
-}
-
-BlimpMessageLogger::~BlimpMessageLogger() {}
-
-void BlimpMessageLogger::AddHandler(const std::string& feature_name,
- BlimpMessage::FeatureCase feature_case,
- std::unique_ptr<LogExtractor> extractor) {
- DCHECK(extractors_.find(feature_case) == extractors_.end());
- DCHECK(!feature_name.empty());
- extractors_[feature_case] = make_pair(feature_name, std::move(extractor));
-}
-
-void BlimpMessageLogger::LogMessageToStream(const BlimpMessage& message,
- std::ostream* out) const {
+void LogMessageToStream(const BlimpMessage& message, std::ostream* out) {
LogFields fields;
- auto extractor = extractors_.find(message.feature_case());
- if (extractor != extractors_.end()) {
- // An extractor is registered for |message|.
- // Add the human-readable name of |message.type|.
- fields.push_back(make_pair("type", extractor->second.first));
- extractor->second.second->ExtractFields(message, &fields);
- } else {
- // Don't know the human-readable name of |message.type|.
- // Just represent it using its numeric form instead.
- AddField("type", message.feature_case(), &fields);
+ switch (message.feature_case()) {
+ case BlimpMessage::kCompositor:
+ fields.push_back(std::make_pair("type", "COMPOSITOR"));
+ CompositorLogExtractor::ExtractFields(message, &fields);
+ break;
+ case BlimpMessage::kInput:
+ fields.push_back(std::make_pair("type", "INPUT"));
+ InputLogExtractor::ExtractFields(message, &fields);
+ break;
+ case BlimpMessage::kNavigation:
+ fields.push_back(std::make_pair("type", "NAVIGATION"));
+ NavigationLogExtractor::ExtractFields(message, &fields);
+ break;
+ case BlimpMessage::kProtocolControl:
+ fields.push_back(std::make_pair("type", "PROTOCOL_CONTROL"));
+ ProtocolControlLogExtractor::ExtractFields(message, &fields);
+ break;
+ case BlimpMessage::kRenderWidget:
+ fields.push_back(std::make_pair("type", "RENDER_WIDGET"));
+ RenderWidgetLogExtractor::ExtractFields(message, &fields);
+ break;
+ case BlimpMessage::kSettings:
+ fields.push_back(std::make_pair("type", "SETTINGS"));
+ SettingsLogExtractor::ExtractFields(message, &fields);
+ break;
+ case BlimpMessage::kTabControl:
+ fields.push_back(std::make_pair("type", "TAB_CONTROL"));
+ TabControlLogExtractor::ExtractFields(message, &fields);
+ break;
+ case BlimpMessage::kBlobChannel:
+ fields.push_back(std::make_pair("type", "BLOB_CHANNEL"));
+ BlobChannelLogExtractor::ExtractFields(message, &fields);
+ break;
+ case BlimpMessage::kIme:
+ fields.push_back(std::make_pair("type", "IME"));
+ break;
+ case BlimpMessage::FEATURE_NOT_SET:
+ fields.push_back(std::make_pair("type", "<UNKNOWN>"));
+ break;
}
// Append "target_tab_id" (if present) and "byte_size" to the field set.
@@ -341,8 +331,10 @@ void BlimpMessageLogger::LogMessageToStream(const BlimpMessage& message,
*out << ">";
}
+} // namespace
+
std::ostream& operator<<(std::ostream& out, const BlimpMessage& message) {
- g_logger.Get().LogMessageToStream(message, &out);
+ LogMessageToStream(message, &out);
return out;
}
« no previous file with comments | « blimp/common/logging.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698