diff options
-rw-r--r-- | src/common/scoped_message_writer.h | 13 | ||||
-rw-r--r-- | src/simplewallet/simplewallet.cpp | 88 |
2 files changed, 19 insertions, 82 deletions
diff --git a/src/common/scoped_message_writer.h b/src/common/scoped_message_writer.h index e31f8f0b2..8fc98d2b0 100644 --- a/src/common/scoped_message_writer.h +++ b/src/common/scoped_message_writer.h @@ -31,6 +31,14 @@ #include "misc_log_ex.h" #include <iostream> +#ifdef HAVE_READLINE + #include "readline_buffer.h" + #define PAUSE_READLINE() \ + rdln::suspend_readline pause_readline; +#else + #define PAUSE_READLINE() +#endif + namespace tools { @@ -99,6 +107,7 @@ public: } else { + PAUSE_READLINE(); set_console_color(m_color, m_bright); std::cout << m_oss.str(); epee::reset_console_color(); @@ -108,9 +117,9 @@ public: } }; -inline scoped_message_writer success_msg_writer() +inline scoped_message_writer success_msg_writer(bool color = true) { - return scoped_message_writer(epee::console_color_green, false, std::string(), el::Level::Info); + return scoped_message_writer(color ? epee::console_color_green : epee::console_color_default, false, std::string(), el::Level::Info); } inline scoped_message_writer msg_writer(epee::console_colors color = epee::console_color_default) diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index b4fbaa86e..4d8673f8e 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -48,6 +48,7 @@ #include "common/util.h" #include "common/dns_utils.h" #include "common/base58.h" +#include "common/scoped_message_writer.h" #include "p2p/net_node.h" #include "cryptonote_protocol/cryptonote_protocol_handler.h" #include "simplewallet.h" @@ -62,14 +63,6 @@ #include "wallet/wallet_args.h" #include <stdexcept> -#ifdef HAVE_READLINE - #include "readline_buffer.h" - #define PAUSE_READLINE() \ - rdln::suspend_readline pause_readline; -#else - #define PAUSE_READLINE() -#endif - using namespace std; using namespace epee; using namespace cryptonote; @@ -147,84 +140,19 @@ namespace return err; } - class message_writer + tools::scoped_message_writer success_msg_writer(bool color = false) { - public: - message_writer(console_colors color = console_color_default, bool bright = false, - std::string&& prefix = std::string(), el::Level log_level = el::Level::Info) - : m_flush(true) - , m_color(color) - , m_bright(bright) - , m_log_level(log_level) - { - m_oss << prefix; - } - - message_writer(message_writer&& rhs) - : m_flush(std::move(rhs.m_flush)) -#if defined(_MSC_VER) - , m_oss(std::move(rhs.m_oss)) -#else - // GCC bug: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54316 - , m_oss(rhs.m_oss.str(), ios_base::out | ios_base::ate) -#endif - , m_color(std::move(rhs.m_color)) - , m_log_level(std::move(rhs.m_log_level)) - { - rhs.m_flush = false; - } - - template<typename T> - std::ostream& operator<<(const T& val) - { - m_oss << val; - return m_oss; - } - - ~message_writer() - { - if (m_flush) - { - m_flush = false; - - MCLOG(m_log_level, "global", m_oss.str()); - - if (console_color_default == m_color) - { - std::cout << m_oss.str(); - } - else - { - PAUSE_READLINE(); - set_console_color(m_color, m_bright); - std::cout << m_oss.str(); - reset_console_color(); - } - std::cout << std::endl; - } - } - - private: - message_writer(message_writer& rhs); - message_writer& operator=(message_writer& rhs); - message_writer& operator=(message_writer&& rhs); - - private: - bool m_flush; - std::stringstream m_oss; - console_colors m_color; - bool m_bright; - el::Level m_log_level; - }; + return tools::scoped_message_writer(color ? console_color_green : console_color_default, false, std::string(), el::Level::Info); + } - message_writer success_msg_writer(bool color = false) + tools::scoped_message_writer message_writer(epee::console_colors color = epee::console_color_default, bool bright = false) { - return message_writer(color ? console_color_green : console_color_default, false, std::string(), el::Level::Info); + return tools::scoped_message_writer(color, bright); } - message_writer fail_msg_writer() + tools::scoped_message_writer fail_msg_writer() { - return message_writer(console_color_red, true, sw::tr("Error: "), el::Level::Error); + return tools::scoped_message_writer(console_color_red, true, sw::tr("Error: "), el::Level::Error); } bool is_it_true(const std::string& s) |