From 41be9f66fa620c9ca488d76821bb42c6d7ac74d6 Mon Sep 17 00:00:00 2001
From: Benny Baumann <BenBE@geshi.org>
Date: Tue, 26 May 2020 23:37:45 +0200
Subject: [PATCH] Initial use of libev

---
 src/app/mumta.cpp     | 32 ++++++++++++++++++++++++++++++++
 src/app/mumta.ldflags |  2 ++
 2 files changed, 34 insertions(+)

diff --git a/src/app/mumta.cpp b/src/app/mumta.cpp
index 4dad2ad..296e09a 100644
--- a/src/app/mumta.cpp
+++ b/src/app/mumta.cpp
@@ -1,10 +1,40 @@
 #include <chrono>
 #include <cstdint>
+#include <iostream>
 #include <thread>
 
+#include <ev++.h>
+
 #include "service/daemonctl.hpp"
 
+bool check_version_libev() {
+    auto ev_major{ev::version_major()};
+    auto ev_minor{ev::version_minor()};
+
+    constexpr auto exp_major{EV_VERSION_MAJOR};
+    constexpr auto exp_minor{EV_VERSION_MINOR};
+
+    std::cout << "Checking dependency: libev: detected " << ev_major << "." << ev_minor << ", compiled " << exp_major << "." << exp_minor << "\n" << std::flush;
+
+    if(ev_major != exp_major) {
+        std::cerr << "Checking dependency: libev: failed version check: Major API version mismatch.\n" << std::flush;
+        return false;
+    }
+
+    if(ev_minor < exp_minor) {
+        std::cerr << "Checking dependency: libev: failed version check: Minor API version too old.\n" << std::flush;
+        return false;
+    }
+
+    return true;
+}
+
 int main() {
+    dctl_status_msg("Checking environment");
+    if(!check_version_libev()) {
+        return 1;
+    }
+
     dctl_status_msg("Initializing");
     dctl_status_msg("Reading configuration");
     dctl_status_msg("Initializing network");
@@ -30,4 +60,6 @@ int main() {
     dctl_status_msg("Storing active caches");
     dctl_status_msg("Closing active sockets");
     dctl_status_msg("Inactive");
+
+    return 0;
 }
diff --git a/src/app/mumta.ldflags b/src/app/mumta.ldflags
index c205321..5cee85c 100644
--- a/src/app/mumta.ldflags
+++ b/src/app/mumta.ldflags
@@ -1 +1,3 @@
 `pkg-config --cflags --libs libsystemd`
+-lev
+-pthread
-- 
GitLab