Files
SRB2Kart-Saturn/src/mserv.h
T
Alug 0985229077 refactor i_thread stuff
based on https://codeberg.org/srb2classic/srb2classic/commit/3670a7c1c193185cf4921de8955c96e63fbecc62
and other things from srb2classic
this also now allows to check if a thread failed to spawn and reduces duped stuff and such
2026-02-02 16:54:40 +01:00

111 lines
2.6 KiB
C

// SONIC ROBO BLAST 2
//-----------------------------------------------------------------------------
// Copyright (C) 1998-2000 by DooM Legacy Team.
// Copyright (C) 1999-2018 by Sonic Team Junior.
// Copyright (C) 2020 by James R.
//
// This program is free software distributed under the
// terms of the GNU General Public License, version 2.
// See the 'LICENSE' file for more details.
//-----------------------------------------------------------------------------
/// \file mserv.h
/// \brief Header file for the master server routines
#ifndef _MSERV_H_
#define _MSERV_H_
#include "i_threads.h"
typedef union
{
char buffer[16]; // information such as password
UINT32 signature;
} ATTRPACK msg_header_t;
// Keep this structure 8 bytes aligned (current size is 80)
typedef struct
{
msg_header_t header;
#ifndef HAVE_IPV6
char ip[16];
#else
char ip[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"];
#endif
char port[8];
char contact[32];
char version[8]; // format is: x.yy.z (like 1.30.2 or 1.31)
} ATTRPACK msg_server_t;
typedef struct
{
msg_header_t header;
char ipstart[16];
char ipend[16];
char endstamp[32];
char reason[255];
INT32 hostonly;
} ATTRPACK msg_ban_t;
// ================================ GLOBALS ===============================
#ifdef MASTERSERVER
extern consvar_t cv_masterserver;
#endif
extern consvar_t cv_servername;
extern consvar_t cv_server_contact;
#ifdef MASTERSERVER
extern consvar_t cv_masterserver_update_rate;
extern consvar_t cv_masterserver_timeout;
extern consvar_t cv_masterserver_debug;
extern consvar_t cv_masterserver_token;
extern consvar_t cv_advertise;
extern consvar_t cv_masterserver_nagattempts;
#endif
#ifdef HOLEPUNCH
extern consvar_t cv_rendezvousserver;
#endif
#ifdef HAVE_THREADS
extern int ms_QueryId;
extern I_Mutex ms_QueryId_mutex;
extern msg_server_t *ms_ServerList;
extern I_Mutex ms_ServerList_mutex;
#endif
#ifdef MASTERSERVER
void RegisterServer(void);
void UnregisterServer(void);
void Get_rules(void);
void MasterClient_Ticker(void);
msg_server_t *GetShortServersList(int id);
#ifdef UPDATE_ALERT
char *GetMODVersion(int id);
#endif
char *GetMasterServerRules(void);
void Update_MS(void);
#endif
void AddMServCommands(void);
#ifdef MASTERSERVER
/* HTTP */
void HMS_set_api (char *api);
int HMS_register (void);
int HMS_unlist (void);
int HMS_update (void);
void HMS_list_servers (void);
msg_server_t * HMS_fetch_servers (msg_server_t *list, int id);
int HMS_compare_mod_version (char *buffer, size_t size_of_buffer);
const char * HMS_fetch_rules (char *buffer, size_t size_of_buffer);
#endif
#endif