#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 <pthread.h>
-
class PING;
namespace STG
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:
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:
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 &);
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 &);
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 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;
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;