Expand description
Tiny peer-service client primitives. No server-framework deps.
§When to use
Service B calls Service A — pull this in, not tonin-core,
which drags the tonic server stack, OTLP telemetry SDK, MCP sidecar
runtime, JWT validation and JWKS fetching along with it. This crate
holds only the contract pieces a caller actually needs: auth context,
retry/breaker config, OTel propagation, and request coalescing.
§Example — coalesced auth check
use tonin_client::client::CoalescingClient;
use tonin_client::cache::CacheConfig;
use std::time::Duration;
// Wrap the tonic-generated AuthServiceClient.
// Coalescing is on by default; add a 500 ms TTL cache for Check.
// let inner = AuthServiceClient::connect("http://auth:50051").await?;
// let client = CoalescingClient::builder(inner)
// .cache("Check", CacheConfig::new(Duration::from_millis(500), 1_000))
// .build();§Example — trace propagation
use tonin_client::{AuthCtx, propagate};
use tonic::Request;
fn forward(inbound: &Request<()>) -> Request<()> {
let caller = AuthCtx::from(inbound);
let mut outbound = Request::new(());
caller.propagate(&mut outbound);
propagate::inject_traceparent(
&mut outbound,
"00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01",
);
outbound
}§Modules
auth—AuthCtx,RawToken,PrincipalKind,AuthError.retry—RetryPolicy,Backoff,RetryableCodes.breaker—CircuitBreakerconfig with three-state presets.propagate— W3Ctraceparent/tracestateinjection.coalesce—Singleflight<R>,KeyFn,DefaultKeyFn.cache—ResponseCache<R>,CacheConfig.client—CoalescingClient<C>,CoalescingClientBuilder.
§Sibling crates
- https://docs.rs/tonin — umbrella crate for service authors.
- https://docs.rs/tonin-core — server runtime (use on the service being called, not on the caller).
Re-exports§
pub use auth::AuthCtx;pub use auth::AuthError;pub use auth::PrincipalKind;pub use auth::RawToken;pub use client::CoalescingClient;pub use platform_client::PlatformClient;pub use platform_client::PlatformClientConfig;
Modules§
- auth
- Auth types shared between server and client.
- breaker
- Circuit-breaker configuration for outbound calls.
- cache
- Optional per-method short-TTL response cache.
- client
- Generic coalescing wrapper for tonic-generated gRPC clients.
- coalesce
- Request coalescing (singleflight) for outbound gRPC calls.
- platform_
client - Platform client for agnitiv-platform to trigger tonin deployments.
- propagate
- Request-header helpers for outbound calls.
- retry
- Retry-policy configuration for outbound calls.