X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/97a198bf64f74f1bacd064026e67d7cb40daffa2..aff88622fc65f266e4c511c5138b950cc72ba444:/projects/stargazer/plugins/other/rscript/ur_functor.h diff --git a/projects/stargazer/plugins/other/rscript/ur_functor.h b/projects/stargazer/plugins/other/rscript/ur_functor.h index c5752e87..9ecf2bc5 100644 --- a/projects/stargazer/plugins/other/rscript/ur_functor.h +++ b/projects/stargazer/plugins/other/rscript/ur_functor.h @@ -21,14 +21,14 @@ #ifndef __UR_FUNCTOR_H__ #define __UR_FUNCTOR_H__ -#include <functional> -#include <algorithm> -#include <utility> +#include "rscript.h" #include "stg/os_int.h" #include "stg/common.h" -#include "rscript.h" +#include <functional> +#include <algorithm> +#include <utility> namespace RS { @@ -36,12 +36,12 @@ namespace RS class UpdateRouter : public std::unary_function<std::pair<const uint32_t, RS::USER>, void> { public: - UpdateRouter(REMOTE_SCRIPT & t) - : obj(t) {}; + explicit UpdateRouter(REMOTE_SCRIPT & t) + : obj(t) {} void operator() (std::pair<const uint32_t, USER> & val) { - std::vector<uint32_t> newRouters = obj.IP2Routers(val.first); + std::vector<uint32_t> newRouters = obj.IP2Routers(val.second.ip); std::vector<uint32_t>::const_iterator oldIt(val.second.routers.begin()); std::vector<uint32_t>::const_iterator newIt(newRouters.begin()); val.second.shortPacketsCount = 0; @@ -52,29 +52,28 @@ public: { if (newIt != newRouters.end()) { - obj.SendDirect(val.first, val.second, *newIt); // Connect on new router + obj.SendDirect(val.second, *newIt); // Connect on new router ++newIt; } } else if (newIt == newRouters.end()) { - obj.SendDirect(val.first, val.second, *oldIt, true); // Disconnect on old router + obj.SendDirect(val.second, *oldIt, true); // Disconnect on old router ++oldIt; - } + } else if (*oldIt < *newIt) { - obj.SendDirect(val.first, val.second, *oldIt, true); // Disconnect on old router + obj.SendDirect(val.second, *oldIt, true); // Disconnect on old router ++oldIt; } else if (*oldIt > *newIt) { - obj.SendDirect(val.first, val.second, *newIt); // Connect on new router + obj.SendDirect(val.second, *newIt); // Connect on new router ++newIt; } else { - if (oldIt != val.second.routers.end()) - ++oldIt; + ++oldIt; if (newIt != newRouters.end()) ++newIt; }