pub struct Client { /* private fields */ }
Expand description
Client object
Implementations§
source§impl Client
impl Client
source§impl Client
impl Client
sourcepub async fn read_bytes(&self, address: XorName) -> Result<Bytes>
pub async fn read_bytes(&self, address: XorName) -> Result<Bytes>
Reads Bytes
from the network, whose contents are contained within on or more chunks.
sourcepub async fn read_bytes_from_replicas(
&self,
name: XorName,
replicas: &[usize]
) -> Result<Vec<QueriedDataReplicas>>
pub async fn read_bytes_from_replicas( &self, name: XorName, replicas: &[usize] ) -> Result<Vec<QueriedDataReplicas>>
Reads Bytes
from the network, querying each of the data
replicas which match any of the indexes provided.
sourcepub async fn read_from(
&self,
address: XorName,
position: usize,
length: usize
) -> Result<Bytes>where
Self: Sized,
pub async fn read_from( &self, address: XorName, position: usize, length: usize ) -> Result<Bytes>where Self: Sized,
Read bytes from the network. The contents are spread across multiple chunks in the network. This function invokes the self-encryptor and returns the data that was initially stored.
Takes position
and length
arguments which specify the start position
and the length of bytes to be read.
Passing 0
to position reads the data from the beginning,
and the length
is just an upper limit.
sourcepub fn chunk_bytes(bytes: Bytes) -> Result<(XorName, Vec<Chunk>)>
pub fn chunk_bytes(bytes: Bytes) -> Result<(XorName, Vec<Chunk>)>
Tries to chunk the bytes, returning an address and chunks, without storing anything to network.
sourcepub async fn upload(&self, bytes: Bytes) -> Result<XorName>
pub async fn upload(&self, bytes: Bytes) -> Result<XorName>
Directly writes Bytes
to the network in the
form of immutable chunks, without any batching.
sourcepub async fn upload_and_verify(&self, bytes: Bytes) -> Result<XorName>
pub async fn upload_and_verify(&self, bytes: Bytes) -> Result<XorName>
Directly writes Bytes
to the network in the
form of immutable chunks, without any batching.
It also attempts to verify that all the data was uploaded to the network before returning.
It does this via running read_bytes
with each chunk with query_timeout
set.
sourcepub fn calculate_address(bytes: Bytes) -> Result<XorName>
pub fn calculate_address(bytes: Bytes) -> Result<XorName>
Calculates a LargeFile’s/SmallFile’s address from self encrypted chunks, without storing them onto the network.
source§impl Client
impl Client
sourcepub async fn send_query(&self, query: DataQuery) -> Result<QueryResponse>
pub async fn send_query(&self, query: DataQuery) -> Result<QueryResponse>
Send a Query to the network and await a response. Queries are automatically retried using exponential backoff if the timeout is hit.
sourcepub async fn send_query_without_retry(
&self,
query: DataQuery
) -> Result<QueryResponse>
pub async fn send_query_without_retry( &self, query: DataQuery ) -> Result<QueryResponse>
Send a Query to the network and await a response. Queries are not retried if the timeout is hit.
sourcepub async fn send_signed_query(
&self,
query: DataQuery,
query_index: usize,
client_pk: PublicKey,
serialised_query: Bytes,
signature: Signature
) -> Result<QueryResponse>
pub async fn send_signed_query( &self, query: DataQuery, query_index: usize, client_pk: PublicKey, serialised_query: Bytes, signature: Signature ) -> Result<QueryResponse>
Send a Query to the network and await a response. This is part of a public API, for the user to provide the serialised and already signed query.
sourcepub async fn send_query_to_replicas(
&self,
query: DataQuery,
replicas: &[usize]
) -> Result<Vec<(usize, Result<QueryResponse>)>, Error>
pub async fn send_query_to_replicas( &self, query: DataQuery, replicas: &[usize] ) -> Result<Vec<(usize, Result<QueryResponse>)>, Error>
Send a Query to the network and await a response.
Queries are sent once per each replica, i.e. it sends the query targeting
the replicas (using node_index
) matching the indexes provided.
source§impl Client
impl Client
sourcepub async fn publish_register_ops(
&self,
wal: RegisterWriteAheadLog
) -> Result<()>
pub async fn publish_register_ops( &self, wal: RegisterWriteAheadLog ) -> Result<()>
Publish all register mutation operations in a WAL to the network Incrementing the WAL index as successful writes are sent out. Stops at the first error. Starts publishing from the index when called again with the same WAL.
sourcepub async fn create_register(
&self,
name: XorName,
tag: u64,
policy: Policy
) -> Result<(Address, RegisterWriteAheadLog)>
pub async fn create_register( &self, name: XorName, tag: u64, policy: Policy ) -> Result<(Address, RegisterWriteAheadLog)>
Creates a Register which can then be written to.
Returns a write ahead log (WAL) of register operations, note that the changes are not uploaded to the
network until the WAL is published with publish_register_ops
A tag must be supplied. A xorname must be supplied, this can be random or deterministic as per your apps needs.
sourcepub async fn write_to_local_register(
&self,
address: Address,
entry: Entry,
children: BTreeSet<EntryHash>
) -> Result<(EntryHash, RegisterWriteAheadLog)>
pub async fn write_to_local_register( &self, address: Address, entry: Entry, children: BTreeSet<EntryHash> ) -> Result<(EntryHash, RegisterWriteAheadLog)>
Write to Register
Returns a write ahead log (WAL) of register operations, note that the changes are not uploaded to the
network until the WAL is published with publish_register_ops
sourcepub async fn get_register(&self, address: Address) -> Result<Register>
pub async fn get_register(&self, address: Address) -> Result<Register>
Get the entire Register from the Network
sourcepub async fn read_register(
&self,
address: Address
) -> Result<BTreeSet<(EntryHash, Entry)>>
pub async fn read_register( &self, address: Address ) -> Result<BTreeSet<(EntryHash, Entry)>>
Get the latest entry (or entries if branching)
sourcepub async fn get_register_entry(
&self,
address: Address,
hash: EntryHash
) -> Result<Entry>
pub async fn get_register_entry( &self, address: Address, hash: EntryHash ) -> Result<Entry>
Get an entry from a Register on the Network by its hash
sourcepub async fn get_register_owner(&self, address: Address) -> Result<User>
pub async fn get_register_owner(&self, address: Address) -> Result<User>
Get the owner of a Register.
sourcepub async fn get_register_permissions_for_user(
&self,
address: Address,
user: User
) -> Result<Permissions>
pub async fn get_register_permissions_for_user( &self, address: Address, user: User ) -> Result<Permissions>
Get the set of Permissions in a Register for a specific user.
sourcepub async fn get_register_policy(&self, address: Address) -> Result<Policy>
pub async fn get_register_policy(&self, address: Address) -> Result<Policy>
Get the Policy of a Register.
source§impl Client
impl Client
sourcepub async fn spend_dbc(
&self,
public_key: PublicKey,
tx: DbcTransaction,
spent_proofs: BTreeSet<SpentProof>,
spent_transactions: BTreeSet<DbcTransaction>
) -> Result<()>
pub async fn spend_dbc( &self, public_key: PublicKey, tx: DbcTransaction, spent_proofs: BTreeSet<SpentProof>, spent_transactions: BTreeSet<DbcTransaction> ) -> Result<()>
Spend a DBC’s public key.
It’s possible that the section processing the spend request will not be aware of the section keys used to sign the spent proofs. If this is the case, the network will return a particular error and we will retry. There are several retries because there could be several keys the section is not aware of, but it only returns back the first one it encounters.
When the request is resubmitted, it gets sent along with a proof chain and a signed SAP that the section can use to update itself.
Return the set of spent proof shares if the provided DBC’s public key is spent
source§impl Client
impl Client
Easily manage connections to/from The Safe Network with the client and its APIs.
Use a random client for read-only or one-time operations.
Supply an existing, SecretKey
which holds a SafeCoin
balance to be able to perform
write operations.
sourcepub async fn connect(&self) -> Result<()>
pub async fn connect(&self) -> Result<()>
Bootstrap this client to the network.
In case of an existing SecretKey the client will attempt to retrieve the history of the key’s balance in order to be ready for any token operations.
sourcepub fn keypair(&self) -> &Keypair
pub fn keypair(&self) -> &Keypair
Return the client’s keypair.
Useful for retrieving the PublicKey
or KeyPair
in the event you need to sign something
sourcepub fn public_key(&self) -> PublicKey
pub fn public_key(&self) -> PublicKey
Return the client’s PublicKey
.
sourcepub fn dbc_owner(&self) -> &Owner
pub fn dbc_owner(&self) -> &Owner
Return the client’s DBC owner, which will be a secret key.
This can then be used to sign output DBCs during a DBC reissue.
sourcepub async fn is_known_section_key(&self, section_key: &PublicKey) -> bool
pub async fn is_known_section_key(&self, section_key: &PublicKey) -> bool
Check if the provided public key is a known section key based on our current knowledge of the network and sections chains.
sourcepub async fn section_tree(&self) -> SectionTree
pub async fn section_tree(&self) -> SectionTree
SectionTree used to bootstrap the client on the network.
This is updated by the client as it receives Anti-Entropy/update messages from the network.
Any user of this API is responsible for caching it so it can use it for any new Client
instance not needing to obtain all this information from the network all over again.
sourcepub fn builder() -> ClientBuilder
pub fn builder() -> ClientBuilder
Create a builder to instantiate a Client
Trait Implementations§
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§
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
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>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.