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.cc62
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