X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/1cd2b12bd4e4d86f6cd099240795f3ebeb3852b3..43ac308ea20014761481bc40525496a0bb1d9740:/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 95b03ea2..a4addc83 100644 --- a/projects/stargazer/plugins/other/rscript/ur_functor.h +++ b/projects/stargazer/plugins/other/rscript/ur_functor.h @@ -18,8 +18,7 @@ * Author : Maxim Mamontov */ -#ifndef __UR_FUNCTOR_H__ -#define __UR_FUNCTOR_H__ +#pragma once #include "rscript.h" @@ -30,60 +29,58 @@ #include #include -namespace RS +namespace STG::RS { class UpdateRouter : public std::unary_function, void> { -public: - explicit UpdateRouter(REMOTE_SCRIPT & t) - : obj(t) {} + public: + explicit UpdateRouter(REMOTE_SCRIPT & t) + : obj(t) {} - void operator() (std::pair & val) - { - std::vector newRouters = obj.IP2Routers(val.second.ip); - std::vector::const_iterator oldIt(val.second.routers.begin()); - std::vector::const_iterator newIt(newRouters.begin()); - val.second.shortPacketsCount = 0; - while (oldIt != val.second.routers.end() || - newIt != newRouters.end()) + void operator() (std::pair & val) { - if (oldIt == val.second.routers.end()) + std::vector newRouters = obj.IP2Routers(val.second.ip); + std::vector::const_iterator oldIt(val.second.routers.begin()); + std::vector::const_iterator newIt(newRouters.begin()); + val.second.shortPacketsCount = 0; + while (oldIt != val.second.routers.end() || + newIt != newRouters.end()) { - if (newIt != newRouters.end()) + if (oldIt == val.second.routers.end()) + { + if (newIt != newRouters.end()) + { + obj.SendDirect(val.second, *newIt); // Connect on new router + ++newIt; + } + } + else if (newIt == newRouters.end()) + { + obj.SendDirect(val.second, *oldIt, true); // Disconnect on old router + ++oldIt; + } + else if (*oldIt < *newIt) + { + obj.SendDirect(val.second, *oldIt, true); // Disconnect on old router + ++oldIt; + } + else if (*oldIt > *newIt) { obj.SendDirect(val.second, *newIt); // Connect on new router ++newIt; } + else + { + ++oldIt; + if (newIt != newRouters.end()) + ++newIt; + } } - else if (newIt == newRouters.end()) - { - obj.SendDirect(val.second, *oldIt, true); // Disconnect on old router - ++oldIt; - } - else if (*oldIt < *newIt) - { - obj.SendDirect(val.second, *oldIt, true); // Disconnect on old router - ++oldIt; - } - else if (*oldIt > *newIt) - { - obj.SendDirect(val.second, *newIt); // Connect on new router - ++newIt; - } - else - { - ++oldIt; - if (newIt != newRouters.end()) - ++newIt; - } + val.second.routers = newRouters; } - val.second.routers = newRouters; - } -private: - REMOTE_SCRIPT & obj; + private: + REMOTE_SCRIPT & obj; }; } // namespace RS - -#endif