X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/2dd96d1468a065ebee3e37b1defcf2c438d72e2f..f9cfb6b592cf376bcf9e0ba3ce7c446e58d62255:/projects/stargazer/plugins/other/smux/sensors.cpp?ds=inline

diff --git a/projects/stargazer/plugins/other/smux/sensors.cpp b/projects/stargazer/plugins/other/smux/sensors.cpp
index 48809032..9a87cbda 100644
--- a/projects/stargazer/plugins/other/smux/sensors.cpp
+++ b/projects/stargazer/plugins/other/smux/sensors.cpp
@@ -1,4 +1,6 @@
-#include "asn1/INTEGER.h"
+#include <cassert>
+
+#include "stg/INTEGER.h"
 
 #include "stg/user.h"
 
@@ -7,10 +9,9 @@
 bool UsersSensor::GetValue(ObjectSyntax_t * objectSyntax) const
 {
 int handle = users.OpenSearch();
-if (!handle)
-    return false;
+assert(handle && "USERS::OpenSearch is always correct");
 
-USER_PTR user;
+STG::User* user;
 size_t count = 0;
 while (!users.SearchNext(handle, &user))
     {
@@ -23,3 +24,36 @@ users.CloseSearch(handle);
 ValueToOS(count, objectSyntax);
 return true;
 }
+
+#ifdef DEBUG
+std::string UsersSensor::ToString() const
+{
+int handle = users.OpenSearch();
+assert(handle && "USERS::OpenSearch is always correct");
+
+STG::User* user;
+size_t count = 0;
+while (!users.SearchNext(handle, &user))
+    {
+    if (UserPredicate(user))
+        ++count;
+    }
+
+users.CloseSearch(handle);
+
+return std::to_string(count);
+}
+#endif
+
+bool ActiveUsersSensor::UserPredicate(STG::User* userPtr) const
+{
+if (!userPtr->GetConnected())
+    return false;
+for (size_t i = 0; i < DIR_NUM; ++i)
+    {
+    if (userPtr->GetSessionUpload()[i] > 0 ||
+        userPtr->GetSessionDownload()[i] > 0)
+        return true;
+    }
+return false;
+}