diff options
Diffstat (limited to 'src/OSSupport/NetworkLookup.h')
-rw-r--r-- | src/OSSupport/NetworkLookup.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/OSSupport/NetworkLookup.h b/src/OSSupport/NetworkLookup.h new file mode 100644 index 000000000..e09062f4d --- /dev/null +++ b/src/OSSupport/NetworkLookup.h @@ -0,0 +1,42 @@ + +// NetworkLookup.h + +// Declares the cNetworkLookup class representing an executor for asynchronous lookup tasks + +#pragma once + +#include <functional> + +#include "IsThread.h" +#include "Queue.h" + + + + + +class cNetworkLookup : + public cIsThread +{ +public: + + cNetworkLookup(); + ~cNetworkLookup(); + + /** Schedule a lookup task for execution. */ + void ScheduleLookup(std::function<void()> a_Lookup); + + /** Cancels any scheduled lookups and joins the lookup thread. */ + void Stop(); + +protected: + + /** Process the queue until the thread is stopped. */ + virtual void Execute() override final; + +private: + + /** The queue of lookup tasks waiting to be executed. */ + cQueue<std::function<void()>> m_WorkQueue; +}; + + |