9 releases (4 breaking)
Uses new Rust 2024
| 0.8.0 | May 6, 2026 |
|---|---|
| 0.7.0 | May 4, 2026 |
| 0.6.2 | May 4, 2026 |
| 0.6.0 | Apr 22, 2026 |
| 0.4.0 | Feb 4, 2026 |
#2138 in Algorithms
Used in 2 crates
510KB
9K
SLoC
kmb-client: RPC client for Kimberlite
This crate provides a synchronous RPC client for communicating with
a Kimberlite server using the binary wire protocol defined in kmb-wire.
Usage
use kimberlite_client::{Client, ClientConfig};
use kimberlite_types::{DataClass, TenantId};
// Connect to server
let mut client = Client::connect(
"127.0.0.1:5432",
TenantId::new(1),
ClientConfig::default(),
)?;
// Create a stream
let stream_id = client.create_stream("events", DataClass::Public)?;
// Append events
let offset = client.append(stream_id, vec![
b"event1".to_vec(),
b"event2".to_vec(),
], kimberlite_types::Offset::ZERO)?;
// Read events back
let events = client.read_events(stream_id, kimberlite_types::Offset::new(0), 1024)?;
// Execute a query
let result = client.query("SELECT * FROM streams", &[])?;
Configuration
The client can be configured with timeouts and buffer sizes:
use kimberlite_client::ClientConfig;
use std::time::Duration;
let config = ClientConfig {
read_timeout: Some(Duration::from_secs(60)),
write_timeout: Some(Duration::from_secs(30)),
buffer_size: 128 * 1024,
auth_token: Some("secret-token".to_string()),
};
Dependencies
~13–21MB
~318K SLoC