pub struct ClientContext<M> { /* private fields */ }
Expand description
A Client context for a ClientModule
M
Client modules can interact with the whole client through this struct.
Implementations§
source§impl<M> ClientContext<M>where
M: ClientModule,
impl<M> ClientContext<M>where
M: ClientModule,
sourcepub fn self_ref<'s>(&'s self) -> ClientContextSelfRef<'s, M>
pub fn self_ref<'s>(&'s self) -> ClientContextSelfRef<'s, M>
Get a reference back to client module from the Self
It’s often necessary for a client module to “move self”
by-value, especially due to async lifetimes issues.
Clients usually work with &mut self
, which can’t really
work in such context.
Fortunately ClientContext
is Clone
and `Send, and
can be used to recover the reference to the module at later
time.
sourcepub fn global_api(&self) -> DynGlobalApi
pub fn global_api(&self) -> DynGlobalApi
Get a reference to a global Api handle
pub fn decoders(&self) -> ModuleDecoderRegistry
pub fn input_from_dyn<'i>( &self, input: &'i DynInput, ) -> Option<&'i <M::Common as ModuleCommon>::Input>
pub fn output_from_dyn<'o>( &self, output: &'o DynOutput, ) -> Option<&'o <M::Common as ModuleCommon>::Output>
pub fn map_dyn<'s, 'i, 'o, I>(
&'s self,
typed: impl IntoIterator<Item = I> + 'i,
) -> impl Iterator<Item = <I as IntoDynInstance>::DynType> + 'owhere
I: IntoDynInstance,
'i: 'o,
's: 'o,
sourcepub fn make_dyn_output(
&self,
output: <M::Common as ModuleCommon>::Output,
) -> DynOutput
pub fn make_dyn_output( &self, output: <M::Common as ModuleCommon>::Output, ) -> DynOutput
Turn a typed output into a dyn version
sourcepub fn make_dyn_input(
&self,
input: <M::Common as ModuleCommon>::Input,
) -> DynInput
pub fn make_dyn_input( &self, input: <M::Common as ModuleCommon>::Input, ) -> DynInput
Turn a typed input into a dyn version
sourcepub fn make_dyn<I>(&self, typed: I) -> <I as IntoDynInstance>::DynTypewhere
I: IntoDynInstance,
pub fn make_dyn<I>(&self, typed: I) -> <I as IntoDynInstance>::DynTypewhere
I: IntoDynInstance,
Turn a typed
into a dyn version
sourcepub fn make_client_output<O, S>(
&self,
output: ClientOutput<O, S>,
) -> ClientOutputwhere
O: IntoDynInstance<DynType = DynOutput> + 'static,
S: IntoDynInstance<DynType = DynState> + 'static,
pub fn make_client_output<O, S>(
&self,
output: ClientOutput<O, S>,
) -> ClientOutputwhere
O: IntoDynInstance<DynType = DynOutput> + 'static,
S: IntoDynInstance<DynType = DynState> + 'static,
Turn a typed ClientOutput
into a dyn version
sourcepub fn make_client_input<O, S>(&self, input: ClientInput<O, S>) -> ClientInputwhere
O: IntoDynInstance<DynType = DynInput> + 'static,
S: IntoDynInstance<DynType = DynState> + 'static,
pub fn make_client_input<O, S>(&self, input: ClientInput<O, S>) -> ClientInputwhere
O: IntoDynInstance<DynType = DynInput> + 'static,
S: IntoDynInstance<DynType = DynState> + 'static,
Turn a typed ClientInput
into a dyn version
pub fn make_dyn_state<S>(&self, sm: S) -> DynStatewhere
S: IState + 'static,
sourcepub async fn module_autocommit<'s, 'dbtx, F, T, E>(
&'s self,
tx_fn: F,
max_attempts: Option<usize>,
) -> Result<T, AutocommitError<E>>where
for<'r, 'o> F: Fn(&'r mut ClientDbTxContext<'r, 'o, M>, PhantomBound<'dbtx, 'o>) -> BoxFuture<'r, Result<T, E>> + MaybeSync,
's: 'dbtx,
pub async fn module_autocommit<'s, 'dbtx, F, T, E>(
&'s self,
tx_fn: F,
max_attempts: Option<usize>,
) -> Result<T, AutocommitError<E>>where
for<'r, 'o> F: Fn(&'r mut ClientDbTxContext<'r, 'o, M>, PhantomBound<'dbtx, 'o>) -> BoxFuture<'r, Result<T, E>> + MaybeSync,
's: 'dbtx,
An Database::autocommit
on module’s own database partition
pub async fn module_autocommit_2<'s, 'dbtx, F, T>(
&'s self,
tx_fn: F,
max_attempts: Option<usize>,
) -> Result<T>where
for<'r, 'o> F: Fn(&'r mut ClientDbTxContext<'r, 'o, M>, PhantomBound<'dbtx, 'o>) -> BoxFuture<'r, Result<T>> + MaybeSync,
's: 'dbtx,
sourcepub async fn finalize_and_submit_transaction<F, Meta>(
&self,
operation_id: OperationId,
operation_type: &str,
operation_meta: F,
tx_builder: TransactionBuilder,
) -> Result<(TransactionId, Vec<OutPoint>)>
pub async fn finalize_and_submit_transaction<F, Meta>( &self, operation_id: OperationId, operation_type: &str, operation_meta: F, tx_builder: TransactionBuilder, ) -> Result<(TransactionId, Vec<OutPoint>)>
sourcepub async fn transaction_updates(
&self,
operation_id: OperationId,
) -> TransactionUpdates
pub async fn transaction_updates( &self, operation_id: OperationId, ) -> TransactionUpdates
sourcepub async fn await_primary_module_outputs(
&self,
operation_id: OperationId,
outputs: Vec<OutPoint>,
) -> Result<Amount>
pub async fn await_primary_module_outputs( &self, operation_id: OperationId, outputs: Vec<OutPoint>, ) -> Result<Amount>
pub async fn get_operation( &self, operation_id: OperationId, ) -> Result<OperationLogEntry>
pub fn global_db(&self) -> Database
pub fn module_db(&self) -> &Database
pub async fn has_active_states(&self, op_id: OperationId) -> bool
pub async fn operation_exists(&self, op_id: OperationId) -> bool
pub async fn get_own_active_states(&self) -> Vec<(M::States, ActiveStateMeta)>
pub async fn get_config(&self) -> ClientConfig
sourcepub async fn get_invite_code(&self) -> InviteCode
pub async fn get_invite_code(&self) -> InviteCode
Returns an invite code for the federation that points to an arbitrary guardian server for fetching the config
pub fn get_internal_payment_markers(&self) -> Result<(PublicKey, u64)>
sourcepub async fn manual_operation_start(
&self,
operation_id: OperationId,
op_type: &str,
operation_meta: impl Serialize + Debug,
sms: Vec<DynState>,
) -> Result<()>
pub async fn manual_operation_start( &self, operation_id: OperationId, op_type: &str, operation_meta: impl Serialize + Debug, sms: Vec<DynState>, ) -> Result<()>
This method starts n state machines with given operation id without a corresponding transaction
pub async fn manual_operation_start_dbtx<C: ClientModule>( &self, dbtx: &mut ClientDbTxContext<'_, '_, C>, operation_id: OperationId, op_type: &str, operation_meta: impl Serialize + Debug, sms: Vec<DynState>, ) -> Result<()>
Trait Implementations§
source§impl<M> Clone for ClientContext<M>
impl<M> Clone for ClientContext<M>
Auto Trait Implementations§
impl<M> Freeze for ClientContext<M>
impl<M> !RefUnwindSafe for ClientContext<M>
impl<M> Send for ClientContext<M>where
M: Send,
impl<M> Sync for ClientContext<M>where
M: Sync,
impl<M> Unpin for ClientContext<M>where
M: Unpin,
impl<M> !UnwindSafe for ClientContext<M>
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§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.source§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.source§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.source§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.source§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.source§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.source§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.source§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.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> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§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 moresource§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 moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§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.source§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.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.