summaryrefslogtreecommitdiff
path: root/src/base/message_writer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/message_writer.cc')
-rw-r--r--src/base/message_writer.cc36
1 files changed, 28 insertions, 8 deletions
diff --git a/src/base/message_writer.cc b/src/base/message_writer.cc
index d13dc41..2f9e0f0 100644
--- a/src/base/message_writer.cc
+++ b/src/base/message_writer.cc
@@ -12,19 +12,37 @@ using std::stringstream;
string MessageWriter::GetFormattedMessage(const Message& message) const {
stringstream message_stream;
- message_stream << GetTypeCategory(message.GetType()) << ":"
- << GetTypeDescription(message.GetType(),
- message.GetSystemErrno())
- << ":" << message.GetText();
+ auto type = message.GetType();
+ if (type != Message::kStatus) {
+ message_stream << GetTypeCategory(type) << ":";
+ }
+ if (type == Message::kInternalError || type == Message::kStdLibError) {
+ message_stream << GetTypeDescription(type, message.GetSystemErrno()) << ":";
+ }
+ message_stream << message.GetText();
return message_stream.str();
}
string MessageWriter::GetTypeCategory(Message::Type type) const {
- if (type == Message::kStatus) {
- return "STATUS";
- } else {
- return "ERROR";
+ string category;
+ switch (type) {
+ case Message::kStatus:
+ category = "STATUS";
+ break;
+ case Message::kWarning:
+ category = "WARNING";
+ break;
+ case Message::kStdLibError:
+ case Message::kPrematureEndOfDataError:
+ case Message::kStringNotFoundError:
+ case Message::kDecodingError:
+ case Message::kSyntaxError:
+ case Message::kValueError:
+ case Message::kInternalError:
+ category = "ERROR";
+ break;
}
+ return category;
}
string MessageWriter::GetTypeDescription(Message::Type type,
@@ -33,6 +51,8 @@ string MessageWriter::GetTypeDescription(Message::Type type,
switch (type) {
case Message::kStatus:
break;
+ case Message::kWarning:
+ break;
case Message::kStdLibError:
description = system_errno > 0 ? std::strerror(system_errno) : "Unknown";
break;