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/serverinfo.h | |
| download | zcatch-73aa9b71c1d8b5c5065d1e474f13601da3ca6b20.tar.gz zcatch-73aa9b71c1d8b5c5065d1e474f13601da3ca6b20.zip | |
started the major restructure of svn
Diffstat (limited to 'masterserver/include/serverinfo.h')
| -rw-r--r-- | masterserver/include/serverinfo.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/masterserver/include/serverinfo.h b/masterserver/include/serverinfo.h new file mode 100644 index 00000000..c63e11ba --- /dev/null +++ b/masterserver/include/serverinfo.h @@ -0,0 +1,69 @@ +#ifndef _SERVERINFO_H +#define _SERVERINFO_H + +#include <baselib/network.h> + +#include "common.h" +#include "network.h" + +class CServerInfo +{ + int32 m_Version; + int32 m_IP; + int32 m_Port; + int32 m_Players; + int32 m_MaxPlayers; + char m_Name[128]; + char m_Map[64]; + + int m_LastRefresh; + +public: + int32 IP() const { return m_IP; } + int32 Port() const { return m_Port; } + int32 Players() const { return m_Players; } + int32 MaxPlayers() const { return m_MaxPlayers; }; + const char *Name() const { return m_Name; } + const char *Map() const { return m_Map; } + + void Refresh(int time) { m_LastRefresh = time; } + int LastRefresh() { return m_LastRefresh; } + + void SetAddress(baselib::netaddr4 *addr) + { + m_IP = addr->ip[0] << 24; + m_IP |= addr->ip[1] << 16; + m_IP |= addr->ip[2] << 8; + m_IP |= addr->ip[3]; + + m_Port = addr->port; + } + + char *Serialize(char *buffer) const + { + buffer = WriteInt32(buffer, m_Version); + buffer = WriteInt32(buffer, m_IP); + buffer = WriteInt32(buffer, m_Port); + buffer = WriteInt32(buffer, m_Players); + buffer = WriteInt32(buffer, m_MaxPlayers); + buffer = WriteFixedString(buffer, m_Name, sizeof(m_Name)); + buffer = WriteFixedString(buffer, m_Map, sizeof(m_Map)); + + return buffer; + } + + char *Deserialize(char *buffer) + { + buffer = ReadInt32(buffer, &m_Version); + buffer = ReadInt32(buffer, &m_IP); + buffer = ReadInt32(buffer, &m_Port); + buffer = ReadInt32(buffer, &m_Players); + buffer = ReadInt32(buffer, &m_MaxPlayers); + buffer = ReadFixedString(buffer, m_Name, sizeof(m_Name)); + buffer = ReadFixedString(buffer, m_Map, sizeof(m_Map)); + + return buffer; + } +}; + +#endif |