Struct vls_frontend::external_persist::lss::Client
source · pub struct Client { /* private fields */ }Expand description
An external persistence implementation using lightning-storage-server.
Implementations§
source§impl Client
impl Client
sourcepub async fn get_server_pubkey(uri: &str) -> Result<PublicKey, Error>
pub async fn get_server_pubkey(uri: &str) -> Result<PublicKey, Error>
Get the server’s public key.
This will be needed later when calling new. It is also used in the
signer to create a shared secret with the server.
In a production system, this should be verified and cached.
sourcepub async fn new(
uri: &str,
server_public_key: &PublicKey,
auth: LssAuth
) -> Result<Self, Error>
pub async fn new( uri: &str, server_public_key: &PublicKey, auth: LssAuth ) -> Result<Self, Error>
Create a new client.
uri is the URI of the server.
server_public_key is the server’s public key as previously obtained via get_server_pubkey.
auth is the authentication token to use. It includes the client public key.
Note that the client public key is used to locate the client’s data on the server.
Trait Implementations§
source§impl ExternalPersist for Client
impl ExternalPersist for Client
source§fn put<'life0, 'life1, 'async_trait>(
&'life0 self,
mutations: Mutations,
client_hmac: &'life1 [u8]
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn put<'life0, 'life1, 'async_trait>( &'life0 self, mutations: Mutations, client_hmac: &'life1 [u8] ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,
Store the mutations.
Returns the server hmacs, proving that each backend server persisted the mutations.
If a server did not respond in time, their HMAC will be empty.
TODO multiple servers
source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key_prefix: String,
nonce: &'life1 [u8]
) -> Pin<Box<dyn Future<Output = Result<(Mutations, Vec<u8>), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>( &'life0 self, key_prefix: String, nonce: &'life1 [u8] ) -> Pin<Box<dyn Future<Output = Result<(Mutations, Vec<u8>), Error>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,
Get the full state from a quorum of backend servers and the matching server HMACs.
Unavailable servers will have an empty HMAC. Read more
Auto Trait Implementations§
impl !RefUnwindSafe for Client
impl Send for Client
impl Sync for Client
impl Unpin for Client
impl !UnwindSafe for Client
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request