摘要:區塊鏈教程源代碼分析根命令入口及加載子命令,年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁回歸理性,表面上看相關人才需求與身價似乎正在回落。代碼在為命令啟動。
區塊鏈教程Fabric1.0源代碼分析Peer peer根命令入口及加載子命令,2018年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁、回歸理性,表面上看相關人才需求與身價似乎正在回落。但事實上,正是初期泡沫的漸退,讓人們更多的關注點放在了區塊鏈真正的技術之上。
Fabric 1.0源代碼筆記 之 Peer #peer根命令入口及加載子命令 1、加載環境變量配置和配置文件Fabric支持通過環境變量對部分配置進行更新,如:CORE_LOGGING_LEVEL為輸出的日志級別、CORE_PEER_ID為Peer的ID等。
此部分功能由第三方包viper來實現,viper除支持環境變量的配置方式外,還支持配置文件方式。
如下代碼為加載環境變量配置,其中cmdRoot為"core",即CORE_開頭的環境變量。
viper.SetEnvPrefix(cmdRoot) viper.AutomaticEnv() replacer := strings.NewReplacer(".", "_") viper.SetEnvKeyReplacer(replacer) //代碼在peer/main.go
加載配置文件,同樣由第三方包viper來實現,具體代碼如下:
其中cmdRoot為"core",即/etc/hyperledger/fabric/core.yaml。
err := common.InitConfig(cmdRoot) //代碼在peer/main.go
如下代碼為common.InitConfig(cmdRoot)的具體實現:
config.InitViper(nil, cmdRoot) err := viper.ReadInConfig() //代碼在peer/common/common.go
另附config.InitViper(nil, cmdRoot)的代碼實現:
優先從環境變量FABRIC_CFG_PATH中獲取配置文件路徑,其次為當前目錄、開發環境目錄(即:src/github.com/hyperledger/fabric/sampleconfig)、和OfficialPath(即:/etc/hyperledger/fabric)。
AddDevConfigPath是對addConfigPath的封裝,目的是通過GetDevConfigDir()調取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.go2、加載命令行工具和命令
Fabric支持類似peer node start、peer channel create、peer chaincode install這種命令、子命令、命令選項的命令行形式。
此功能由第三方包cobra來實現,以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執行用于初始化日志系統,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日志系統 ????????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、初始化日志系統(輸出對象、日志格式、日志級別)如下為初始日志系統代碼入口,其中loggingSpec取自環境變量CORE_LOGGING_LEVEL或配置文件中logging.peer,即:全局的默認日志級別。
flogging.InitFromSpec(loggingSpec) //代碼在peer/main.go
未完待續感謝關注兄弟連區塊鏈教程分享!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/24370.html
摘要:兄弟連區塊鏈教程源代碼分析根命令入口及加載子命令二。此處傳入為,將模塊日志級別設置為,并會將初始化為。代碼在目錄下包括。核心代碼為,目的是在或為空時設置默認值。感謝關注兄弟連區塊鏈教程分享 兄弟連區塊鏈教程Fabric1.0源代碼分析Peer peer根命令入口及加載子命令二。flogging,即:fabric logging,為Fabric基于第三方包go-logging封裝的日...
摘要:兄弟連區塊鏈教程源代碼分析命令及子命令實現,年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁回歸理性,表面上看相關人才需求與身價似乎正在回落。 兄弟連區塊鏈教程Fabric1.0源代碼分析Peer peer chaincode命令及子命令實現,2018年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁、回歸理性,表面上看相關人才需求與身價似乎正在回落。但事實上,正是初期泡沫的漸退,讓人們更多...
摘要:兄弟連區塊鏈教程源代碼分析客戶端,年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁回歸理性,表面上看相關人才需求與身價似乎正在回落。源代碼筆記之客戶端概述相關代碼分布如下,接口及實現。代碼在工具函數獲取客戶端代碼在 兄弟連區塊鏈教程Fabric1.0源代碼分析Peer EndorserClient(Endorser客戶端),2018年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁、回歸理性...
摘要:兄弟連區塊鏈教程源代碼分析服務端,年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁回歸理性,表面上看相關人才需求與身價似乎正在回落。源代碼筆記之服務端概述相關代碼在目錄下。,接口實現,即結構體及方法,以及服務端處理流程。 兄弟連區塊鏈教程Fabric1.0源代碼分析Peer(Endorser服務端),2018年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁、回歸理性,表面上看相關人才需求與...
摘要:區塊鏈教程源代碼分析日志系統,年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁回歸理性,表面上看相關人才需求與身價似乎正在回落。源代碼筆記之日志系統概述,即,對第三方日志包做了封裝,供全局使用。設置各模塊的日志級別,并更新。 區塊鏈教程Fabric1.0源代碼分析flogging(Fabric日志系統),2018年下半年,區塊鏈行業正逐漸褪去發展之初的浮躁、回歸理性,表面上看相關人才需...
閱讀 1074·2021-11-16 11:45
閱讀 2708·2021-09-27 13:59
閱讀 1315·2021-08-31 09:38
閱讀 3143·2019-08-30 15:52
閱讀 1315·2019-08-29 13:46
閱讀 2085·2019-08-29 11:23
閱讀 1631·2019-08-26 13:47
閱讀 2476·2019-08-26 11:54