about summary refs log tree commit diff
path: root/masterserver/include/serverinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'masterserver/include/serverinfo.h')
-rw-r--r--masterserver/include/serverinfo.h69
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