写点什么

长安链源码分析启动(7)

作者:
  • 2022 年 8 月 30 日
    湖南
  • 本文字数:1381 字

    阅读完需:约 5 分钟

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star


接着继续看启动方法

// Start ChainMakerServer.func (server *ChainMakerServer) Start() error {	// 1) 启动网络	if err := server.net.Start(); err != nil {		log.Errorf("[Net] start failed, %s", err.Error())		return err	}	log.Infof("[Net] start success!")
//初始化加密引擎 engine.InitCryptoEngine(localconf.ChainMakerConfig.CryptoEngine, false)
// 2) 启动每一个链 server.blockchains.Range(func(_, value interface{}) bool { chain, _ := value.(*Blockchain) go startBlockchain(chain) return true }) // 3) ready close(server.readyC) return nil}
复制代码

网络启动,我们看看 liquidNet 的,这个是长安链自研的网络组件服务

整个脉络比较清晰,具体细节还要深入研究。

后面完整,我们重点测试下网络这块的代码,从而了解细节。这篇先了解一下整体过程

func (l *LiquidNet) Start() error {	l.lock.Lock()	defer l.lock.Unlock()
var err error
if l.startUp { return ErrorNetRunning }
// confirm config l.confirmConfig()
// 加载私钥 l.hostCfg.PrivateKey, err = asym.PrivateKeyFromPEM(l.cryptoCfg.KeyBytes, nil) if err != nil { return err }
// 确认网络类型 var netType lHost.NetworkType firstListenAddr := l.hostCfg.ListenAddresses[0] netType = lHost.ConfirmNetworkTypeByAddr(firstListenAddr) if netType == lHost.UnknownNetwork { return ErrorWrongAddressOrUnsupported } log.Infof("[LiquidNet] network type: %s", netType)
// 设置链的trust roots err = l.setUpChainTrustRoots() if err != nil { return err }
//设置TlsConfig err = l.setUpTlsConfig(netType) if err != nil { return err }
// 创建一个新的Host newHost, err := l.hostCfg.NewHost(netType, l.context, log) if err != nil { return err }
l.host = newHost // bind notifiee l.bindNotifiee()
//开启适配pkt if l.extensionsCfg.EnablePkt { log.Infof("[LiquidNet] Pkt enabled.") l.pktAdapter = newPktAdapter(l.host, log) l.pktAdapter.run() err = l.host.RegisterMsgPayloadHandler(pktProtocol, l.pktAdapter.msgPayloadFunc) if err != nil { return err } }
//开启优先级控制 if l.extensionsCfg.EnablePriorityCtrl { log.Infof("[LiquidNet] priority control enabled.") l.priorityController = priorityblocker.NewBlocker(nil) l.priorityController.Run() }
// 启动host err = newHost.Start() if err != nil { log.Errorf("[LiquidNet] host start failed, %s", err.Error()) return err }
// 启动自动发现服务 l.discoveryService, err = protocoldiscovery.NewProtocolBasedDiscovery( l.host, protocoldiscovery.WithLogger(log), protocoldiscovery.WithMaxQuerySize(3), ) if err != nil { log.Errorf("[LiquidNet] set up discovery service failed, %s", err.Error()) return err } log.Info("[LiquidNet] discovery service set up.") l.startUp = true return err}
复制代码


用户头像

关注

还未添加个人签名 2018.05.04 加入

还未添加个人简介

评论

发布
暂无评论
长安链源码分析启动(7)_长安链_李_InfoQ写作社区