Skip to main content

ShardClientPool

Struct ShardClientPool 

Source
pub struct ShardClientPool { /* private fields */ }
Expand description

A pool of shard client connections.

The connection pool maintains a cached set of connections to shards, creating new connections on demand and reusing existing ones.

§Thread Safety

The pool is thread-safe and can be shared across multiple tasks.

§Example

use phago_distributed::rpc::client::ShardClientPool;

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?;
let health = client.health_check(tarpc::context::current()).await?;

Implementations§

Source§

impl ShardClientPool

Source

pub fn new() -> Self

Create a new empty connection pool.

Source

pub fn with_config(config: ClientConfig) -> Self

Create a new connection pool with custom configuration.

Source

pub async fn register_shard(&self, shard_id: ShardId, addr: SocketAddr)

Register a shard’s address.

This does not establish a connection immediately; connections are created lazily when get_client is called.

Source

pub async fn unregister_shard(&self, shard_id: ShardId)

Unregister a shard and close any cached connection.

Source

pub async fn get_client( &self, shard_id: ShardId, ) -> Result<ShardServiceClient, Error>

Get a client for the specified shard.

Returns a cached client if available, otherwise creates a new connection.

§Errors

Returns an error if the shard is not registered or if the connection fails.

Source

pub async fn get_all_clients(&self) -> Vec<(ShardId, ShardServiceClient)>

Get clients for all registered shards.

Attempts to connect to all shards, returning successfully connected clients. Failed connections are logged but do not cause the entire operation to fail.

Source

pub async fn has_shard(&self, shard_id: ShardId) -> bool

Check if a shard is registered.

Source

pub async fn shard_count(&self) -> usize

Get the number of registered shards.

Source

pub async fn cached_connection_count(&self) -> usize

Get the number of cached connections.

Source

pub async fn clear_cache(&self)

Clear all cached connections.

This forces new connections to be created on the next get_client call.

Source

pub async fn invalidate_client(&self, shard_id: ShardId)

Remove a cached connection for a specific shard.

Useful for forcing a reconnection after a failure.

Trait Implementations§

Source§

impl Clone for ShardClientPool

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for ShardClientPool

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more