eos源码赏析(三):eosd初始化

上篇文章以文件分类简单的介绍了eos代码的架构,由于eosiod在整个工程中是较为重要的,接下来的例子中我们将以eosiod为主线进行相关内容的分析和探讨,今天我们主要看一下eosiod的初始化相关内容。


在所有的初始化之前,eosiod首先会进行版本的设置,通过下面一行代码即可实现:

app().set_version(eosio::eosiod::config::version);


在版本设置完成之后开始进行eosiod的初始化,如下:

if(!app().initialize(argc, argv))

         return -1;


通过逐步跳转,我们来到appbase中的:

bool application::initialize_impl(int argc, char** argv, vector autostart_plugins)


在initialize_impl开始会首先执行set_program_options(),即构建选项器。


在这里我们要简单的介绍下program options,program options是一系列pair组成的选项列表,它允许程序通过命令行或配置文件来读取这些参数选项,eosiod的很多操作就是通过命令行来配置的,具体的命令行可以使用-help命令进行查看。


构建选项器的过程如下:


在set_program_options中会有以下操作:


具体选项器如何构造,在截图的文字中做了简单描述,eosiod初始化的过程其实就是包含了若干个插件的初始化的过程,因此要将各个插件的选项器构建完成:


当识别到用户输入的命令行参数之后,会进行相应的操作,下面简单的浏览下这些参数的具体意义:


各个插件会根据用户的指令参数去完成初始化操作,以上这些选项器设置完成之后,会继续进行所有插件的初始化操作:

appbase会遍历所有的插件,然后去分别初始化这些插件。

在eosiod中初始化了三个插件:chain_plugin,http_plugin,net_plugin。


本文简单的介绍了eosiod的初始化内容,主要是eosiod是如何一步步的初始化这些插件的,那么这些插件是做什么用的?他们分别实现了什么功能?是如何实现的?这一个个疑问我们会在后面的文章中进行展示。

你可能感兴趣的:(eos源码赏析(三):eosd初始化)