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);
88 MetaStatus getStatus()
const {
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;
Information about a specific game server, retrieved via the Meta-server and anonymous GETs...
Definition: ServerInfo.h:21
Definition: Account.cpp:33