]> git.stg.codes - stg.git/blobdiff - projects/stargazer/plugins/other/ping/ping.h
Use async pool instead of EVENT_LOOP.
[stg.git] / projects / stargazer / plugins / other / ping / ping.h
index 9986be39ff75f493a70d166c3639ce9986c93af0..ff66a1c261e74e5bd19442024a7ff353003653ab 100644 (file)
 
 #include <string>
 #include <list>
 
 #include <string>
 #include <list>
+#include <mutex>
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wshadow"
+#include <jthread.hpp>
+#pragma GCC diagnostic pop
 #include <cstdint>
 
 #include <cstdint>
 
-#include <pthread.h>
-
 class PING;
 
 namespace STG
 class PING;
 
 namespace STG
@@ -28,7 +31,7 @@ class CHG_CURRIP_NOTIFIER_PING: public STG::PropertyNotifierBase<uint32_t> {
 public:
     CHG_CURRIP_NOTIFIER_PING(const PING & p, UserPtr u)
         : user(u), ping(p) {}
 public:
     CHG_CURRIP_NOTIFIER_PING(const PING & p, UserPtr u)
         : user(u), ping(p) {}
-    void Notify(const uint32_t & oldIP, const uint32_t & newIP);
+    void notify(const uint32_t & oldIP, const uint32_t & newIP) override;
     UserPtr GetUser() const { return user; }
 
 private:
     UserPtr GetUser() const { return user; }
 
 private:
@@ -42,7 +45,7 @@ class CHG_IPS_NOTIFIER_PING: public STG::PropertyNotifierBase<STG::UserIPs> {
 public:
     CHG_IPS_NOTIFIER_PING(const PING & p, UserPtr u)
         : user(u), ping(p) {}
 public:
     CHG_IPS_NOTIFIER_PING(const PING & p, UserPtr u)
         : user(u), ping(p) {}
-    void Notify(const STG::UserIPs & oldIPS, const STG::UserIPs & newIPS);
+    void notify(const STG::UserIPs & oldIPS, const STG::UserIPs & newIPS) override;
     UserPtr GetUser() const { return user; }
 
 private:
     UserPtr GetUser() const { return user; }
 
 private:
@@ -55,7 +58,7 @@ private:
 class ADD_USER_NONIFIER_PING: public STG::NotifierBase<UserPtr> {
 public:
     explicit ADD_USER_NONIFIER_PING(PING & p) : ping(p) {}
 class ADD_USER_NONIFIER_PING: public STG::NotifierBase<UserPtr> {
 public:
     explicit ADD_USER_NONIFIER_PING(PING & p) : ping(p) {}
-    void Notify(const UserPtr & user);
+    void notify(const UserPtr & user) override;
 
 private:
     ADD_USER_NONIFIER_PING(const ADD_USER_NONIFIER_PING &);
 
 private:
     ADD_USER_NONIFIER_PING(const ADD_USER_NONIFIER_PING &);
@@ -67,7 +70,7 @@ private:
 class DEL_USER_NONIFIER_PING: public STG::NotifierBase<UserPtr> {
 public:
     explicit DEL_USER_NONIFIER_PING(PING & p) : ping(p) {}
 class DEL_USER_NONIFIER_PING: public STG::NotifierBase<UserPtr> {
 public:
     explicit DEL_USER_NONIFIER_PING(PING & p) : ping(p) {}
-    void Notify(const UserPtr & user);
+    void notify(const UserPtr & user) override;
 
 private:
     DEL_USER_NONIFIER_PING(const DEL_USER_NONIFIER_PING &);
 
 private:
     DEL_USER_NONIFIER_PING(const DEL_USER_NONIFIER_PING &);
@@ -92,7 +95,6 @@ friend class CHG_CURRIP_NOTIFIER_PING;
 friend class CHG_IPS_NOTIFIER_PING;
 public:
     PING();
 friend class CHG_IPS_NOTIFIER_PING;
 public:
     PING();
-    ~PING() override;
 
     void SetUsers(STG::Users * u) override { users = u; }
     void SetSettings(const STG::ModuleSettings & s) override { settings = s; }
 
     void SetUsers(STG::Users * u) override { users = u; }
     void SetSettings(const STG::ModuleSettings & s) override { settings = s; }
@@ -118,7 +120,7 @@ private:
     void GetUsers();
     void SetUserNotifiers(UserPtr u);
     void UnSetUserNotifiers(UserPtr u);
     void GetUsers();
     void SetUserNotifiers(UserPtr u);
     void UnSetUserNotifiers(UserPtr u);
-    static void * Run(void * d);
+    void Run(std::stop_token token);
 
     mutable std::string errorStr;
     PING_SETTINGS pingSettings;
 
     mutable std::string errorStr;
     PING_SETTINGS pingSettings;
@@ -126,9 +128,8 @@ private:
     STG::Users * users;
     std::list<UserPtr> usersList;
 
     STG::Users * users;
     std::list<UserPtr> usersList;
 
-    pthread_t thread;
-    pthread_mutex_t mutex;
-    bool nonstop;
+    std::jthread m_thread;
+    std::mutex m_mutex;
     bool isRunning;
     mutable STG_PINGER pinger;
 
     bool isRunning;
     mutable STG_PINGER pinger;