// Package abcicli provides an ABCI implementation in Go. // // There are 3 clients available: // 1. socket (unix or TCP) // 2. local (in memory) // 3. gRPC // // ## Socket client // // async: the client maintains an internal buffer of a fixed size. when the // buffer becomes full, all Async calls will return an error immediately. // // sync: the client blocks on 1) enqueuing the Sync request 2) enqueuing the // Flush requests 3) waiting for the Flush response // // ## Local client // // async: global mutex is locked during each call (meaning it's not really async!) // sync: global mutex is locked during each call // // ## gRPC client // // async: gRPC is synchronous, but an internal buffer of a fixed size is used // to store responses and later call callbacks (separate goroutine per // response). // // sync: waits for all Async calls to complete (essentially what Flush does in // the socket client) and calls Sync method. package abcicli