X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/1f6214607a4f2b727484a4ae9e9411044dae8051..08dd72f2d8d3d7766e4fa87f01840c3ed8211091:/projects/stargazer/plugins/other/rscript/ur_functor.h?ds=sidebyside diff --git a/projects/stargazer/plugins/other/rscript/ur_functor.h b/projects/stargazer/plugins/other/rscript/ur_functor.h index b3a5cdac..95b03ea2 100644 --- a/projects/stargazer/plugins/other/rscript/ur_functor.h +++ b/projects/stargazer/plugins/other/rscript/ur_functor.h @@ -18,33 +18,30 @@ * Author : Maxim Mamontov */ -/* - $Revision: 1.3 $ - $Date: 2010/03/04 12:07:03 $ - $Author: faust $ -*/ - #ifndef __UR_FUNCTOR_H__ #define __UR_FUNCTOR_H__ +#include "rscript.h" + +#include "stg/common.h" + #include #include #include +#include -#include "stg/os_int.h" -#include "stg/common.h" - -#include "rscript.h" +namespace RS +{ -class UpdateRouter : public std::unary_function, void> +class UpdateRouter : public std::unary_function, void> { public: - UpdateRouter(REMOTE_SCRIPT & t) - : obj(t) {}; + explicit UpdateRouter(REMOTE_SCRIPT & t) + : obj(t) {} - void operator() (std::pair & val) + void operator() (std::pair & val) { - std::vector newRouters = obj.IP2Routers(val.first); + 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; @@ -55,47 +52,38 @@ 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()) { - //if (oldIt != newRouters.end()) - //{ // Already checked it - obj.SendDirect(val.first, val.second, *oldIt, true); // Disconnect on old router - ++oldIt; - //} - } + 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; } } val.second.routers = newRouters; - /*if (val.second.souters != newRouters) - { - obj.Send(val.first, val.second, true); // Disconnect on old router - val.second.routerIP = obj.IP2Router(val.first); // Change router - val.second.shortPacketsCount = 0; // Reset packets count (to prevent alive send) - obj.Send(val.first, val.second); // Connect on new router - }*/ } private: REMOTE_SCRIPT & obj; }; +} // namespace RS + #endif