aboutsummaryrefslogtreecommitdiff
path: root/src/daemon
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon')
-rw-r--r--src/daemon/daemon.cpp18
-rw-r--r--src/daemon/daemon_commands_handler.h24
2 files changed, 33 insertions, 9 deletions
diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp
index d1ac3714b..528c024ba 100644
--- a/src/daemon/daemon.cpp
+++ b/src/daemon/daemon.cpp
@@ -38,6 +38,7 @@ namespace
const command_line::arg_descriptor<bool> arg_os_version = {"os-version", ""};
const command_line::arg_descriptor<std::string> arg_log_file = {"log-file", "", ""};
const command_line::arg_descriptor<int> arg_log_level = {"log-level", "", LOG_LEVEL_0};
+ const command_line::arg_descriptor<bool> arg_console = {"no-console", "Disable daemon console commands"};
}
bool command_line_preprocessor(const boost::program_options::variables_map& vm);
@@ -67,6 +68,8 @@ int main(int argc, char* argv[])
command_line::add_arg(desc_cmd_sett, arg_log_file);
command_line::add_arg(desc_cmd_sett, arg_log_level);
+ command_line::add_arg(desc_cmd_sett, arg_console);
+
cryptonote::core::init_options(desc_cmd_sett);
cryptonote::core_rpc_server::init_options(desc_cmd_sett);
@@ -118,6 +121,7 @@ int main(int argc, char* argv[])
log_dir = log_file_path.has_parent_path() ? log_file_path.parent_path().string() : log_space::log_singletone::get_default_log_folder();
log_space::log_singletone::add_logger(LOGGER_FILE, log_file_path.filename().string().c_str(), log_dir.c_str());
+ LOG_PRINT_L0(CRYPTONOTE_NAME << " v" << PROJECT_VERSION_LONG);
if (command_line_preprocessor(vm))
{
@@ -162,15 +166,23 @@ int main(int argc, char* argv[])
res = ccore.init(vm);
CHECK_AND_ASSERT_MES(res, 1, "Failed to initialize core");
LOG_PRINT_L0("Core initialized OK");
-
+
// start components
- dch.start_handling();
+ if(!command_line::has_arg(vm, arg_console))
+ {
+ dch.start_handling();
+ }
LOG_PRINT_L0("Starting core rpc server...");
res = rpc_server.run(2, false);
CHECK_AND_ASSERT_MES(res, 1, "Failed to initialize core rpc server.");
LOG_PRINT_L0("Core rpc server started ok");
+ tools::signal_handler::install([&dch, &p2psrv] {
+ dch.stop_handling();
+ p2psrv.send_stop_signal();
+ });
+
LOG_PRINT_L0("Starting p2p net loop...");
p2psrv.run();
LOG_PRINT_L0("p2p net loop stopped");
@@ -205,7 +217,7 @@ bool command_line_preprocessor(const boost::program_options::variables_map& vm)
bool exit = false;
if (command_line::get_arg(vm, command_line::arg_version))
{
- std::cout << CRYPTONOTE_NAME << PROJECT_VERSION_LONG << ENDL;
+ std::cout << CRYPTONOTE_NAME << " v" << PROJECT_VERSION_LONG << ENDL;
exit = true;
}
if (command_line::get_arg(vm, arg_os_version))
diff --git a/src/daemon/daemon_commands_handler.h b/src/daemon/daemon_commands_handler.h
index 2edd5d414..7695508c9 100644
--- a/src/daemon/daemon_commands_handler.h
+++ b/src/daemon/daemon_commands_handler.h
@@ -38,10 +38,15 @@ public:
bool start_handling()
{
- m_cmd_binder.start_handling(&m_srv, "");
+ m_cmd_binder.start_handling(&m_srv, "", "");
return true;
}
+ void stop_handling()
+ {
+ m_cmd_binder.stop_handling();
+ }
+
private:
epee::srv_console_handlers_binder<nodetool::node_server<cryptonote::t_cryptonote_protocol_handler<cryptonote::core> > > m_cmd_binder;
@@ -77,7 +82,13 @@ private:
//--------------------------------------------------------------------------------
bool show_hr(const std::vector<std::string>& args)
{
- m_srv.get_payload_object().get_core().get_miner().do_print_hashrate(true);
+ if(!m_srv.get_payload_object().get_core().get_miner().is_mining())
+ {
+ std::cout << "Mining is not started. You need start mining before you can see hash rate." << ENDL;
+ } else
+ {
+ m_srv.get_payload_object().get_core().get_miner().do_print_hashrate(true);
+ }
return true;
}
//--------------------------------------------------------------------------------
@@ -100,7 +111,7 @@ private:
//--------------------------------------------------------------------------------
bool print_cn(const std::vector<std::string>& args)
{
- m_srv.log_connections();
+ m_srv.get_payload_object().log_connections();
return true;
}
//--------------------------------------------------------------------------------
@@ -263,7 +274,7 @@ private:
{
if(!args.size())
{
- std::cout << "target account address for mining is not set" << std::endl;
+ std::cout << "Please, specify wallet address to mine for: start_mining <addr> [threads=1]" << std::endl;
return true;
}
@@ -273,10 +284,11 @@ private:
std::cout << "target account address has wrong format" << std::endl;
return true;
}
- size_t threads_count = 1;
+ size_t threads_count = 1;
if(args.size() > 1)
{
- string_tools::get_xtype_from_string(threads_count, args[1]);
+ bool ok = string_tools::get_xtype_from_string(threads_count, args[1]);
+ threads_count = (ok && 0 < threads_count) ? threads_count : 1;
}
m_srv.get_payload_object().get_core().get_miner().start(adr, threads_count);