1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
// Cyphesis Online RPG Server and AI Engine
// Copyright (C) 2001-2004 Alistair Riddoch
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software Foundation,
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#ifndef COMMON_GLOBALS_H
#define COMMON_GLOBALS_H
#include <string>
namespace varconf {
class Config;
}
extern const char * CYPHESIS;
extern const char * SLAVE;
extern varconf::Config * global_conf;
extern std::string instance;
extern std::string share_directory;
extern std::string etc_directory;
extern std::string var_directory;
extern std::string ruleset_name;
extern std::string server_uuid;
extern std::string server_key;
/// @brief Controls "hard" shutdowns
///
/// When this is set to true, the server will exit. It will try to
/// persist entity data to disk, but won't try to get any data from
/// external clients (in contrast to "exit_flag_soft").
extern bool exit_flag;
/// @brief Controls "soft" shutdowns
///
/// When this is set to true, the server will try to perform a "soft"
/// shutdown where it first spends a couple of seconds trying to get
/// data for persistence from external clients. Once that's done,
/// the exit_flag will be set to true, and the server will exit.
extern bool exit_flag_soft;
/// @brief Controls whether "soft" shutdowns are enabled.
///
/// When this is set to true, the server will try to perform a "soft"
/// shutdown when certain signals are received.
/// This is off by default.
extern bool exit_soft_enabled;
extern bool daemon_flag;
extern bool database_flag;
extern int timeoffset;
extern int dynamic_port_start;
extern int dynamic_port_end;
static const int CONFIG_OKAY = 0;
static const int CONFIG_ERROR = -1;
static const int CONFIG_HELP = -2;
static const int CONFIG_VERSION = -3;
static const int USAGE_SERVER = 1 << 0;
static const int USAGE_CLIENT = 1 << 1;
static const int USAGE_CYCMD = 1 << 2;
static const int USAGE_DBASE = 1 << 3;
static const int USAGE_CYPYTHON = 1 << 4;
static const unsigned int SPM = 20; // seconds per minute
static const unsigned int MPH = 60; // minutes per hour
static const unsigned int HPD = 24; // hours per day
static const unsigned int DPM = 28; // days per month
static const unsigned int MPY = 12; // months per year
/// Database setup all ok
static const int DATABASE_OKAY = 0;
/// Database connection error
static const int DATABASE_CONERR = -1;
/// Database table creation error
static const int DATABASE_TABERR = -2;
#define INT_OPTION(_var, _val, _section, _setting, _help) \
int _var = _val; \
int_config_register _var ## _register(_var, _section, _setting, _help);
#define BOOL_OPTION(_var, _val, _section, _setting, _help) \
bool _var = _val; \
bool_config_register _var ## _register(_var, _section, _setting, _help);
#define STRING_OPTION(_var, _val, _section, _setting, _help) \
std::string _var = _val; \
string_config_register _var ## _register(_var, _section, _setting, _help);
#define UNIXSOCK_OPTION(_var, _val, _section, _setting, _help, _format) \
std::string _var = _val; \
unixsock_config_register _var ## _register(_var, _section, _setting, _help, _format);
/// \brief Object to register an integer varconf option on construction
class int_config_register {
public:
int_config_register(int &, const char *, const char *, const char *);
};
/// \brief Object to register a bool varconf option on construction
class bool_config_register {
public:
bool_config_register(bool &, const char *, const char *, const char *);
};
/// \brief Object to register a string varconf option on construction
class string_config_register {
public:
string_config_register(std::string &, const char *, const char *, const char *);
};
/// \brief Object to register a socket varconf option on construction
class unixsock_config_register {
public:
unixsock_config_register(std::string &, const char *, const char *, const char *, const char *);
};
template <typename T>
int readConfigItem(const std::string & section, const std::string & key,
T & storage);
int loadConfig(int argc, char ** argv, int usage = USAGE_CLIENT);
void reportVersion(const char * prgname);
void showUsage(const char * prgname, int usage_flags, const char * extras = 0);
void updateUserConfiguration();
#endif // COMMON_GLOBALS_H
|