X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/e08647faf449d1e8b4b214e0e1891203e322f76a..2574a28cbf000603bc31f61593dbf061ff56c1d5:/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 9cfdadd0..d868e37b 100644 --- a/projects/stargazer/plugins/other/smux/sensors.cpp +++ b/projects/stargazer/plugins/other/smux/sensors.cpp @@ -1,17 +1,20 @@ -#include - -#include "stg/INTEGER.h" +#include "sensors.h" #include "stg/user.h" -#include "sensors.h" +#include -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)) { @@ -22,7 +25,6 @@ while (!users.SearchNext(handle, &user)) users.CloseSearch(handle); ValueToOS(count, objectSyntax); -return true; } #ifdef DEBUG @@ -31,7 +33,7 @@ std::string UsersSensor::ToString() 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)) { @@ -41,8 +43,19 @@ 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; +}