Merge pull request #308
35b160e
fix ^D exit for bitmonerod (moneromooo-monero)
This commit is contained in:
commit
f89cf1df87
@ -240,9 +240,9 @@ namespace epee
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<class chain_handler>
|
template<class chain_handler>
|
||||||
bool run(chain_handler ch_handler, const std::string& prompt = "#", const std::string& usage = "")
|
bool run(chain_handler ch_handler, const std::string& prompt = "#", const std::string& usage = "", std::function<void(void)> exit_handler = NULL)
|
||||||
{
|
{
|
||||||
return run(prompt, usage, [&](const std::string& cmd) { return ch_handler(cmd); }, [] { });
|
return run(prompt, usage, [&](const std::string& cmd) { return ch_handler(cmd); }, exit_handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
void stop()
|
void stop()
|
||||||
@ -252,8 +252,8 @@ namespace epee
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
template<typename t_cmd_handler, typename t_exit_handler>
|
template<typename t_cmd_handler>
|
||||||
bool run(const std::string& prompt, const std::string& usage, const t_cmd_handler& cmd_handler, const t_exit_handler& exit_handler)
|
bool run(const std::string& prompt, const std::string& usage, const t_cmd_handler& cmd_handler, std::function<void(void)> exit_handler)
|
||||||
{
|
{
|
||||||
TRY_ENTRY();
|
TRY_ENTRY();
|
||||||
bool continue_handle = true;
|
bool continue_handle = true;
|
||||||
@ -429,9 +429,9 @@ namespace epee
|
|||||||
std::unique_ptr<boost::thread> m_console_thread;
|
std::unique_ptr<boost::thread> m_console_thread;
|
||||||
async_console_handler m_console_handler;
|
async_console_handler m_console_handler;
|
||||||
public:
|
public:
|
||||||
bool start_handling(const std::string& prompt, const std::string& usage_string = "")
|
bool start_handling(const std::string& prompt, const std::string& usage_string = "", std::function<void(void)> exit_handler = NULL)
|
||||||
{
|
{
|
||||||
m_console_thread.reset(new boost::thread(boost::bind(&console_handlers_binder::run_handling, this, prompt, usage_string)));
|
m_console_thread.reset(new boost::thread(boost::bind(&console_handlers_binder::run_handling, this, prompt, usage_string, exit_handler)));
|
||||||
m_console_thread->detach();
|
m_console_thread->detach();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -441,9 +441,9 @@ namespace epee
|
|||||||
m_console_handler.stop();
|
m_console_handler.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool run_handling(const std::string& prompt, const std::string& usage_string)
|
bool run_handling(const std::string& prompt, const std::string& usage_string, std::function<void(void)> exit_handler = NULL)
|
||||||
{
|
{
|
||||||
return m_console_handler.run(boost::bind(&console_handlers_binder::process_command_str, this, _1), prompt, usage_string);
|
return m_console_handler.run(boost::bind(&console_handlers_binder::process_command_str, this, _1), prompt, usage_string, exit_handler);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -196,11 +196,11 @@ bool t_command_server::process_command_vec(const std::vector<std::string>& cmd)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool t_command_server::start_handling()
|
bool t_command_server::start_handling(std::function<void(void)> exit_handler)
|
||||||
{
|
{
|
||||||
if (m_is_rpc) return false;
|
if (m_is_rpc) return false;
|
||||||
|
|
||||||
m_command_lookup.start_handling("", get_commands_str());
|
m_command_lookup.start_handling("", get_commands_str(), exit_handler);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ public:
|
|||||||
|
|
||||||
bool process_command_vec(const std::vector<std::string>& cmd);
|
bool process_command_vec(const std::vector<std::string>& cmd);
|
||||||
|
|
||||||
bool start_handling();
|
bool start_handling(std::function<void(void)> exit_handler = NULL);
|
||||||
|
|
||||||
void stop_handling();
|
void stop_handling();
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ bool t_daemon::run(bool interactive)
|
|||||||
if (interactive)
|
if (interactive)
|
||||||
{
|
{
|
||||||
rpc_commands = new daemonize::t_command_server(0, 0, false, mp_internals->rpc.get_server());
|
rpc_commands = new daemonize::t_command_server(0, 0, false, mp_internals->rpc.get_server());
|
||||||
rpc_commands->start_handling();
|
rpc_commands->start_handling(std::bind(&daemonize::t_daemon::stop, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
mp_internals->p2p.run(); // blocks until p2p goes down
|
mp_internals->p2p.run(); // blocks until p2p goes down
|
||||||
|
Loading…
Reference in New Issue
Block a user