Expand description
Runtara Protocol - QUIC + Protobuf communication layer
This crate provides the wire protocol for communication between:
- Instances and runtara-core (instance protocol)
- External clients and runtara-core (management protocol)
§Architecture
┌─────────────────────────────────────────────────────────────┐
│ runtara-protocol │
├─────────────────────────────────────────────────────────────┤
│ RPC Layer: Request/Response + Bidirectional Streaming │
├─────────────────────────────────────────────────────────────┤
│ Serialization: Protobuf (prost) │
├─────────────────────────────────────────────────────────────┤
│ Transport: QUIC (quinn) │
└─────────────────────────────────────────────────────────────┘§Protocols
§Instance Protocol (instance_proto)
Used by instances to communicate with runtara-core:
- Registration, checkpointing, sleep/wake
- Events (started, progress, completed, failed)
- Signal polling and acknowledgment
§Management Protocol (management_proto)
Used by external clients to manage runtara-core:
- Health checks
- Send signals to instances
- Query instance status
- List instances
§Usage
§Instance Client (scenarios)
ⓘ
use runtara_protocol::{RuntaraClient, RuntaraClientConfig, instance_proto};
let client = RuntaraClient::localhost()?;
client.connect().await?;
let request = instance_proto::RegisterInstanceRequest {
instance_id: "my-instance".to_string(),
tenant_id: "tenant-1".to_string(),
checkpoint_id: None,
};
let rpc_request = instance_proto::RpcRequest {
request: Some(instance_proto::rpc_request::Request::RegisterInstance(request)),
};
let response: instance_proto::RpcResponse = client.request(&rpc_request).await?;§Management Client
ⓘ
use runtara_protocol::{RuntaraClient, management_proto};
let client = RuntaraClient::localhost()?;
client.connect().await?;
let request = management_proto::HealthCheckRequest {};
let rpc_request = management_proto::RpcRequest {
request: Some(management_proto::rpc_request::Request::HealthCheck(request)),
};
let response: management_proto::RpcResponse = client.request(&rpc_request).await?;Re-exports§
pub use client::ClientError;pub use client::RuntaraClient;pub use client::RuntaraClientConfig;pub use frame::Frame;pub use frame::FrameError;pub use frame::FramedStream;pub use frame::MessageType;pub use server::ConnectionHandler;pub use server::RuntaraServer;pub use server::RuntaraServerConfig;pub use server::ServerError;pub use server::StreamHandler;
Modules§
- client
- QUIC client helpers for connecting to runtara-core.
- environment_
proto - frame
- Wire format for QUIC stream framing.
- instance_
proto - management_
proto - server
- QUIC server helpers for runtara-core.