summaryrefslogtreecommitdiffstats
path: root/src/OSSupport/NetworkLookup.cpp
diff options
context:
space:
mode:
authorpeterbell10 <peterbell10@live.co.uk>2017-06-15 11:03:49 +0200
committerLukas Pioch <lukas@zgow.de>2017-06-15 11:03:49 +0200
commit035ecdc9e285ad2fd9ccf51e4ed2ac01b53dc3d1 (patch)
treeb6caede9a35093d3e59c57c8c8c7295dc1c8fbaf /src/OSSupport/NetworkLookup.cpp
parentAdded missing 1.12 packet changes (diff)
downloadcuberite-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.cpp63
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();
+ }
+}
+
+
+