1*ca0779ebSJerome Gaillard #include "image_io/base/message_writer.h" 2*ca0779ebSJerome Gaillard 3*ca0779ebSJerome Gaillard #include <cstring> 4*ca0779ebSJerome Gaillard #include <sstream> 5*ca0779ebSJerome Gaillard #include <string> 6*ca0779ebSJerome Gaillard 7*ca0779ebSJerome Gaillard namespace photos_editing_formats { 8*ca0779ebSJerome Gaillard namespace image_io { 9*ca0779ebSJerome Gaillard 10*ca0779ebSJerome Gaillard using std::string; 11*ca0779ebSJerome Gaillard using std::stringstream; 12*ca0779ebSJerome Gaillard GetFormattedMessage(const Message & message) const13*ca0779ebSJerome Gaillardstring MessageWriter::GetFormattedMessage(const Message& message) const { 14*ca0779ebSJerome Gaillard stringstream message_stream; 15*ca0779ebSJerome Gaillard auto type = message.GetType(); 16*ca0779ebSJerome Gaillard if (type != Message::kStatus) { 17*ca0779ebSJerome Gaillard message_stream << GetTypeCategory(type) << ":"; 18*ca0779ebSJerome Gaillard } 19*ca0779ebSJerome Gaillard if (type == Message::kInternalError || type == Message::kStdLibError) { 20*ca0779ebSJerome Gaillard message_stream << GetTypeDescription(type, message.GetSystemErrno()) << ":"; 21*ca0779ebSJerome Gaillard } 22*ca0779ebSJerome Gaillard message_stream << message.GetText(); 23*ca0779ebSJerome Gaillard return message_stream.str(); 24*ca0779ebSJerome Gaillard } 25*ca0779ebSJerome Gaillard GetTypeCategory(Message::Type type) const26*ca0779ebSJerome Gaillardstring MessageWriter::GetTypeCategory(Message::Type type) const { 27*ca0779ebSJerome Gaillard string category; 28*ca0779ebSJerome Gaillard switch (type) { 29*ca0779ebSJerome Gaillard case Message::kStatus: 30*ca0779ebSJerome Gaillard category = "STATUS"; 31*ca0779ebSJerome Gaillard break; 32*ca0779ebSJerome Gaillard case Message::kWarning: 33*ca0779ebSJerome Gaillard category = "WARNING"; 34*ca0779ebSJerome Gaillard break; 35*ca0779ebSJerome Gaillard case Message::kStdLibError: 36*ca0779ebSJerome Gaillard case Message::kPrematureEndOfDataError: 37*ca0779ebSJerome Gaillard case Message::kStringNotFoundError: 38*ca0779ebSJerome Gaillard case Message::kDecodingError: 39*ca0779ebSJerome Gaillard case Message::kSyntaxError: 40*ca0779ebSJerome Gaillard case Message::kValueError: 41*ca0779ebSJerome Gaillard case Message::kInternalError: 42*ca0779ebSJerome Gaillard category = "ERROR"; 43*ca0779ebSJerome Gaillard break; 44*ca0779ebSJerome Gaillard } 45*ca0779ebSJerome Gaillard return category; 46*ca0779ebSJerome Gaillard } 47*ca0779ebSJerome Gaillard GetTypeDescription(Message::Type type,int system_errno) const48*ca0779ebSJerome Gaillardstring MessageWriter::GetTypeDescription(Message::Type type, 49*ca0779ebSJerome Gaillard int system_errno) const { 50*ca0779ebSJerome Gaillard string description; 51*ca0779ebSJerome Gaillard switch (type) { 52*ca0779ebSJerome Gaillard case Message::kStatus: 53*ca0779ebSJerome Gaillard break; 54*ca0779ebSJerome Gaillard case Message::kWarning: 55*ca0779ebSJerome Gaillard break; 56*ca0779ebSJerome Gaillard case Message::kStdLibError: 57*ca0779ebSJerome Gaillard description = system_errno > 0 ? std::strerror(system_errno) : "Unknown"; 58*ca0779ebSJerome Gaillard break; 59*ca0779ebSJerome Gaillard case Message::kPrematureEndOfDataError: 60*ca0779ebSJerome Gaillard description = "Premature end of data"; 61*ca0779ebSJerome Gaillard break; 62*ca0779ebSJerome Gaillard case Message::kStringNotFoundError: 63*ca0779ebSJerome Gaillard description = "String not found"; 64*ca0779ebSJerome Gaillard break; 65*ca0779ebSJerome Gaillard case Message::kDecodingError: 66*ca0779ebSJerome Gaillard description = "Decoding error"; 67*ca0779ebSJerome Gaillard break; 68*ca0779ebSJerome Gaillard case Message::kSyntaxError: 69*ca0779ebSJerome Gaillard description = "Syntax error"; 70*ca0779ebSJerome Gaillard break; 71*ca0779ebSJerome Gaillard case Message::kValueError: 72*ca0779ebSJerome Gaillard description = "Value error"; 73*ca0779ebSJerome Gaillard break; 74*ca0779ebSJerome Gaillard case Message::kInternalError: 75*ca0779ebSJerome Gaillard description = "Internal error"; 76*ca0779ebSJerome Gaillard break; 77*ca0779ebSJerome Gaillard } 78*ca0779ebSJerome Gaillard return description; 79*ca0779ebSJerome Gaillard } 80*ca0779ebSJerome Gaillard 81*ca0779ebSJerome Gaillard } // namespace image_io 82*ca0779ebSJerome Gaillard } // namespace photos_editing_formats 83