* Author : Maxim Mamontov <faust@stargazer.dp.ua>
*/
-/*
- $Revision: 1.3 $
- $Date: 2010/03/04 12:07:03 $
- $Author: faust $
-*/
-
#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>
+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, RS_USER> & val)
+ 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())
{
- //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