github.com/number571/tendermint@v0.34.11-gost/abci/client/doc.go (about) 1 // Package abcicli provides an ABCI implementation in Go. 2 // 3 // There are 3 clients available: 4 // 1. socket (unix or TCP) 5 // 2. local (in memory) 6 // 3. gRPC 7 // 8 // ## Socket client 9 // 10 // async: the client maintains an internal buffer of a fixed size. when the 11 // buffer becomes full, all Async calls will return an error immediately. 12 // 13 // sync: the client blocks on 1) enqueuing the Sync request 2) enqueuing the 14 // Flush requests 3) waiting for the Flush response 15 // 16 // ## Local client 17 // 18 // async: global mutex is locked during each call (meaning it's not really async!) 19 // sync: global mutex is locked during each call 20 // 21 // ## gRPC client 22 // 23 // async: gRPC is synchronous, but an internal buffer of a fixed size is used 24 // to store responses and later call callbacks (separate goroutine per 25 // response). 26 // 27 // sync: waits for all Async calls to complete (essentially what Flush does in 28 // the socket client) and calls Sync method. 29 package abcicli