Fabric 1.0源代码笔记 之 Peer #EndorserClient(Endorser客户端)

1、EndorserClient概述

EndorserClient相关代码分布如下:

  • protos/peer/peer.pb.go,EndorserClient接口及实现。
  • peer/common/common.go,EndorserClient相关工具函数。

2、EndorserClient接口定义

type EndorserClient interface {
    //处理Proposal
    ProcessProposal(ctx context.Context, in *SignedProposal, opts ...grpc.CallOption) (*ProposalResponse, error)
}
//代码在protos/peer/peer.pb.go

3、EndorserClient接口实现

EndorserClient接口实现,即endorserClient结构体及方法。

type endorserClient struct {
    cc *grpc.ClientConn
}

func NewEndorserClient(cc *grpc.ClientConn) EndorserClient {
    return &endorserClient{cc}
}

func (c *endorserClient) ProcessProposal(ctx context.Context, in *SignedProposal, opts ...grpc.CallOption) (*ProposalResponse, error) {
    out := new(ProposalResponse)
    err := grpc.Invoke(ctx, "/protos.Endorser/ProcessProposal", in, out, c.cc, opts...)
    return out, nil
}
//代码在protos/peer/peer.pb.go

4、EndorserClient工具函数

//获取Endorser客户端
func GetEndorserClient() (pb.EndorserClient, error) {
    clientConn, err := peer.NewPeerClientConnection()
    endorserClient := pb.NewEndorserClient(clientConn)
    return endorserClient, nil
}
//代码在peer/common/common.go
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