Skip to main content

Crate tonin_client

Crate tonin_client 

Source
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

  • authAuthCtx, RawToken, PrincipalKind, AuthError.
  • retryRetryPolicy, Backoff, RetryableCodes.
  • breakerCircuitBreaker config with three-state presets.
  • propagate — W3C traceparent / tracestate injection.
  • coalesceSingleflight<R>, KeyFn, DefaultKeyFn.
  • cacheResponseCache<R>, CacheConfig.
  • clientCoalescingClient<C>, CoalescingClientBuilder.

§Sibling crates

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.