Skip to main content

Module rpc

Module rpc 

Source
Expand description

RPC protocol definitions using tarpc.

This module implements the tarpc-based RPC layer for inter-node communication including:

  • Service definitions for colony operations
  • Client and server implementations
  • Connection pooling and retry logic

§Architecture

The RPC layer consists of three main components:

  • Protocol: Trait definitions for ShardService and CoordinatorService
  • Server: Server implementations that wrap local components
  • Client: Client utilities including connection pooling

§Example: Starting a Shard Server

use phago_distributed::rpc::server::ShardServer;
use phago_distributed::shard::ShardedColony;

let shard = Arc::new(RwLock::new(ShardedColony::new(...)));
let server = ShardServer::new(shard);
server.serve("127.0.0.1:8080".parse().unwrap()).await?;

§Example: Connecting as a Client

use phago_distributed::rpc::client::{connect_to_shard, ShardClientPool};

// Direct connection
let client = connect_to_shard("127.0.0.1:8080".parse().unwrap()).await?;

// Or use the connection pool
let pool = ShardClientPool::new();
pool.register_shard(ShardId::new(0), "127.0.0.1:8080".parse().unwrap());
let client = pool.get_client(ShardId::new(0)).await?;

Re-exports§

pub use protocol::CoordinatorService;
pub use protocol::CoordinatorServiceClient;
pub use protocol::RpcError;
pub use protocol::RpcResult;
pub use protocol::ShardService;
pub use protocol::ShardServiceClient;
pub use protocol::TickStatus;
pub use messages::BatchUpdate;
pub use messages::BatchUpdateResult;
pub use messages::CrossShardEdgeNotification;
pub use messages::CrossShardSignal;
pub use messages::HeartbeatMessage;
pub use messages::HeartbeatResponse;
pub use messages::NodeTransferRequest;
pub use messages::NodeTransferResponse;
pub use messages::QueryGatherResponse;
pub use messages::QueryScatterRequest;
pub use messages::ShardCommand;
pub use messages::StartTickMessage;
pub use messages::UpdateOperation;
pub use client::connect_to_coordinator;
pub use client::connect_to_coordinator_with_config;
pub use client::connect_to_coordinator_with_retry;
pub use client::connect_to_shard;
pub use client::connect_to_shard_with_config;
pub use client::connect_to_shard_with_retry;
pub use client::ClientConfig;
pub use client::CoordinatorClient;
pub use client::ShardClientPool;
pub use server::CoordinatorServer;
pub use server::ShardServer;

Modules§

client
tarpc client utilities.
messages
Additional message types for RPC communication.
protocol
tarpc service trait definitions.
server
tarpc server implementations.