diff options
Diffstat (limited to 'src/base/message_writer.cc')
-rw-r--r-- | src/base/message_writer.cc | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/base/message_writer.cc b/src/base/message_writer.cc new file mode 100644 index 0000000..d13dc41 --- /dev/null +++ b/src/base/message_writer.cc @@ -0,0 +1,62 @@ +#include "image_io/base/message_writer.h" + +#include <cstring> +#include <sstream> +#include <string> + +namespace photos_editing_formats { +namespace image_io { + +using std::string; +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(); + return message_stream.str(); +} + +string MessageWriter::GetTypeCategory(Message::Type type) const { + if (type == Message::kStatus) { + return "STATUS"; + } else { + return "ERROR"; + } +} + +string MessageWriter::GetTypeDescription(Message::Type type, + int system_errno) const { + string description; + switch (type) { + case Message::kStatus: + break; + case Message::kStdLibError: + description = system_errno > 0 ? std::strerror(system_errno) : "Unknown"; + break; + case Message::kPrematureEndOfDataError: + description = "Premature end of data"; + break; + case Message::kStringNotFoundError: + description = "String not found"; + break; + case Message::kDecodingError: + description = "Decoding error"; + break; + case Message::kSyntaxError: + description = "Syntax error"; + break; + case Message::kValueError: + description = "Value error"; + break; + case Message::kInternalError: + description = "Internal error"; + break; + } + return description; +} + +} // namespace image_io +} // namespace photos_editing_formats |