Struct golem_rust::InfallibleTransaction

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

InfallibleTransaction is a sequence of operations that are executed in a way that if any of the operations or the underlying Golem executor fails, the whole transaction is going to be retried.

In addition to that, user level failures (represented by the Result::Err value of an operation) lead to performing the compensation actions of each already performed operation in reverse order.

Fatal errors (panic) and external executor failures are currently cannot perform the rollback actions.

Implementations§

source§

impl InfallibleTransaction

source

pub fn execute<OpIn: Clone + 'static, OpOut: Clone + 'static, OpErr: Debug + Clone + 'static>( &mut self, operation: impl Operation<In = OpIn, Out = OpOut, Err = OpErr> + 'static, input: OpIn, ) -> OpOut

source

pub fn retry(&mut self)

Stop executing the transaction and retry from the beginning, after executing the compensation actions

Trait Implementations§

source§

impl<Err: Debug + Clone + 'static> Transaction<Err> for InfallibleTransaction

source§

fn execute<OpIn: Clone + 'static, OpOut: Clone + 'static>( &mut self, operation: impl Operation<In = OpIn, Out = OpOut, Err = Err> + 'static, input: OpIn, ) -> Result<OpOut, Err>

source§

fn fail(&mut self, error: Err) -> Result<(), Err>

source§

fn run<Out>( f: impl FnOnce(&mut Self) -> Result<Out, Err>, ) -> TransactionResult<Out, Err>

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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<T> TupleOrUnit<()> for T

source§

fn into(self)