EOS 源代码解读 插件-set_program_options

Posted thefist11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EOS 源代码解读 插件-set_program_options相关的知识,希望对你有一定的参考价值。

class application_impl 
   public:
      application_impl():_app_options("Application Options")
      
      options_description     _app_options;//存储命令行和config.ini文件的参数
      options_description     _cfg_options;//存储config.ini文件的参数


void application::set_program_options()

   for(auto& plug : plugins) 
      boost::program_options::options_description plugin_cli_opts("Command Line Options for " + plug.second->name());
      boost::program_options::options_description plugin_cfg_opts("Config Options for " + plug.second->name());
      plug.second->set_program_options(plugin_cli_opts, plugin_cfg_opts);
      if(plugin_cfg_opts.options().size()) 
         my->_app_options.add(plugin_cfg_opts);
         my->_cfg_options.add(plugin_cfg_opts);
      
      if(plugin_cli_opts.options().size())
         my->_app_options.add(plugin_cli_opts);
   

   options_description app_cfg_opts( "Application Config Options" );
   options_description app_cli_opts( "Application Command Line Options" );
   app_cfg_opts.add_options()
         ("plugin", bpo::value< vector<string> >()->composing(), "Plugin(s) to enable, may be specified multiple times");

   app_cli_opts.add_options()
         ("help,h", "Print this help message and exit.")
         ("version,v", "Print version information.")
         ("full-version", "Print full version information.")
         ("print-default-config", "Print default configuration template")
         ("data-dir,d", bpo::value<std::string>(), "Directory containing program runtime data")
         ("config-dir", bpo::value<std::string>(), "Directory containing configuration files such as config.ini")
         ("config,c", bpo::value<std::string>()->default_value( "config.ini" ), "Configuration file name relative to config-dir")
         ("logconf,l", bpo::value<std::string>()->default_value( "logging.json" ), "Logging configuration file name/path for library users");

   my->_cfg_options.add(app_cfg_opts);
   my->_app_options.add(app_cfg_opts);
   my->_app_options.add(app_cli_opts);

  • help:直接输出_app_options配置项的全部内容。
  • version:输出 application实例的类成员_version的值。
  • print-default-config: 与_app_options无关,重新到每个plugin中找配置,然后基于_cfg_options生成一份默认的config 配置,并打印到终端界面。
  • data-dir:设置data目录的命令,保存在application的类成员_data_dir 中。
  • config-dir:设置config路径,保存在类成员_config_dir 中。
  • logconf:默认是 logging.json,放置在config目录下面,可自定义设置,保存在类成员_logging_conf中。
  • config:指定配置文件的名字,默认是config.ini。如果发现在config目录下找到config.ini文件,则按照该文件的配置载入。

以上是关于EOS 源代码解读 插件-set_program_options的主要内容,如果未能解决你的问题,请参考以下文章

EOS 源代码解读 插件-流程

EOS 源代码解读 plugin插件

EOS 源代码解读 区块数据结构

EOS 智能合约源代码解读 symbol.hpp

EOS 智能合约源代码解读 (11)wrap合约“action_wrapper类”

EOS 智能合约源代码解读 boot合约