长安链源码分析启动(2)
作者:李
- 2022 年 8 月 29 日 湖南
本文字数:1145 字
阅读完需:约 4 分钟
本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star
1.ChainMakerServer 初始化方法如下
// Init ChainMakerServer.func (server *ChainMakerServer) Init() error { var err error log.Debug("begin init chain maker server...") server.readyC = make(chan struct{}) //初始化网络 if err = server.initNet(); err != nil { return err } // 初始化区块链 if err = server.initBlockchains(); err != nil { return err } log.Info("init chain maker server success!") return nil}复制代码
从代码里可以看出,核心就两个方法,分别是初始化网络和初始化区块链。
2.初始化 rpc 服务,是把初始化好的 chainMakerServer 作为参数传入进来,核心逻辑如下:
func NewRPCServer(chainMakerServer *blockchain.ChainMakerServer) (*RPCServer, error) {//创建一个grpc serverserver, err := newGrpc(chainMakerServer)if err != nil { return nil, fmt.Errorf("new grpc server failed, %s", err.Error())}.......//把grpc server和chainMakerServer包装成RPCServer返回rpc服务器return &RPCServer{ grpcServer: server, chainMakerServer: chainMakerServer, log: logger.GetLogger(logger.MODULE_RPC),}, nil}复制代码
启动 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}}复制代码
启动 rpc 服务器
func (s *RPCServer) Start() error {
//注册处理器 if err = s.RegisterHandler(); err != nil { return fmt.Errorf("register handler failed, %s", err.Error()) }
endPoint := fmt.Sprintf(":%d", localconf.ChainMakerConfig.RpcConfig.Port) //网络监听 conn, err := net.Listen("tcp", endPoint) if err != nil { return fmt.Errorf("TCP listen failed, %s", err.Error()) }
//开启协程,为每个建立的连接提供服务 go func() { err = s.grpcServer.Serve(conn) if err != nil { s.log.Errorf("grpc Serve failed, %s", err.Error()) } }()}复制代码
我们一层层卜拨开主脉络。
划线
评论
复制
发布于: 刚刚阅读数: 5
李
关注
还未添加个人签名 2018.05.04 加入
还未添加个人简介









评论