前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >eos源码赏析(三):eosd初始化

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

作者头像
用户2569546
发布2021-11-23 10:26:41
3040
发布2021-11-23 10:26:41
举报
文章被收录于专栏:eosfanseosfans

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

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

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

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

if(!app().initialize<chain_plugin, http_plugin, net_plugin>(argc, argv)) return -1;

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

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

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

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

构建选项器的过程如下:

在set_program_options中会有以下操作:

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 eosfans 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档