Struct sn_client::api::Client

source ·
pub struct Client { /* private fields */ }
Expand description

Client object

Implementations§

source§

impl Client

source

pub fn sign(&self, data: &[u8]) -> Signature

Sign data using the client keypair

source

pub async fn send_signed_cmd( &self, dst_address: XorName, client_pk: PublicKey, serialised_cmd: Bytes, signature: Signature, is_spend_cmd: bool ) -> Result<()>

Send a signed DataCmd to the network. This is part of the public API, for the user to provide the serialised and already signed cmd.

source

pub async fn send_cmd(&self, cmd: DataCmd) -> Result<()>

Public API to send a DataCmd to the network. The provided DataCmd is serialised and signed with the keypair this Client instance has been setup with.

source§

impl Client

source

pub async fn read_bytes(&self, address: XorName) -> Result<Bytes>

Reads Bytes from the network, whose contents are contained within on or more chunks.

source

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.

source

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.

source

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.

source

pub async fn upload(&self, bytes: Bytes) -> Result<XorName>

Directly writes Bytes to the network in the form of immutable chunks, without any batching.

source

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.

source

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

source

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.

source

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.

source

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.

source

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

source

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.

source

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.

source

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

source

pub async fn get_register(&self, address: Address) -> Result<Register>

Get the entire Register from the Network

source

pub async fn read_register( &self, address: Address ) -> Result<BTreeSet<(EntryHash, Entry)>>

Get the latest entry (or entries if branching)

source

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

source

pub async fn get_register_owner(&self, address: Address) -> Result<User>

Get the owner of a Register.

source

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.

source

pub async fn get_register_policy(&self, address: Address) -> Result<Policy>

Get the Policy of a Register.

source§

impl Client

source

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.

source

pub async fn spent_proof_shares( &self, public_key: PublicKey ) -> Result<Vec<SpentProofShare>>

Return the set of spent proof shares if the provided DBC’s public key is spent

source§

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.

source

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.

source

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

source

pub fn public_key(&self) -> PublicKey

Return the client’s PublicKey.

source

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.

source

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.

source

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.

source

pub fn builder() -> ClientBuilder

Create a builder to instantiate a Client

Trait Implementations§

source§

impl Clone for Client

source§

fn clone(&self) -> Client

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for Client

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. 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> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

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 Twhere U: From<T>,

const: unstable · 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.

§

impl<T> Pipe for Twhere T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,

Borrows 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,

Mutably borrows 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,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

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,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>(&'a mut self, func: impl FnOnce(&'a mut T) -> R) -> Rwhere Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,

Immutable access to the 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,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,

Immutable access to the 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,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .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,

Calls .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,

Calls .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,

Calls .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,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for Twhere T: Clone,

§

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
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
§

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

§

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