X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/0907aa4037b12b6b88ee24495d4577a064d4f8db..1c529746ff07312e30e76fd933c628c658e3c77d:/projects/stargazer/plugins/other/rscript/rscript.h?ds=sidebyside

diff --git a/projects/stargazer/plugins/other/rscript/rscript.h b/projects/stargazer/plugins/other/rscript/rscript.h
index e734227c..fc957108 100644
--- a/projects/stargazer/plugins/other/rscript/rscript.h
+++ b/projects/stargazer/plugins/other/rscript/rscript.h
@@ -36,10 +36,13 @@
 #include <map>
 #include <functional>
 #include <utility>
+#include <mutex>
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wshadow"
+#include <jthread.hpp>
+#pragma GCC diagnostic pop
 #include <cstdint>
 
-#include <pthread.h>
-
 namespace STG
 {
 struct Settings;
@@ -60,7 +63,7 @@ class ADD_USER_NONIFIER: public STG::NotifierBase<UserPtr> {
 public:
     explicit ADD_USER_NONIFIER(REMOTE_SCRIPT & r)
         : rs(r) {}
-    void Notify(const UserPtr & user);
+    void notify(const UserPtr & user) override;
 
 private:
     ADD_USER_NONIFIER(const ADD_USER_NONIFIER & rhs);
@@ -73,7 +76,7 @@ class DEL_USER_NONIFIER: public STG::NotifierBase<UserPtr> {
 public:
     explicit DEL_USER_NONIFIER(REMOTE_SCRIPT & r)
         : rs(r) {}
-    void Notify(const UserPtr & user);
+    void notify(const UserPtr & user) override;
 
 private:
     DEL_USER_NONIFIER(const DEL_USER_NONIFIER & rhs);
@@ -98,7 +101,7 @@ public:
         return *this;
     }
 
-    void Notify(const uint32_t & oldValue, const uint32_t & newValue);
+    void notify(const uint32_t & oldValue, const uint32_t & newValue) override;
     UserPtr GetUser() const { return user; }
 
 private:
@@ -123,7 +126,7 @@ public:
         return *this;
     }
 
-    void Notify(const bool & oldValue, const bool & newValue);
+    void notify(const bool & oldValue, const bool & newValue) override;
     UserPtr GetUser() const { return user; }
 
 private:
@@ -174,7 +177,6 @@ private:
 class REMOTE_SCRIPT : public STG::Plugin {
 public:
                         REMOTE_SCRIPT();
-                        ~REMOTE_SCRIPT() override;
 
     void                SetUsers(STG::Users * u) override { users = u; }
     void                SetSettings(const STG::ModuleSettings & s) override { settings = s; }
@@ -200,7 +202,7 @@ private:
     REMOTE_SCRIPT(const REMOTE_SCRIPT & rhs);
     REMOTE_SCRIPT & operator=(const REMOTE_SCRIPT & rhs);
 
-    static void *       Run(void *);
+    void                Run(std::stop_token token);
     bool                PrepareNet();
     bool                FinalizeNet();
 
@@ -215,8 +217,8 @@ private:
     void                SetUserNotifiers(UserPtr u);
     void                UnSetUserNotifiers(UserPtr u);
 
-    void                InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password) const;
-    void                Encrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, size_t len8) const;
+    void                InitEncrypt(const std::string & password) const;
+    void                Encrypt(void * dst, const void * src, size_t len8) const;
 
     mutable BLOWFISH_CTX ctx;
 
@@ -230,15 +232,14 @@ private:
     int                 sendPeriod;
     int                 halfPeriod;
 
-    bool                nonstop;
     bool                isRunning;
 
     STG::Users *             users;
 
     std::vector<NET_ROUTER> netRouters;
 
-    pthread_t           thread;
-    pthread_mutex_t     mutex;
+    std::jthread        m_thread;
+    std::mutex          m_mutex;
 
     int                 sock;
 
@@ -263,12 +264,12 @@ class DisconnectUser : public std::unary_function<std::pair<const uint32_t, USER
         REMOTE_SCRIPT & rscript;
 };
 //-----------------------------------------------------------------------------
-inline void ADD_USER_NONIFIER::Notify(const UserPtr & user)
+inline void ADD_USER_NONIFIER::notify(const UserPtr & user)
 {
 rs.AddUser(user);
 }
 //-----------------------------------------------------------------------------
-inline void DEL_USER_NONIFIER::Notify(const UserPtr & user)
+inline void DEL_USER_NONIFIER::notify(const UserPtr & user)
 {
 rs.DelUser(user);
 }