EOS开发系列EOS技术

区块链技术EOS开发系列之appbase库

2017-08-08  本文已影响832人  菠菜期权

appbase位于libraries目录,该库主要实现了一个简单的插件式架构。

AppBase负责管理插件的生命循环。花了一个小时看了下,整个结构很简单也很精简小巧。感觉都没什么值得分析的。。只谈重点:

AppBase 利用单例模式实现,用appbase::app() 可以访问,它内部有私有变量boost::asio::io_service。当调用appbase::exec()时,执行了io_service::run(),进入无限循环等待。

当插件 plugin需要执行IO或者其他异步操作时,需要调用app().get_io_service().post( lambda );

当需要关闭时,调用appbase::app().quit(),或者发送SIGTERM/SIGINT信号(比如Ctrl +C).

直接分析例子:

appbase例子 APPBASE_PLUGIN_REQUIRES

注意APPBASE_PLUGIN_REQUIRES宏,该宏负责自动管理插件的依赖关系。

执行下例子,可以根据打印日志追踪插件被app调用的执行流程。

./examples/appbase_example --plugin net_plugin

initialize chain plugin

initialize net plugin

starting chain plugin

starting net plugin

^C

shutdown net plugin

shutdown chain plugin

exited cleanly

over!

大家可以通过一下方式跟踪关注我:

github:https://github.com/philsong

微博:http://weibo.com/bocaicfa

本文是EOS技术研究系列的第四篇。

第一篇.Mac下的编译:http://www.jianshu.com/p/f26ee4cf1d4a

第二篇.eosc命令行工具:http://www.jianshu.com/p/b2db966435d0

第三篇.appbase库:http://www.jianshu.com/p/b7f0bbe89610

第四篇.chainbase库与database_plugin插件:http://www.jianshu.com/p/df835b574b52

区块链技术EOS开发系列之appbase库
上一篇下一篇

猜你喜欢

热点阅读