c++游戏服务端中使用configurator读取配置文件信息
写游戏服务端时候我们通常都需要动态配置一下服务器信息,如数据库连结信息,游戏逻辑Socket信息,线程池大小等等。我们都写在一个配置文件在游戏服务器启动时候,读取该文件进行相应配置。有人喜欢用.ini方式配置文件,对于c++我更喜欢用Configurator框架读取。所以我先写一个配置文件game.conf:
//数据库连接信息
DbName : xxxGameDb
DbHost : 192.168.0.183
DbPort : 3306
DbUser : xxxGame
DbPassword : xxxGame
//游戏服务器ip端口信息
<Server>
REMOTE_HOST : 192.168.0.100
REMOTE_PORT : 443
BDPOOL_CONNECTION_COUNT: 10
TASK_START_DETAL: 5000
StorePath : /game/path/log
ReconnectPeriod : 10
</Server>
#include <configurator/configurator.hpp>
#include <iostream>
//注册需要读取的配置项,即读该配置项信息,如果没有配置则使用default_value来配置
void register_options( cf::single_configurator& configurator ) {
configurator.add_option( "DbName" );
configurator.add_option( "DbHost" );
configurator.add_option( "DbPort" );
configurator.add_option( "DbUser" );
configurator.add_option( "DbPassword" );
configurator.in_section( "Server" );
configurator.add_option_here( "REMOTE_HOST" ) .default_value( "127.0.0.1" ) .check_semanti( cf::ip )
;
configurator.add_option_here( " REMOTE_PORT" ) .default_value( 443) ;
configurator.add_option_here( "StorePath" )
.check_semantic( cf::path );
configurator.add_option_here( "ReconnectPeriod" )
.necessary();
}
void view_options_values( cf::single_configurator& configurator ) {
std::string name;
std::string host;
unsigned int port = 0;
std::string user;
std::string password;
configurator.get_value( "DbName", name )
.get_value( "DbHost", host )
.get_value( "DbPort", port )
.get_value( "DbUser", user )
.get_value( "DbPassword", password )
;
std::cout << "db name: " << name << std::endl;
std::cout << "db host: " << host << std::endl;
std::cout << "db port: " << port << std::endl;
std::cout << "db user: " << user << std::endl;
std::cout << "db password: " << password << std::endl;
configurator.from_section( "Server" );
std::string serv_host = configurator.get_value_from_here( "Host" );
unsigned int serv_port = configurator.get_value_from_here< unsigned int >( "Port" );
std::string admin_email = configurator.get_value_from_here( "Administrator" );
std::string store_path = configurator.get_value_from_here( "StorePath" );
size_t period = configurator.get_value_from_here< size_t >( "ReconnectPeriod" );
std::cout << "From Server: " << std::endl;
std::cout << " serv_host: " << serv_host << std::endl;
std::cout << " serv_port: " << serv_port << std::endl;
std::cout << " store_path: " << store_path << std::endl;
std::cout << " period: " << period << std::endl;
}
int main( int argc, char* argv[] )
{
//初始化配置信息configurator
try {
//很明显这里是一个单例模式
cf::single_configurator& configurator = cf::single_configurator::inst();
configurator.set_name_value_separator( ':' );
configurator.set_case_sensitivity_for_names();
register_options( configurator );
configurator.parse( "/some/path/to/game.conf" ); // 我们的配置信息在这里
view_options_values( configurator );//测试一下我们读取到配置信息
} catch ( const std::exception& exc ) {
std::cerr << exc.what() << std::endl;
}
return 0;
}
分享到:
相关推荐
标题 "2023 C#读取.nc文件" 指的是使用C#编程语言处理.NET框架中的.nc(NetCDF)文件。NetCDF是网络 Common Data Form的缩写,是一种用于存储多维科学数据的标准格式,常用于气象、海洋学、地球物理学等领域。这种...
声卡配置工具 Clover Configurator声卡配置工具 Clover Configurator声卡配置工具 Clover Configurator声卡配置工具 Clover Configurator声卡配置工具 Clover Configurator声卡配置工具 Clover Configurator声卡配置...
汽车编程-德国Vector DaVinci Configurator Pro AUTOSAR标准的软件配置工具软件 在汽车电子领域,AUTOSAR(Automotive Open System Architecture)是德国开发的一种开源的汽车软件架构标准。它旨在提供一个通用的、...
GSD文件是PROFINET设备制造商提供的描述设备功能和接口的信息文件,包含了设备的通信参数、输入/输出定义等信息。通过导入GSD文件,用户可以将各种不同厂商的外设集成到ABB机器人的PROFINET网络中,实现了设备的标准...
2. **配置加载**:Configurator会读取这些参数并应用到你的应用程序中。它可以动态加载配置,无需每次都重启服务。 3. **监控与更新**:在运行时,Configurator可能还提供监控和动态更新配置的功能,使得开发者能够...
根据所提供的文件信息,以下是关于《FR Configurator SW3中文说明书》和三菱变频器通讯控制软件的知识点梳理: 1. 标题和产品概述: 《FR Configurator SW3中文说明书》是一份针对三菱变频器通讯控制软件的中文使用...
在这样的背景下,DaVinci MCAL Configurator作为一款强大的配置工具,为开发者提供了高效配置ARXML文件的能力,从而简化了瑞萨RH850平台上的软件开发流程。 ARXML,全称AUTOSAR XML,是一种用于存储AUTOSAR系统信息...
在压缩包内的"INAV Configurator"很可能是程序的主执行文件或安装程序,用户解压后运行此文件即可开始使用配置器。使用过程中,用户应首先连接飞行控制器到电脑,然后通过软件读取和修改固件参数。INAV Configurator...
MR Configurator伺服调试软件(MRZJW3-SETUP221)是三菱最新MR-J3伺服的调试软件,安装此软件后,用户可以方便地使用个人电脑进行伺服的设置、调谐、监控显示、参数的读写、试运行等操作。 该软件的特征有以下几点...
根据提供的信息,我们可以总结出以下关于“MR Configurator软件操作手册”的相关知识点: ### 一、软件概述 **标题:** "MR Configurator软件操作手册" **描述:** "MR Configurator软件操作手册" 该软件名为...
1. **配置四叶草设置**:用户可以通过Clover Configurator调整和优化四叶草的配置文件(config.plist),以适应不同的硬件环境和个性化需求。这涵盖了启动选项、驱动程序加载、硬件检测等众多方面。 2. **驱动程序...
即使提供引用目标的BSW模块不在同一EcuC配置文件中,为了生成引用用户的配置,这个引用仍然必不可少,比如EcuM与MCU之间的引用。 接下来,我们将逐步展示如何利用DaVinci Configurator处理这种跨项目引用的情况。 ...
2. **设备绑定**:通过配置描述文件,Apple Configurator 2允许用户将设备与特定的用户或组织绑定,确保设备只能在特定环境下使用。 3. **固件更新**:能够直接在Apple Configurator 2中为连接的设备安装最新的系统...
要在项目中使用`illyabusigin-configurator`,首先需要引入依赖: ```go import "github.com/illyabusigin/configurator" ``` 然后定义你的配置结构体,接着加载配置文件: ```go var appConfig AppConfig ...
7. **配置文件导出**:完成配置后,使用GX Configurator-PN将配置导出为XML或GWP4000格式的文件,然后导入到三菱的PLC编程软件如GX Developer中,以下载到RJ71PN93模块。 8. **故障排查**:如果在配置过程中遇到...
通过使用 "Simulator OPC Server Configurator",工程师可以在不依赖实际硬件设备的情况下进行OPC相关的开发和测试工作,大大提高了效率,减少了在生产环境中可能出现的问题。这个工具对于自动化和工业4.0领域的从业...
本文将详细讲解如何配置Davinci Configurator中的DOIP设置,以实现有效的车辆诊断和数据传输。 首先,配置DOIP概要涉及到几个关键模块的添加和设置: 1. **添加DOIP模块**: - **DoIPChannel**:这是DOIP通道配置...
2. **配置文件编辑**:Clover Configurator允许用户直接编辑Clover的配置文件(如config.plist),以适应不同的硬件配置。这对于解决硬件兼容性问题、优化启动性能以及启用额外功能至关重要。 3. **驱动加载**:...
使用OpenCore Configurator.app_v2.6.0.0,用户可以在黑果环境中更加轻松地实现OpenCore的配置,提升安装MacOS的效率,同时减少由于配置错误导致的启动问题。这款工具对于想要尝试搭建Hackintosh系统的用户来说,是...