Skip to main content

GrpcClient

Struct GrpcClient 

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

gRPC-based key-value store client

Implements remote CRUD operations via gRPC protocol. All write operations use strong consistency.

Implementations§

Source§

impl GrpcClient

Source

pub async fn get_with_policy( &self, key: impl AsRef<[u8]>, consistency_policy: Option<ReadConsistencyPolicy>, ) -> Result<Option<KvEntry>, ClientApiError>

Retrieves a single key’s value with explicit consistency policy

Allows client to override server’s default consistency policy for this specific request. If server’s allow_client_override is false, the override will be ignored.

§Parameters
  • key - The key to retrieve, accepts any type implementing AsRef<[u8]>
  • policy - Explicit consistency policy for this request
Source

pub async fn get_multi_with_policy( &self, keys: impl IntoIterator<Item = impl AsRef<[u8]>>, consistency_policy: Option<ReadConsistencyPolicy>, ) -> Result<Vec<Option<KvEntry>>, ClientApiError>

Fetches multiple keys with explicit consistency policy override

Allows client to override server’s default consistency policy for this batch request. If server’s allow_client_override is false, the override will be ignored.

Source

pub async fn watch_membership( &self, ) -> Result<Streaming<MembershipSnapshot>, ClientApiError>

Subscribe to committed cluster membership changes.

Immediately yields the current MembershipSnapshot on connect, then one snapshot per committed ConfChange (AddNode, Promote, Remove). The stream ends with Err(UNAVAILABLE) when the server shuts down; callers should reconnect and re-subscribe.

Use committed_index as an idempotency key to deduplicate retries.

Source

pub async fn watch( &self, key: impl AsRef<[u8]>, ) -> Result<Streaming<WatchResponse>, ClientApiError>

Watch for changes to a specific key

Returns a stream of watch events when the key’s value changes. The stream will continue until explicitly closed or a connection error occurs.

§Arguments
  • key - The key to watch
§Returns

A streaming response that yields WatchResponse events

§Errors

Returns error if unable to establish watch connection

Source

pub async fn watch_prefix( &self, prefix: impl AsRef<[u8]>, ) -> Result<Streaming<WatchResponse>, ClientApiError>

Watch all keys under a path prefix.

prefix must start with ‘/’ and end with ‘/’, e.g. b"/services/". Returns a stream of events for any key whose path begins with the prefix.

Trait Implementations§

Source§

impl ClientApi for GrpcClient

Source§

fn put<'life0, 'async_trait>( &'life0 self, key: impl AsRef<[u8]> + Send + 'async_trait, value: impl AsRef<[u8]> + Send + 'async_trait, ) -> Pin<Box<dyn Future<Output = Result<(), ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Stores a key-value pair with strong consistency. Read more
Source§

fn put_with_ttl<'life0, 'async_trait>( &'life0 self, key: impl AsRef<[u8]> + Send + 'async_trait, value: impl AsRef<[u8]> + Send + 'async_trait, ttl_secs: u64, ) -> Pin<Box<dyn Future<Output = Result<(), ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Stores a key-value pair with time-to-live (TTL). Read more
Source§

fn get<'life0, 'async_trait>( &'life0 self, key: impl AsRef<[u8]> + Send + 'async_trait, ) -> Pin<Box<dyn Future<Output = Result<Option<Bytes>, ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Retrieves the value associated with a key. Read more
Source§

fn get_multi<'life0, 'life1, 'async_trait>( &'life0 self, keys: &'life1 [Bytes], ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<Bytes>>, ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, GrpcClient: 'async_trait,

Retrieves multiple keys in a single request. Read more
Source§

fn delete<'life0, 'async_trait>( &'life0 self, key: impl AsRef<[u8]> + Send + 'async_trait, ) -> Pin<Box<dyn Future<Output = Result<(), ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Deletes a key-value pair with strong consistency. Read more
Source§

fn compare_and_swap<'life0, 'async_trait>( &'life0 self, key: impl AsRef<[u8]> + Send + 'async_trait, expected_value: Option<impl AsRef<[u8]> + Send + 'async_trait>, new_value: impl AsRef<[u8]> + Send + 'async_trait, ) -> Pin<Box<dyn Future<Output = Result<bool, ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Atomically compare and swap a key’s value Read more
Source§

fn list_members<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Vec<NodeMeta>, ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Lists all cluster members with metadata Read more
Source§

fn get_leader_id<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Option<u32>, ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Get the current leader ID Read more
Source§

fn get_multi_with_policy<'life0, 'life1, 'async_trait>( &'life0 self, keys: &'life1 [Bytes], consistency_policy: Option<ReadConsistencyPolicy>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Option<Bytes>>, ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, GrpcClient: 'async_trait,

Retrieves multiple keys with explicit consistency policy Read more
Source§

fn get_linearizable<'life0, 'async_trait>( &'life0 self, key: impl AsRef<[u8]> + Send + 'async_trait, ) -> Pin<Box<dyn Future<Output = Result<Option<Bytes>, ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Retrieves a key with linearizable (strong) consistency Read more
Source§

fn get_lease<'life0, 'async_trait>( &'life0 self, key: impl AsRef<[u8]> + Send + 'async_trait, ) -> Pin<Box<dyn Future<Output = Result<Option<Bytes>, ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Retrieves a key with lease-based consistency Read more
Source§

fn get_eventual<'life0, 'async_trait>( &'life0 self, key: impl AsRef<[u8]> + Send + 'async_trait, ) -> Pin<Box<dyn Future<Output = Result<Option<Bytes>, ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Retrieves a key with eventual consistency Read more
Source§

fn scan_prefix<'life0, 'async_trait>( &'life0 self, prefix: impl AsRef<[u8]> + Send + 'async_trait, ) -> Pin<Box<dyn Future<Output = Result<ScanResult, ClientApiError>> + Send + 'async_trait>>
where 'life0: 'async_trait, GrpcClient: 'async_trait,

Returns all (key, value) pairs whose key starts with prefix, plus a revision that anchors watch event deduplication. Read more
Source§

impl Clone for GrpcClient

Source§

fn clone(&self) -> GrpcClient

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

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> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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