`
suiyuan0808
  • 浏览: 154435 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

c++游戏服务端中使用configurator读取配置文件信息

    博客分类:
  • c++
 
阅读更多

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;
}

0
0
分享到:
评论

相关推荐

    2023 C#读取.nc文件

    标题 "2023 C#读取.nc文件" 指的是使用C#编程语言处理.NET框架中的.nc(NetCDF)文件。NetCDF是网络 Common Data Form的缩写,是一种用于存储多维科学数据的标准格式,常用于气象、海洋学、地球物理学等领域。这种...

    声卡配置工具 Clover Configurator

    声卡配置工具 Clover Configurator声卡配置工具 Clover Configurator声卡配置工具 Clover Configurator声卡配置工具 Clover Configurator声卡配置工具 Clover Configurator声卡配置工具 Clover Configurator声卡配置...

    汽车编程-德国Vector DaVinci Configurator Pro AUTOSAR标准的软件配置工具软件.docx

    汽车编程-德国Vector DaVinci Configurator Pro AUTOSAR标准的软件配置工具软件 在汽车电子领域,AUTOSAR(Automotive Open System Architecture)是德国开发的一种开源的汽车软件架构标准。它旨在提供一个通用的、...

    ABB机器人配网软件:PROFINET Configurator V1.31.38

    GSD文件是PROFINET设备制造商提供的描述设备功能和接口的信息文件,包含了设备的通信参数、输入/输出定义等信息。通过导入GSD文件,用户可以将各种不同厂商的外设集成到ABB机器人的PROFINET网络中,实现了设备的标准...

    Configurator:配置器

    2. **配置加载**:Configurator会读取这些参数并应用到你的应用程序中。它可以动态加载配置,无需每次都重启服务。 3. **监控与更新**:在运行时,Configurator可能还提供监控和动态更新配置的功能,使得开发者能够...

    FR Configurator SW3中文说明书

    根据所提供的文件信息,以下是关于《FR Configurator SW3中文说明书》和三菱变频器通讯控制软件的知识点梳理: 1. 标题和产品概述: 《FR Configurator SW3中文说明书》是一份针对三菱变频器通讯控制软件的中文使用...

    DaVinci MCAL Configurator配置ARXML(瑞萨RH850)

    在这样的背景下,DaVinci MCAL Configurator作为一款强大的配置工具,为开发者提供了高效配置ARXML文件的能力,从而简化了瑞萨RH850平台上的软件开发流程。 ARXML,全称AUTOSAR XML,是一种用于存储AUTOSAR系统信息...

    INAV-Configurator_win64_2.1.4.zip

    在压缩包内的"INAV Configurator"很可能是程序的主执行文件或安装程序,用户解压后运行此文件即可开始使用配置器。使用过程中,用户应首先连接飞行控制器到电脑,然后通过软件读取和修改固件参数。INAV Configurator...

    三菱伺服调试软件 MR Configurator2

    MR Configurator伺服调试软件(MRZJW3-SETUP221)是三菱最新MR-J3伺服的调试软件,安装此软件后,用户可以方便地使用个人电脑进行伺服的设置、调谐、监控显示、参数的读写、试运行等操作。 该软件的特征有以下几点...

    MR Configurator軟體操作手冊

    根据提供的信息,我们可以总结出以下关于“MR Configurator软件操作手册”的相关知识点: ### 一、软件概述 **标题:** "MR Configurator软件操作手册" **描述:** "MR Configurator软件操作手册" 该软件名为...

    Clover Configurator 四叶草配置工具

    1. **配置四叶草设置**:用户可以通过Clover Configurator调整和优化四叶草的配置文件(config.plist),以适应不同的硬件环境和个性化需求。这涵盖了启动选项、驱动程序加载、硬件检测等众多方面。 2. **驱动程序...

    Davinci Configurator

    即使提供引用目标的BSW模块不在同一EcuC配置文件中,为了生成引用用户的配置,这个引用仍然必不可少,比如EcuM与MCU之间的引用。 接下来,我们将逐步展示如何利用DaVinci Configurator处理这种跨项目引用的情况。 ...

    Apple Configurator 2.zip

    2. **设备绑定**:通过配置描述文件,Apple Configurator 2允许用户将设备与特定的用户或组织绑定,确保设备只能在特定环境下使用。 3. **固件更新**:能够直接在Apple Configurator 2中为连接的设备安装最新的系统...

    开源项目-illyabusigin-configurator.zip

    要在项目中使用`illyabusigin-configurator`,首先需要引入依赖: ```go import "github.com/illyabusigin/configurator" ``` 然后定义你的配置结构体,接着加载配置文件: ```go var appConfig AppConfig ...

    PROFINET配置文件

    7. **配置文件导出**:完成配置后,使用GX Configurator-PN将配置导出为XML或GWP4000格式的文件,然后导入到三菱的PLC编程软件如GX Developer中,以下载到RJ71PN93模块。 8. **故障排查**:如果在配置过程中遇到...

    simulator OPC Server Configurator

    通过使用 "Simulator OPC Server Configurator",工程师可以在不依赖实际硬件设备的情况下进行OPC相关的开发和测试工作,大大提高了效率,减少了在生产环境中可能出现的问题。这个工具对于自动化和工业4.0领域的从业...

    Davinci Configurator doip配置

    本文将详细讲解如何配置Davinci Configurator中的DOIP设置,以实现有效的车辆诊断和数据传输。 首先,配置DOIP概要涉及到几个关键模块的添加和设置: 1. **添加DOIP模块**: - **DoIPChannel**:这是DOIP通道配置...

    Clover Configurator.zip

    2. **配置文件编辑**:Clover Configurator允许用户直接编辑Clover的配置文件(如config.plist),以适应不同的硬件配置。这对于解决硬件兼容性问题、优化启动性能以及启用额外功能至关重要。 3. **驱动加载**:...

    黑果OC引导配置工具OpenCore Configurator.app_v2.6.0.0

    使用OpenCore Configurator.app_v2.6.0.0,用户可以在黑果环境中更加轻松地实现OpenCore的配置,提升安装MacOS的效率,同时减少由于配置错误导致的启动问题。这款工具对于想要尝试搭建Hackintosh系统的用户来说,是...

Global site tag (gtag.js) - Google Analytics