![]() |
Crossfire Server, Trunk
1.75.0
|
#include "global.h"
#include <ctype.h>
#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 |
LocalMeta2Info basically holds all the non server metaserver2 information that we read from the metaserver2 file. More... | |
Functions | |
int | count_players () |
void | metaserver2_exit () |
Stop metaserver updates. More... | |
int | metaserver2_init (void) |
This initializes the metaserver2 logic - it reads the metaserver2 file, storing the values away. More... | |
void | metaserver2_thread () |
Repeatedly send updates to the metaserver, stopping when ms2_signal is acquired. More... | |
static void | metaserver2_updates (void) |
This sends an update to the various metaservers. More... | |
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. More... | |
Variables | |
static LocalMeta2Info | local_info |
Non volatile information on the server. More... | |
MetaServer2_UpdateInfo | metaserver2_updateinfo |
Statistics on players and such sent to the metaserver2. More... | |
static std::thread | metaserver_thread |
Metaserver thread, if notifications are enabled. More... | |
static std::vector< std::string > | metaservers |
Metaservers to send information to, list of hostnames. More... | |
static std::mutex | ms2_info_mutex |
Mutex to protect access to metaserver2_updateinfo. More... | |
static std::timed_mutex | ms2_signal |
Mutex to signal the thread should stop. More... | |
int count_players | ( | ) |
Definition at line 48 of file metaserver.cpp.
References first_player, FLAG_AFK, FLAG_WIZ, player::next, num_players, 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 492 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 331 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 310 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 266 of file metaserver.cpp.
References llevError, LOG(), and metaservers.
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 80 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, time, CS_Stats::time_start, and MetaServer2_UpdateInfo::uptime.
Referenced by do_specials().
|
static |
Non volatile information on the server.
Definition at line 132 of file metaserver.cpp.
Referenced by metaserver2_init().
MetaServer2_UpdateInfo metaserver2_updateinfo |
Statistics on players and such sent to the metaserver2.
Definition at line 138 of file metaserver.cpp.
Referenced by metaserver2_init(), and metaserver_update().
|
static |
Metaserver thread, if notifications are enabled.
Definition at line 135 of file metaserver.cpp.
Referenced by metaserver2_exit(), and metaserver2_init().
|
static |
Metaservers to send information to, list of hostnames.
Definition at line 109 of file metaserver.cpp.
Referenced by metaserver2_init(), and metaserver2_updates().
|
static |
Mutex to protect access to metaserver2_updateinfo.
Definition at line 44 of file metaserver.cpp.
Referenced by metaserver_update().
|
static |
Mutex to signal the thread should stop.
Definition at line 46 of file metaserver.cpp.
Referenced by metaserver2_exit(), metaserver2_init(), and metaserver2_thread().