diff options
author | peterbell10 <peterbell10@live.co.uk> | 2017-06-15 11:03:49 +0200 |
---|---|---|
committer | Lukas Pioch <lukas@zgow.de> | 2017-06-15 11:03:49 +0200 |
commit | 035ecdc9e285ad2fd9ccf51e4ed2ac01b53dc3d1 (patch) | |
tree | b6caede9a35093d3e59c57c8c8c7295dc1c8fbaf /src/OSSupport/NetworkLookup.cpp | |
parent | Added missing 1.12 packet changes (diff) | |
download | cuberite-035ecdc9e285ad2fd9ccf51e4ed2ac01b53dc3d1.tar cuberite-035ecdc9e285ad2fd9ccf51e4ed2ac01b53dc3d1.tar.gz cuberite-035ecdc9e285ad2fd9ccf51e4ed2ac01b53dc3d1.tar.bz2 cuberite-035ecdc9e285ad2fd9ccf51e4ed2ac01b53dc3d1.tar.lz cuberite-035ecdc9e285ad2fd9ccf51e4ed2ac01b53dc3d1.tar.xz cuberite-035ecdc9e285ad2fd9ccf51e4ed2ac01b53dc3d1.tar.zst cuberite-035ecdc9e285ad2fd9ccf51e4ed2ac01b53dc3d1.zip |
Diffstat (limited to 'src/OSSupport/NetworkLookup.cpp')
-rw-r--r-- | src/OSSupport/NetworkLookup.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/OSSupport/NetworkLookup.cpp b/src/OSSupport/NetworkLookup.cpp new file mode 100644 index 000000000..5cd7ecfc4 --- /dev/null +++ b/src/OSSupport/NetworkLookup.cpp @@ -0,0 +1,63 @@ + +// NetworkLookup.cpp + +// Implements the cNetworkLookup class representing an executor for asynchronous lookup tasks + + +#include "Globals.h" +#include "NetworkLookup.h" + + + + +cNetworkLookup::cNetworkLookup() : + cIsThread("NetworkLookup") +{ +} + + + + + +cNetworkLookup::~cNetworkLookup() +{ + Stop(); +} + + + + + +void cNetworkLookup::ScheduleLookup(std::function<void()> a_Lookup) +{ + m_WorkQueue.EnqueueItem(std::move(a_Lookup)); +} + + + + + +void cNetworkLookup::Stop() +{ + m_ShouldTerminate = true; + m_WorkQueue.Clear(); + m_WorkQueue.EnqueueItem([](){}); // Dummy work to wake up the thread + cIsThread::Stop(); +} + + + + + +void cNetworkLookup::Execute() +{ + while (!m_ShouldTerminate) + { + // Execute the next task in the queue + auto Work = m_WorkQueue.DequeueItem(); + Work(); + } +} + + + |