3 #ifndef ERIS_METASERVER_H
4 #define ERIS_METASERVER_H
6 #include <Eris/Types.h>
7 #include <Eris/ServerInfo.h>
9 #include <Atlas/Objects/Decoder.h>
11 #include <sigc++/trackable.h>
12 #include <sigc++/signal.h>
23 typedef unsigned char uint8_t;
24 typedef unsigned short uint16_t;
25 typedef unsigned int uint32_t;
32 class udp_socket_stream;
33 class basic_socket_stream;
48 typedef unsigned int uint32_t;
54 typedef Uint32 uint32_t;
58 const int DATA_BUFFER_SIZE = 4096;
61 typedef std::list<ServerInfo> ServerList;
64 class Meta :
virtual public sigc::trackable,
65 public Atlas::Objects::ObjectsDecoder
88 Meta(
const std::string &msv,
unsigned int maxQueries);
138 sigc::signal<void, const std::string&>
Failure;
143 virtual void objectArrived(
const Atlas::Objects::Root& obj);
145 void doFailure(
const std::string &msg);
146 void queryFailure(
MetaQuery *q,
const std::string& msg);
164 void recvCmd(uint32_t op);
171 void listReq(
int offset = 0);
174 void setupRecvData(
int words, uint32_t got);
178 void internalQuery(
unsigned int index);
180 const std::string m_clientName;
184 const std::string m_metaHost;
186 typedef std::set<MetaQuery*> QuerySet;
187 QuerySet m_activeQueries;
189 unsigned int m_maxActiveQueries;
190 unsigned int m_nextQuery;
192 typedef std::vector<ServerInfo> ServerInfoArray;
193 ServerInfoArray m_gameServers,
197 udp_socket_stream* m_stream;
199 char _data[DATA_BUFFER_SIZE];
202 std::streamsize _bytesToRecv;
203 unsigned int _totalServers,
209 std::auto_ptr<Timeout> m_timeout;
Information about a specific game server, retrieved via the Meta-server and anonymous GETs...
Definition: ServerInfo.h:21