github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/integration/ordererclient/orderer_client.go (about) 1 /* 2 Copyright hechain All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package ordererclient 8 9 import ( 10 "context" 11 12 "github.com/hechain20/hechain/integration/nwo" 13 "github.com/hyperledger/fabric-protos-go/common" 14 "github.com/hyperledger/fabric-protos-go/orderer" 15 "github.com/pkg/errors" 16 ) 17 18 // Broadcast sends given env to Broadcast API of specified orderer. 19 func Broadcast(n *nwo.Network, o *nwo.Orderer, env *common.Envelope) (*orderer.BroadcastResponse, error) { 20 conn := n.OrdererClientConn(o) 21 defer conn.Close() 22 23 broadcaster, err := orderer.NewAtomicBroadcastClient(conn).Broadcast(context.Background()) 24 if err != nil { 25 return nil, err 26 } 27 28 err = broadcaster.Send(env) 29 if err != nil { 30 return nil, err 31 } 32 33 resp, err := broadcaster.Recv() 34 if err != nil { 35 return nil, err 36 } 37 38 return resp, nil 39 } 40 41 // Deliver sends given env to Deliver API of specified orderer. 42 func Deliver(n *nwo.Network, o *nwo.Orderer, env *common.Envelope) (*common.Block, error) { 43 conn := n.OrdererClientConn(o) 44 defer conn.Close() 45 46 deliverer, err := orderer.NewAtomicBroadcastClient(conn).Deliver(context.Background()) 47 if err != nil { 48 return nil, err 49 } 50 51 err = deliverer.Send(env) 52 if err != nil { 53 return nil, err 54 } 55 56 resp, err := deliverer.Recv() 57 if err != nil { 58 return nil, err 59 } 60 61 blk := resp.GetBlock() 62 if blk == nil { 63 return nil, errors.Errorf("block not found") 64 } 65 66 return blk, nil 67 }