[][src]Crate tarpc_lib

An RPC framework providing client and server.

Features:

  • RPC deadlines, both client- and server-side.
  • Cascading cancellation (works with multiple hops).
  • Configurable limits
    • In-flight requests, both client and server-side.
      • Server-side limit is per-connection.
      • When the server reaches the in-flight request maximum, it returns a throttled error to the client.
      • When the client reaches the in-flight request max, messages are buffered up to a configurable maximum, beyond which the requests are back-pressured.
    • Server connections.
      • Total and per-IP limits.
      • When an incoming connection is accepted, if already at maximum, the connection is dropped.
  • Transport agnostic.

Re-exports

pub use crate::client::Client;
pub use crate::server::Server;
pub use crate::transport::Transport;

Modules

client

Provides a client that connects to a server and sends multiplexed requests.

context

Provides a request context that carries a deadline and trace context. This context is sent from client to server and is used by the server to enforce response deadlines.

server

Provides a server that concurrently handles many connections sending multiplexed requests.

transport

Provides a Transport trait as well as implementations.

Structs

ClientMessage

A message from a client to a server.

Request

A request from a client to a server.

Response

A response from a server to a client.

ServerError

An error response from a server to a client.

Enums

ClientMessageKind

Different messages that can be sent from a client to a server.

Functions

init

Initializes the RPC library with a mechanism to spawn futures on the user's runtime. Client stubs and servers both use the initialized spawn.