aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_protocol/cryptonote_protocol_handler.inl
diff options
context:
space:
mode:
authorThomas Winget <tewinget@gmail.com>2014-07-18 19:33:03 -0400
committerThomas Winget <tewinget@gmail.com>2014-07-18 19:33:03 -0400
commit9f88b7ce6bc9845e097a6d67f3d3c97110b819c1 (patch)
tree689d224568a6921f899bb592b7f6ed085f626445 /src/cryptonote_protocol/cryptonote_protocol_handler.inl
parentMerge pull request #63 from mikezackles/bytecoin_for_merge (diff)
downloadmonero-9f88b7ce6bc9845e097a6d67f3d3c97110b819c1.tar.xz
Added get_connections RPC call to daemon
Diffstat (limited to '')
-rw-r--r--src/cryptonote_protocol/cryptonote_protocol_handler.inl41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.inl b/src/cryptonote_protocol/cryptonote_protocol_handler.inl
index a2f0bb3ad..3358860d1 100644
--- a/src/cryptonote_protocol/cryptonote_protocol_handler.inl
+++ b/src/cryptonote_protocol/cryptonote_protocol_handler.inl
@@ -3,6 +3,8 @@
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#include <boost/interprocess/detail/atomic.hpp>
+#include <list>
+
#include "cryptonote_core/cryptonote_format_utils.h"
#include "profile_tools.h"
namespace cryptonote
@@ -90,6 +92,45 @@ namespace cryptonote
});
LOG_PRINT_L0("Connections: " << ENDL << ss.str());
}
+ //------------------------------------------------------------------------------------------------------------------------
+ // Returns a list of connection_info objects describing each open p2p connection
+ //------------------------------------------------------------------------------------------------------------------------
+ template<class t_core>
+ std::list<connection_info> t_cryptonote_protocol_handler<t_core>::get_connections()
+ {
+ std::list<connection_info> connections;
+
+ m_p2p->for_each_connection([&](const connection_context& cntxt, nodetool::peerid_type peer_id)
+ {
+ connection_info cnx;
+ auto timestamp = time(NULL);
+
+ cnx.incoming = cntxt.m_is_income ? true : false;
+
+ cnx.ip = epee::string_tools::get_ip_string_from_int32(cntxt.m_remote_ip);
+ cnx.port = std::to_string(cntxt.m_remote_port);
+
+ std::stringstream peer_id_str;
+ peer_id_str << std::hex << peer_id;
+ peer_id_str >> cnx.peer_id;
+
+ cnx.recv_count = cntxt.m_recv_cnt;
+ cnx.recv_idle_time = timestamp - cntxt.m_last_recv;
+
+ cnx.send_count = cntxt.m_send_cnt;
+ cnx.send_idle_time = timestamp;
+
+ cnx.state = get_protocol_state_string(cntxt.m_state);
+
+ cnx.live_time = timestamp - cntxt.m_started;
+
+ connections.push_back(cnx);
+
+ return true;
+ });
+
+ return connections;
+ }
//------------------------------------------------------------------------------------------------------------------------
template<class t_core>
bool t_cryptonote_protocol_handler<t_core>::process_payload_sync_data(const CORE_SYNC_DATA& hshd, cryptonote_connection_context& context, bool is_inital)