diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-05-22 15:03:32 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-05-22 15:03:32 +0000 |
| commit | 73aa9b71c1d8b5c5065d1e474f13601da3ca6b20 (patch) | |
| tree | 88b6a0a4a2ebdd33a88f4a25682581d329d33f6b /masterserver/include/masterserver.h | |
| download | zcatch-73aa9b71c1d8b5c5065d1e474f13601da3ca6b20.tar.gz zcatch-73aa9b71c1d8b5c5065d1e474f13601da3ca6b20.zip | |
started the major restructure of svn
Diffstat (limited to 'masterserver/include/masterserver.h')
| -rw-r--r-- | masterserver/include/masterserver.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/masterserver/include/masterserver.h b/masterserver/include/masterserver.h new file mode 100644 index 00000000..7e042aaa --- /dev/null +++ b/masterserver/include/masterserver.h @@ -0,0 +1,48 @@ +#ifndef _MASTERSERVER_H +#define _MASTERSERVER_H + +#include <baselib/network.h> +#include "serverinfo.h" + +using namespace baselib; + +#define HEARTBEAT_SIZE 216 +#define HEARTBEAT_SIGNATURE 'TWHB' +#define HEARTBEAT_LIFETIME 10 +#define MAXSERVERS 1024 +#define SERVERINFOOUT_SIZE 212 +#define SERVERINFOHEADER_SIZE 12 +#define MASTERSERVER_VERSION 0 + +class CMasterServer +{ + CServerInfo m_Servers[MAXSERVERS]; + int m_ServerCount; + socket_udp4 m_UDPSocket; + socket_tcp4 m_TCPSocket; + int m_CurrentTime; + char m_ServerListPacket[MAXSERVERS * SERVERINFOOUT_SIZE + SERVERINFOHEADER_SIZE]; + int m_ServerListPacketSize; + bool m_ServerListPacketIsOld; + + void ListenForServerListPolls(); + void BuildServerListPacket(); + void ListenForHeartBeats(); + void ProcessHeartBeat(CServerInfo info); + CServerInfo *FindServerInfo(int32 ip, int32 port); + CServerInfo *GetUnusedSlot(); + void CleanUpServerList(); +public: + CMasterServer() + { + m_ServerCount = 0; + m_ServerListPacketIsOld = true; + } + + void Init(int port); + void Shutdown(); + + void Tick(); +}; + +#endif |