成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

兄弟連區(qū)塊鏈教程Fabric1.0源代碼分析Peer peer根命令入口及加載子命令一

sean / 3275人閱讀

摘要:區(qū)塊鏈教程源代碼分析根命令入口及加載子命令,年下半年,區(qū)塊鏈行業(yè)正逐漸褪去發(fā)展之初的浮躁回歸理性,表面上看相關(guān)人才需求與身價似乎正在回落。代碼在為命令啟動。

  區(qū)塊鏈教程Fabric1.0源代碼分析Peer peer根命令入口及加載子命令,2018年下半年,區(qū)塊鏈行業(yè)正逐漸褪去發(fā)展之初的浮躁、回歸理性,表面上看相關(guān)人才需求與身價似乎正在回落。但事實上,正是初期泡沫的漸退,讓人們更多的關(guān)注點放在了區(qū)塊鏈真正的技術(shù)之上。

Fabric 1.0源代碼筆記 之 Peer #peer根命令入口及加載子命令 1、加載環(huán)境變量配置和配置文件

Fabric支持通過環(huán)境變量對部分配置進行更新,如:CORE_LOGGING_LEVEL為輸出的日志級別、CORE_PEER_ID為Peer的ID等。
此部分功能由第三方包viper來實現(xiàn),viper除支持環(huán)境變量的配置方式外,還支持配置文件方式。
如下代碼為加載環(huán)境變量配置,其中cmdRoot為"core",即CORE_開頭的環(huán)境變量。

viper.SetEnvPrefix(cmdRoot)
viper.AutomaticEnv()
replacer := strings.NewReplacer(".", "_")
viper.SetEnvKeyReplacer(replacer)
//代碼在peer/main.go

加載配置文件,同樣由第三方包viper來實現(xiàn),具體代碼如下:
其中cmdRoot為"core",即/etc/hyperledger/fabric/core.yaml。

err := common.InitConfig(cmdRoot) 
//代碼在peer/main.go

如下代碼為common.InitConfig(cmdRoot)的具體實現(xiàn):

config.InitViper(nil, cmdRoot)
err := viper.ReadInConfig()
//代碼在peer/common/common.go

另附config.InitViper(nil, cmdRoot)的代碼實現(xiàn):
優(yōu)先從環(huán)境變量FABRIC_CFG_PATH中獲取配置文件路徑,其次為當前目錄、開發(fā)環(huán)境目錄(即:src/github.com/hyperledger/fabric/sampleconfig)、和OfficialPath(即:/etc/hyperledger/fabric)。
AddDevConfigPath是對addConfigPath的封裝,目的是通過GetDevConfigDir()調(diào)取sampleconfig路徑。

var altPath = os.Getenv("FABRIC_CFG_PATH")
if altPath != "" {
????addConfigPath(v, altPath)
} else {
????addConfigPath(v, "./")
????err := AddDevConfigPath(v)
????addConfigPath(v, OfficialPath)
}
viper.SetConfigName(configName)
//代碼在core/config/config.go
2、加載命令行工具和命令

Fabric支持類似peer node start、peer channel create、peer chaincode install這種命令、子命令、命令選項的命令行形式。
此功能由第三方包cobra來實現(xiàn),以peer chaincode install -n test_cc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02為例,
其中peer、chaincode、install、-n分別為命令、子命令、子命令的子命令、命令選項。

如下代碼為mainCmd的初始化,其中Use為命令名稱,PersistentPreRunE先于Run執(zhí)行用于初始化日志系統(tǒng),Run此處用于打印版本信息或幫助信息。

var mainCmd = &cobra.Command{
????Use: "peer",
????PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
????????loggingSpec := viper.GetString("logging_level")

????????if loggingSpec == "" {
????????????loggingSpec = viper.GetString("logging.peer")
????????}
????????flogging.InitFromSpec(loggingSpec) //初始化flogging日志系統(tǒng)

????????return nil
????},
????Run: func(cmd *cobra.Command, args []string) {
????????if versionFlag {
????????????fmt.Print(version.GetInfo())
????????} else {
????????????cmd.HelpFunc()(cmd, args)
????????}
????},
}
//代碼在peer/main.go

如下代碼為添加命令行選項,-v, --version、--logging-level和--test.coverprofile分別用于版本信息、日志級別和測試覆蓋率分析。

mainFlags := mainCmd.PersistentFlags()
mainFlags.BoolVarP(&versionFlag, "version", "v", false, "Display current version of fabric peer server")
mainFlags.String("logging-level", "", "Default logging level and overrides, see core.yaml for full syntax")
viper.BindPFlag("logging_level", mainFlags.Lookup("logging-level"))
testCoverProfile := ""
mainFlags.StringVarP(&testCoverProfile, "test.coverprofile", "", "coverage.cov", "Done")
//代碼在peer/main.go

如下代碼為逐一加載peer命令下子命令:node、channel、chaincode、clilogging、version。

