X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/c016156ebb870d9d81219b8c4165aa75703f1e85..f15d246cc063274168a1131d4551932245fece67:/projects/stargazer/plugins/other/smux/tables.cpp diff --git a/projects/stargazer/plugins/other/smux/tables.cpp b/projects/stargazer/plugins/other/smux/tables.cpp index 023b90b2..c3e3ef54 100644 --- a/projects/stargazer/plugins/other/smux/tables.cpp +++ b/projects/stargazer/plugins/other/smux/tables.cpp @@ -1,23 +1,37 @@ +#include <cassert> #include <utility> +#include <iterator> +#include <algorithm> #include "stg/user_property.h" +#include "stg/tariffs.h" +#include "stg/users.h" #include "tables.h" +std::pair<std::string, size_t> TD2Info(const TARIFF_DATA & td); + void TariffUsersTable::UpdateSensors(Sensors & sensors) const { std::map<std::string, size_t> data; +std::list<TARIFF_DATA> tdl; +tariffs.GetTariffsData(&tdl); +std::transform(tdl.begin(), + tdl.end(), + std::inserter(data, data.begin()), + TD2Info); + int handle = users.OpenSearch(); -if (!handle) - return; +assert(handle && "USERS::OpenSearch is always correct"); USER_PTR user; while (!users.SearchNext(handle, &user)) { + if (user->GetDeleted()) + continue; std::string tariffName(user->GetProperty().tariffName.ConstData()); - std::map<std::string, size_t>::iterator it; - it = data.lower_bound(tariffName); + std::map<std::string, size_t>::iterator it(data.lower_bound(tariffName)); if (it == data.end() || it->first != tariffName) { @@ -37,9 +51,14 @@ OID prefixOid(prefix); std::map<std::string, size_t>::const_iterator it(data.begin()); while (it != data.end()) { - sensors[prefixOid.copyWithSuffix(2, idx)] = new ConstSensor<std::string>(it->first); - sensors[prefixOid.copyWithSuffix(3, idx)] = new ConstSensor<int>(it->second); + sensors[prefixOid.copyWithSuffix(2, static_cast<unsigned int>(idx))] = new ConstSensor<std::string>(it->first); + sensors[prefixOid.copyWithSuffix(3, static_cast<unsigned int>(idx))] = new ConstSensor<unsigned long>(it->second); ++idx; ++it; } } + +std::pair<std::string, size_t> TD2Info(const TARIFF_DATA & td) +{ +return std::make_pair(td.tariffConf.name, 0); +}