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>
18 class udp_socket_stream;
19 class basic_socket_stream;
29 const int DATA_BUFFER_SIZE = 4096;
32 typedef std::list<ServerInfo> ServerList;
35 class Meta :
virtual public sigc::trackable,
36 public Atlas::Objects::ObjectsDecoder
59 Meta(
const std::string &msv,
unsigned int maxQueries);
109 sigc::signal<void, const std::string&>
Failure;
114 virtual void objectArrived(
const Atlas::Objects::Root& obj);
116 void doFailure(
const std::string &msg);
117 void queryFailure(
MetaQuery *q,
const std::string& msg);
135 void recvCmd(uint32_t op);
142 void listReq(
int offset = 0);
145 void setupRecvData(
int words, uint32_t got);
149 void internalQuery(
unsigned int index);
151 const std::string m_clientName;
155 const std::string m_metaHost;
157 typedef std::set<MetaQuery*> QuerySet;
158 QuerySet m_activeQueries;
160 unsigned int m_maxActiveQueries;
161 unsigned int m_nextQuery;
163 typedef std::vector<ServerInfo> ServerInfoArray;
164 ServerInfoArray m_gameServers,
168 udp_socket_stream* m_stream;
170 char _data[DATA_BUFFER_SIZE];
173 std::streamsize _bytesToRecv;
174 unsigned int _totalServers,
180 std::unique_ptr<Timeout> m_timeout;
Timeout
Definition: Timeout.h:12
This is the Eris base for all exceptions; note it inherits from std::except, which isn't ideal.
Definition: Exceptions.h:19
@ CONNECTING
stream / socket connection in progress
Definition: BaseConnection.h:51
Definition: LogStream.h:55
@ NEGOTIATE
Atlas negotiation in progress.
Definition: BaseConnection.h:50
@ TIMEOUT
server query timed out
Definition: ServerInfo.h:30
Information about a specific game server, retrieved via the Meta-server and anonymous GETs.
Definition: ServerInfo.h:21
Definition: LogStream.h:45