aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-07-02 22:41:15 +0100
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2017-08-07 09:33:04 +0100
commit5be43fcdbad5ed034b07831473e07f47b7b10947 (patch)
tree260422ebe0f60763ad1d61c610c77805ffa25a72 /contrib
parentMerge pull request #2159 (diff)
downloadmonero-5be43fcdbad5ed034b07831473e07f47b7b10947.tar.xz
cryptonote_protocol_handler: sync speedup
A block queue is now placed between block download and block processing. Blocks are now requested only from one peer (unless starved). Includes a new sync_info coommand.
Diffstat (limited to 'contrib')
-rw-r--r--contrib/epee/include/net/levin_protocol_handler_async.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/contrib/epee/include/net/levin_protocol_handler_async.h b/contrib/epee/include/net/levin_protocol_handler_async.h
index 8aa0faba1..60a667690 100644
--- a/contrib/epee/include/net/levin_protocol_handler_async.h
+++ b/contrib/epee/include/net/levin_protocol_handler_async.h
@@ -88,6 +88,8 @@ public:
bool request_callback(boost::uuids::uuid connection_id);
template<class callback_t>
bool foreach_connection(callback_t cb);
+ template<class callback_t>
+ bool for_connection(const boost::uuids::uuid &connection_id, callback_t cb);
size_t get_connections_count();
async_protocol_handler_config():m_pcommands_handler(NULL), m_max_packet_size(LEVIN_DEFAULT_MAX_PACKET_SIZE)
@@ -804,6 +806,18 @@ bool async_protocol_handler_config<t_connection_context>::foreach_connection(cal
return true;
}
//------------------------------------------------------------------------------------------
+template<class t_connection_context> template<class callback_t>
+bool async_protocol_handler_config<t_connection_context>::for_connection(const boost::uuids::uuid &connection_id, callback_t cb)
+{
+ CRITICAL_REGION_LOCAL(m_connects_lock);
+ async_protocol_handler<t_connection_context>* aph = find_connection(connection_id);
+ if (!aph)
+ return false;
+ if(!cb(aph->get_context_ref()))
+ return false;
+ return true;
+}
+//------------------------------------------------------------------------------------------
template<class t_connection_context>
size_t async_protocol_handler_config<t_connection_context>::get_connections_count()
{