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