+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/*
+ * Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
+ * Author : Maxim Mamontov <faust@stargazer.dp.ua>
+ */
+
#ifndef RS_PACKETSH
#define RS_PACKETSH
#include "os_int.h"
-struct RS_PACKET_HEADER
+namespace RS
+{
+
+struct PACKET_HEADER
{
int8_t magic[RS_MAGIC_LEN];
int8_t protoVer[RS_PROTO_VER_LEN];
int8_t padding[7];
} __attribute__((__packed__)); // 48 bytes, 6 blocks
-struct RS_PACKET_TAIL
+struct PACKET_TAIL
{
int8_t magic[RS_MAGIC_LEN];
int8_t params[RS_PARAMS_LEN];
int8_t padding[7];
} __attribute__((__packed__)); // 992 bytes, 124 blocks
+} // namespace RS
+
#endif
struct iovec iov[2];
char buffer[RS_MAX_PACKET_LEN];
-RS_PACKET_HEADER packetHead;
+RS::PACKET_HEADER packetHead;
iov[0].iov_base = reinterpret_cast<char *>(&packetHead);
iov[0].iov_len = sizeof(packetHead);
//-----------------------------------------------------------------------------
bool LISTENER::GetParams(char * buffer, UserData & data)
{
-RS_PACKET_TAIL packetTail;
+RS::PACKET_TAIL packetTail;
Decrypt(&ctxS, (char *)&packetTail, buffer, sizeof(packetTail) / 8);
return true;
}
-std::stringstream params;
+std::ostringstream params;
params << "\"" << data.login << "\" "
<< inet_ntostring(data.ip) << " "
<< data.id << " "
return false;
}
//-----------------------------------------------------------------------------
-bool LISTENER::CheckHeader(const RS_PACKET_HEADER & header) const
+bool LISTENER::CheckHeader(const RS::PACKET_HEADER & header) const
{
if (strncmp((char *)header.magic, RS_ID, RS_MAGIC_LEN))
{
bool FinalizeNet();
bool RecvPacket();
// Parsing stuff
- bool CheckHeader(const RS_PACKET_HEADER & header) const;
+ bool CheckHeader(const RS::PACKET_HEADER & header) const;
bool GetParams(char * buffer, UserData & data);
// Processing stuff
void ProcessPending();
* 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 "rscript.h"
-class UpdateRouter : public std::unary_function<std::pair<const uint32_t, RS_USER>, void>
+namespace RS
+{
+
+class UpdateRouter : public std::unary_function<std::pair<const uint32_t, RS::USER>, void>
{
public:
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>::const_iterator oldIt(val.second.routers.begin());
}
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.first, val.second, *oldIt, true); // Disconnect on old router
+ ++oldIt;
}
else if (*oldIt < *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