-#include <cassert>
-
-#include "stg/INTEGER.h"
+#include "sensors.h"
#include "stg/user.h"
-#include "sensors.h"
+#include <cassert>
-bool UsersSensor::GetValue(ObjectSyntax_t * objectSyntax) const
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wold-style-cast"
+#include "stg/INTEGER.h"
+#pragma GCC diagnostic pop
+
+void UsersSensor::GetValue(ObjectSyntax_t * objectSyntax) const
{
int handle = users.OpenSearch();
assert(handle && "USERS::OpenSearch is always correct");
-USER_PTR user;
+STG::User* user;
size_t count = 0;
while (!users.SearchNext(handle, &user))
{
users.CloseSearch(handle);
ValueToOS(count, objectSyntax);
-return true;
}
#ifdef DEBUG
int handle = users.OpenSearch();
assert(handle && "USERS::OpenSearch is always correct");
-USER_PTR user;
+STG::User* user;
size_t count = 0;
while (!users.SearchNext(handle, &user))
{
users.CloseSearch(handle);
-std::string res;
-x2str(count, res);
-return res;
+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;
+}