#include "image_io/base/message_handler.h" #include #include #include #include "image_io/base/cout_message_writer.h" namespace photos_editing_formats { namespace image_io { using std::string; using std::unique_ptr; MessageHandler::MessageHandler() : message_writer_(new CoutMessageWriter), message_store_(new VectorMessageStore), message_stats_(new MessageStats) {} void MessageHandler::SetMessageWriter( std::unique_ptr message_writer) { message_writer_ = std::move(message_writer); } void MessageHandler::SetMessageStore( std::unique_ptr message_store) { message_store_ = std::move(message_store); } void MessageHandler::ReportMessage(Message::Type type, const string& text) { int system_errno = (type == Message::kStdLibError) ? errno : 0; ReportMessage(Message(type, system_errno, text)); } void MessageHandler::ReportMessage(const Message& message) { if (message.IsError()) { message_stats_->error_count++; } else if (message.IsWarning()) { message_stats_->warning_count++; } else { message_stats_->status_count++; } if (message_store_) { message_store_->AddMessage(message); } if (message_writer_) { message_writer_->WriteMessage(message); } } } // namespace image_io } // namespace photos_editing_formats