@@ -24,6 +24,7 @@ package chaincode
24
24
//-------------------------------------------------------------
25
25
import (
26
26
"fmt"
27
+ "time"
27
28
28
29
cb "github.com/hyperledger/fabric/protos/common"
29
30
ab "github.com/hyperledger/fabric/protos/orderer"
@@ -40,9 +41,25 @@ func newBroadcastClient(client ab.AtomicBroadcast_BroadcastClient) *broadcastCli
40
41
return & broadcastClient {client : client }
41
42
}
42
43
44
+ func (s * broadcastClient ) getAck () error {
45
+ msg , err := s .client .Recv ()
46
+ if err != nil {
47
+ return err
48
+ }
49
+ if msg .Status != cb .Status_SUCCESS {
50
+ return fmt .Errorf ("Got unexpected status: %v" , msg .Status )
51
+ }
52
+ return nil
53
+ }
54
+
43
55
//Send data to solo orderer
44
56
func Send (serverAddr string , env * cb.Envelope ) error {
45
- conn , err := grpc .Dial (serverAddr , grpc .WithInsecure ())
57
+ var opts []grpc.DialOption
58
+ opts = append (opts , grpc .WithInsecure ())
59
+ opts = append (opts , grpc .WithTimeout (3 * time .Second ))
60
+ opts = append (opts , grpc .WithBlock ())
61
+
62
+ conn , err := grpc .Dial (serverAddr , opts ... )
46
63
defer conn .Close ()
47
64
if err != nil {
48
65
return fmt .Errorf ("Error connecting: %s" , err )
@@ -53,7 +70,11 @@ func Send(serverAddr string, env *cb.Envelope) error {
53
70
}
54
71
55
72
s := newBroadcastClient (client )
56
- s .client .Send (env )
73
+ if err = s .client .Send (env ); err != nil {
74
+ return fmt .Errorf ("Could not send :%s)" , err )
75
+ }
57
76
58
- return nil
77
+ err = s .getAck ()
78
+
79
+ return err
59
80
}
0 commit comments