Crossfire Server, Trunk
|
#include "global.h"
#include <ctype.h>
#include <string>
#include <mutex>
#include <thread>
#include <system_error>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include "metaserver2.h"
#include "version.h"
Go to the source code of this file.
Data Structures | |
struct | LocalMeta2Info |
Functions | |
int | count_players () |
void | metaserver2_exit () |
int | metaserver2_init (void) |
void | metaserver2_thread () |
static void | metaserver2_updates (void) |
void | metaserver_update (void) |
Variables | |
static LocalMeta2Info | local_info |
MetaServer2_UpdateInfo | metaserver2_updateinfo |
static std::thread | metaserver_thread |
static std::vector< std::string > | metaservers |
static std::mutex | ms2_info_mutex |
static std::timed_mutex | ms2_signal |
int count_players | ( | ) |
Definition at line 49 of file metaserver.cpp.
References first_player, FLAG_AFK, FLAG_WIZ, altar_valkyrie::pl, QUERY_FLAG, ST_GET_PARTY_PASSWORD, and ST_PLAYING.
Referenced by check_shutdown(), and metaserver_update().
void metaserver2_exit | ( | ) |
Stop metaserver updates.
Definition at line 493 of file metaserver.cpp.
References metaserver_thread, and ms2_signal.
Referenced by cleanup().
int metaserver2_init | ( | void | ) |
This initializes the metaserver2 logic - it reads the metaserver2 file, storing the values away. Note that it may be possible/desirable for the server to re-read the values and restart connections (for example, a new metaserver has been added and you want to start updates to it immediately and not restart the server). Because of that, there is some extra logic (has_init) to try to take that into account.
Definition at line 332 of file metaserver.cpp.
References LocalMeta2Info::archbase, buf, LocalMeta2Info::codebase, Settings::confdir, Settings::csport, FALSE, LocalMeta2Info::flags, FREE_AND_CLEAR, LocalMeta2Info::hostname, LocalMeta2Info::html_comment, llevError, local_info, LOG(), LocalMeta2Info::mapbase, MAX_BUF, metaserver2_thread(), metaserver2_updateinfo, metaserver_thread, metaservers, ms2_signal, LocalMeta2Info::notification, LocalMeta2Info::portnumber, settings, strcasecmp(), strdup_local, LocalMeta2Info::text_comment, and TRUE.
Referenced by init().
void metaserver2_thread | ( | ) |
Repeatedly send updates to the metaserver, stopping when ms2_signal is acquired. Works in the background.
Definition at line 311 of file metaserver.cpp.
References metaserver2_updates(), ms2_signal, and seconds().
Referenced by metaserver2_init().
|
static |
This sends an update to the various metaservers. It generates the form, and then sends it to the server
Definition at line 267 of file metaserver.cpp.
References llevError, LOG(), metaservers, and altar_valkyrie::res.
Referenced by metaserver2_thread().
void metaserver_update | ( | void | ) |
Updates our info in the metaserver Note that this is used for both metaserver1 and metaserver2 - for metaserver2, it just copies dynamic data into private data structure, doing locking in the process.
Definition at line 81 of file metaserver.cpp.
References count_players(), cst_tot, CS_Stats::ibytes, MetaServer2_UpdateInfo::in_bytes, metaserver2_updateinfo, ms2_info_mutex, MetaServer2_UpdateInfo::num_players, CS_Stats::obytes, MetaServer2_UpdateInfo::out_bytes, CS_Stats::time_start, and MetaServer2_UpdateInfo::uptime.
Referenced by do_specials().
|
static |
Non volatile information on the server.
Definition at line 133 of file metaserver.cpp.
Referenced by metaserver2_init().
MetaServer2_UpdateInfo metaserver2_updateinfo |
Statistics on players and such sent to the metaserver2.
Definition at line 139 of file metaserver.cpp.
Referenced by metaserver2_init(), and metaserver_update().
|
static |
Metaserver thread, if notifications are enabled.
Definition at line 136 of file metaserver.cpp.
Referenced by metaserver2_exit(), and metaserver2_init().
|
static |
Metaservers to send information to, list of hostnames.
Definition at line 110 of file metaserver.cpp.
Referenced by metaserver2_init(), and metaserver2_updates().
|
static |
Mutex to protect access to metaserver2_updateinfo.
Definition at line 45 of file metaserver.cpp.
Referenced by metaserver_update().
|
static |
Mutex to signal the thread should stop.
Definition at line 47 of file metaserver.cpp.
Referenced by metaserver2_exit(), metaserver2_init(), and metaserver2_thread().