summaryrefslogtreecommitdiff
path: root/controller/EmbeddedNetworkController.hpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2017-05-02 16:58:51 -0700
committerAdam Ierymenko <adam.ierymenko@gmail.com>2017-05-02 16:58:51 -0700
commit8e19188f49fe33679ebc565cd5f6d184e7b87842 (patch)
treec2187ea9f0970cceaeef940c34e2bbb66a5c9dac /controller/EmbeddedNetworkController.hpp
parent625e3e8e259637ecf45b2f7738b18c9d33975852 (diff)
downloadinfinitytier-8e19188f49fe33679ebc565cd5f6d184e7b87842.tar.gz
infinitytier-8e19188f49fe33679ebc565cd5f6d184e7b87842.zip
Do the sometimes rather big "pong" in a background worker thread.
Diffstat (limited to 'controller/EmbeddedNetworkController.hpp')
-rw-r--r--controller/EmbeddedNetworkController.hpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/controller/EmbeddedNetworkController.hpp b/controller/EmbeddedNetworkController.hpp
index 0a6b8176..ade7eb20 100644
--- a/controller/EmbeddedNetworkController.hpp
+++ b/controller/EmbeddedNetworkController.hpp
@@ -26,6 +26,7 @@
#include <vector>
#include <set>
#include <list>
+#include <thread>
#include "../node/Constants.hpp"
@@ -103,11 +104,29 @@ private:
InetAddress fromAddr;
Identity identity;
Dictionary<ZT_NETWORKCONFIG_METADATA_DICT_CAPACITY> metaData;
+ enum {
+ RQENTRY_TYPE_REQUEST = 0,
+ RQENTRY_TYPE_PING = 1
+ } type;
};
static void _circuitTestCallback(ZT_Node *node,ZT_CircuitTest *test,const ZT_CircuitTestReport *report);
void _request(uint64_t nwid,const InetAddress &fromAddr,uint64_t requestPacketId,const Identity &identity,const Dictionary<ZT_NETWORKCONFIG_METADATA_DICT_CAPACITY> &metaData);
+ inline void _startThreads()
+ {
+ Mutex::Lock _l(_threads_m);
+ if (_threads.size() == 0) {
+ long hwc = (long)std::thread::hardware_concurrency();
+ if (hwc < 1)
+ hwc = 1;
+ else if (hwc > 16)
+ hwc = 16;
+ for(long i=0;i<hwc;++i)
+ _threads.push_back(Thread::start(this));
+ }
+ }
+
// These init objects with default and static/informational fields
inline void _initMember(nlohmann::json &member)
{