mainCmd.AddCommand(version.Cmd())
mainCmd.AddCommand(node.Cmd())
mainCmd.AddCommand(chaincode.Cmd(nil))
mainCmd.AddCommand(clilogging.Cmd(nil))
mainCmd.AddCommand(channel.Cmd(nil))
//代碼在peer/main.go 

mainCmd.Execute()為命令啟動。

3、初始化日志系統(tǒng)(輸出對象、日志格式、日志級別)

如下為初始日志系統(tǒng)代碼入口,其中l(wèi)oggingSpec取自環(huán)境變量CORE_LOGGING_LEVEL或配置文件中l(wèi)ogging.peer,即:全局的默認日志級別。

flogging.InitFromSpec(loggingSpec)
//代碼在peer/main.go

未完待續(xù)感謝關(guān)注兄弟連區(qū)塊鏈教程分享!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24370.html

相關(guān)文章

  • 區(qū)塊教程Fabric1.0代碼分析Peer peer命令入口及加載子命令

    摘要:兄弟連區(qū)塊鏈教程源代碼分析根命令入口及加載子命令二。此處傳入為,將模塊日志級別設(shè)置為,并會將初始化為。代碼在目錄下包括。核心代碼為,目的是在或為空時設(shè)置默認值。感謝關(guān)注兄弟連區(qū)塊鏈教程分享   兄弟連區(qū)塊鏈教程Fabric1.0源代碼分析Peer peer根命令入口及加載子命令二。flogging,即:fabric logging,為Fabric基于第三方包go-logging封裝的日...

    tuantuan 評論0 收藏0
  • 區(qū)塊教程Fabric1.0代碼分析Peer peer chaincode命令及子命令實現(xiàn)

    摘要:兄弟連區(qū)塊鏈教程源代碼分析命令及子命令實現(xiàn),年下半年,區(qū)塊鏈行業(yè)正逐漸褪去發(fā)展之初的浮躁回歸理性,表面上看相關(guān)人才需求與身價似乎正在回落。   兄弟連區(qū)塊鏈教程Fabric1.0源代碼分析Peer peer chaincode命令及子命令實現(xiàn),2018年下半年,區(qū)塊鏈行業(yè)正逐漸褪去發(fā)展之初的浮躁、回歸理性,表面上看相關(guān)人才需求與身價似乎正在回落。但事實上,正是初期泡沫的漸退,讓人們更多...

    gghyoo 評論0 收藏0
  • 區(qū)塊教程Fabric1.0代碼分析Peer EndorserClient(Endorser客戶端

    摘要:兄弟連區(qū)塊鏈教程源代碼分析客戶端,年下半年,區(qū)塊鏈行業(yè)正逐漸褪去發(fā)展之初的浮躁回歸理性,表面上看相關(guān)人才需求與身價似乎正在回落。源代碼筆記之客戶端概述相關(guān)代碼分布如下,接口及實現(xiàn)。代碼在工具函數(shù)獲取客戶端代碼在   兄弟連區(qū)塊鏈教程Fabric1.0源代碼分析Peer EndorserClient(Endorser客戶端),2018年下半年,區(qū)塊鏈行業(yè)正逐漸褪去發(fā)展之初的浮躁、回歸理性...

    lufficc 評論0 收藏0
  • 區(qū)塊教程Fabric1.0代碼分析Peer(Endorser服務(wù)端)

    摘要:兄弟連區(qū)塊鏈教程源代碼分析服務(wù)端,年下半年,區(qū)塊鏈行業(yè)正逐漸褪去發(fā)展之初的浮躁回歸理性,表面上看相關(guān)人才需求與身價似乎正在回落。源代碼筆記之服務(wù)端概述相關(guān)代碼在目錄下。,接口實現(xiàn),即結(jié)構(gòu)體及方法,以及服務(wù)端處理流程。   兄弟連區(qū)塊鏈教程Fabric1.0源代碼分析Peer(Endorser服務(wù)端),2018年下半年,區(qū)塊鏈行業(yè)正逐漸褪去發(fā)展之初的浮躁、回歸理性,表面上看相關(guān)人才需求與...

    leone 評論0 收藏0
  • 區(qū)塊教程Fabric1.0代碼分析flogging(Fabric日志系統(tǒng))兄弟區(qū)塊

    摘要:區(qū)塊鏈教程源代碼分析日志系統(tǒng),年下半年,區(qū)塊鏈行業(yè)正逐漸褪去發(fā)展之初的浮躁回歸理性,表面上看相關(guān)人才需求與身價似乎正在回落。源代碼筆記之日志系統(tǒng)概述,即,對第三方日志包做了封裝,供全局使用。設(shè)置各模塊的日志級別,并更新。   區(qū)塊鏈教程Fabric1.0源代碼分析flogging(Fabric日志系統(tǒng)),2018年下半年,區(qū)塊鏈行業(yè)正逐漸褪去發(fā)展之初的浮躁、回歸理性,表面上看相關(guān)人才需...

    DandJ 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<