aboutsummaryrefslogtreecommitdiff
path: root/src/daemon
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon')
-rw-r--r--src/daemon/daemon.cpp36
-rw-r--r--src/daemon/daemon_commands_handler.h54
2 files changed, 73 insertions, 17 deletions
diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp
index 9f2ae3167..27a1129dc 100644
--- a/src/daemon/daemon.cpp
+++ b/src/daemon/daemon.cpp
@@ -69,7 +69,9 @@ namespace
, "Run on testnet. The wallet must be launched with --testnet flag."
, false
};
- const command_line::arg_descriptor<bool> arg_dns_checkpoints = {"enforce-dns-checkpointing", "checkpoints from DNS server will be enforced", false};
+ const command_line::arg_descriptor<bool> arg_dns_checkpoints = {"enforce-dns-checkpointing", "checkpoints from DNS server will be enforced", false};
+ const command_line::arg_descriptor<bool> arg_test_drop_download = {"test-drop-download", "For network testing, drop downloaded blocks instead checking/adding them to blockchain. Can fake-download blocks very fast."};
+ const command_line::arg_descriptor<bool> arg_save_graph = {"save-graph", "Save data for dr monero", false};
}
bool command_line_preprocessor(const boost::program_options::variables_map& vm)
@@ -99,6 +101,8 @@ bool command_line_preprocessor(const boost::program_options::variables_map& vm)
else if (log_space::get_set_log_detalisation_level(false) != new_log_level)
{
log_space::get_set_log_detalisation_level(true, new_log_level);
+ int otshell_utils_log_level = 100 - (new_log_level * 25);
+ gCurrentLogger.setDebugLevel(otshell_utils_log_level);
LOG_PRINT_L0("LOG_LEVEL set to " << new_log_level);
}
@@ -107,7 +111,7 @@ bool command_line_preprocessor(const boost::program_options::variables_map& vm)
int main(int argc, char* argv[])
{
-
+
string_tools::set_module_name_and_folder(argv[0]);
#ifdef WIN32
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
@@ -137,6 +141,8 @@ int main(int argc, char* argv[])
command_line::add_arg(desc_cmd_sett, arg_console);
command_line::add_arg(desc_cmd_sett, arg_testnet_on);
command_line::add_arg(desc_cmd_sett, arg_dns_checkpoints);
+ command_line::add_arg(desc_cmd_sett, arg_test_drop_download);
+ command_line::add_arg(desc_cmd_sett, arg_save_graph);
cryptonote::core::init_options(desc_cmd_sett);
cryptonote::core_rpc_server::init_options(desc_cmd_sett);
@@ -231,7 +237,17 @@ int main(int argc, char* argv[])
cryptonote::core_rpc_server rpc_server {ccore, p2psrv, testnet_mode};
cprotocol.set_p2p_endpoint(&p2psrv);
ccore.set_cryptonote_protocol(&cprotocol);
- daemon_cmmands_handler dch(p2psrv, testnet_mode);
+ std::shared_ptr<daemon_cmmands_handler> dch(new daemon_cmmands_handler(p2psrv, testnet_mode));
+ if(command_line::has_arg(vm, arg_save_graph))
+ p2psrv.set_save_graph(true);
+
+ //initialize core here
+ LOG_PRINT_L0("Initializing core...");
+ res = ccore.init(vm, testnet_mode);
+ CHECK_AND_ASSERT_MES(res, 1, "Failed to initialize core");
+ if (command_line::get_arg(vm, arg_test_drop_download))
+ ccore.no_check_blocks();
+ LOG_PRINT_L0("Core initialized OK");
//initialize objects
LOG_PRINT_L0("Initializing P2P server...");
@@ -248,17 +264,11 @@ int main(int argc, char* argv[])
res = rpc_server.init(vm);
CHECK_AND_ASSERT_MES(res, 1, "Failed to initialize core RPC server.");
LOG_PRINT_GREEN("Core RPC server initialized OK on port: " << rpc_server.get_binded_port(), LOG_LEVEL_0);
-
- //initialize core here
- LOG_PRINT_L0("Initializing core...");
- res = ccore.init(vm, testnet_mode);
- CHECK_AND_ASSERT_MES(res, 1, "Failed to initialize core");
- LOG_PRINT_L0("Core initialized OK");
-
+
// start components
if(!command_line::has_arg(vm, arg_console))
{
- dch.start_handling();
+ dch->start_handling();
}
LOG_PRINT_L0("Starting core RPC server...");
@@ -267,7 +277,7 @@ int main(int argc, char* argv[])
LOG_PRINT_L0("Core RPC server started ok");
tools::signal_handler::install([&dch, &p2psrv] {
- dch.stop_handling();
+ dch->stop_handling();
p2psrv.send_stop_signal();
});
@@ -276,6 +286,8 @@ int main(int argc, char* argv[])
LOG_PRINT_L0("P2P net loop stopped");
//stop components
+ dch->stop_handling();
+ dch.reset();
LOG_PRINT_L0("Stopping core rpc server...");
rpc_server.send_stop_signal();
rpc_server.timed_wait_server_stop(5000);
diff --git a/src/daemon/daemon_commands_handler.h b/src/daemon/daemon_commands_handler.h
index 7cba4ec5a..6afbbb07f 100644
--- a/src/daemon/daemon_commands_handler.h
+++ b/src/daemon/daemon_commands_handler.h
@@ -79,6 +79,10 @@ public:
m_cmd_binder.set_handler("limit_up", boost::bind(&daemon_cmmands_handler::limit_up, this, _1), "Set upload limit [kB/s]");
m_cmd_binder.set_handler("limit_down", boost::bind(&daemon_cmmands_handler::limit_down, this, _1), "Set download limit [kB/s]");
m_cmd_binder.set_handler("limit", boost::bind(&daemon_cmmands_handler::limit, this, _1), "Set download and upload limit [kB/s]");
+ m_cmd_binder.set_handler("fast_exit", boost::bind(&daemon_cmmands_handler::fast_exit, this, _1), "Exit");
+ m_cmd_binder.set_handler("test_drop_download", boost::bind(&daemon_cmmands_handler::test_drop_download, this, _1), "For network testing, drop downloaded blocks instead checking/adding them to blockchain. Can fake-download blocks very fast.");
+ m_cmd_binder.set_handler("start_save_graph", boost::bind(&daemon_cmmands_handler::start_save_graph, this, _1), "");
+ m_cmd_binder.set_handler("stop_save_graph", boost::bind(&daemon_cmmands_handler::stop_save_graph, this, _1), "");
}
bool start_handling()
@@ -240,6 +244,8 @@ private:
}
log_space::log_singletone::get_set_log_detalisation_level(true, l);
+ int otshell_utils_log_level = 100 - (l * 25);
+ gCurrentLogger.setDebugLevel(otshell_utils_log_level);
return true;
}
@@ -406,7 +412,7 @@ private:
//--------------------------------------------------------------------------------
bool out_peers_limit(const std::vector<std::string>& args) {
if(args.size()!=1) {
- std::cout << "Usage: limit_down <speed>" << ENDL;
+ std::cout << "Usage: out_peers <number_of_peers>" << ENDL;
return true;
}
@@ -420,13 +426,26 @@ private:
return false;
}
+ using namespace boost::chrono;
+ auto point = steady_clock::now();
+ auto time_from_epoh = point.time_since_epoch();
+ auto ms = duration_cast< milliseconds >( time_from_epoh ).count();
+ double ms_f = ms;
+ ms_f /= 1000.;
+
+ std::ofstream limitFile("log/dr-monero/peers_limit.info", std::ios::app);
+ limitFile.precision(7);
+ limitFile << ms_f << " " << static_cast<int>(limit) << std::endl;
if (m_srv.m_config.m_net_config.connections_count > limit)
{
- int count = m_srv.m_config.m_net_config.connections_count - limit;
m_srv.m_config.m_net_config.connections_count = limit;
- m_srv.delete_connections(count);
- }
- else
+ if (m_srv.m_number_of_out_peers > limit)
+ {
+ int count = m_srv.m_number_of_out_peers - limit;
+ m_srv.delete_connections(count);
+ }
+ }
+ else
m_srv.m_config.m_net_config.connections_count = limit;
return true;
@@ -527,4 +546,29 @@ private:
return true;
}
+ //--------------------------------------------------------------------------------
+ bool fast_exit(const std::vector<std::string>& args)
+ {
+ m_srv.get_payload_object().get_core().set_fast_exit();
+ m_srv.send_stop_signal();
+ return true;
+ }
+ //--------------------------------------------------------------------------------
+ bool test_drop_download(const std::vector<std::string>& args)
+ {
+ m_srv.get_payload_object().get_core().no_check_blocks();
+ return true;
+ }
+ //--------------------------------------------------------------------------------
+ bool start_save_graph(const std::vector<std::string>& args)
+ {
+ m_srv.set_save_graph(true);
+ return true;
+ }
+ //--------------------------------------------------------------------------------
+ bool stop_save_graph(const std::vector<std::string>& args)
+ {
+ m_srv.set_save_graph(false);
+ return true;
+ }
};