#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
{
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;
{
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;
}