pub struct AsyncLifecycleContext<'storage, A, R, P>where
A: AggregateRoot + Send + 'storage,
R: AsyncRepository<Aggregate = A> + Send + 'storage,
P: AsyncDomainEventPublisher<Event = <A as AggregateRoot>::Event> + Send + 'storage,
<A as AggregateRoot>::Event: Send + Sync + 'storage,
<R as AsyncRepository>::Error: Send + 'storage,
<P as AsyncDomainEventPublisher>::Error: Send + 'storage,{ /* private fields */ }Expand description
English:
Coordinates asynchronous aggregate persistence and event dispatch. Each operation may be attempted once; dropping an in-progress future consumes that attempt.
日本語:
非同期の集約永続化とイベント配信を調整します。各操作は一度だけ試行でき、実行中の future を破棄すると試行は消費済みになります。
Implementations§
Source§impl<'storage, A, R, P> AsyncLifecycleContext<'storage, A, R, P>where
A: AggregateRoot + Send + 'storage,
R: AsyncRepository<Aggregate = A> + Send + 'storage,
P: AsyncDomainEventPublisher<Event = <A as AggregateRoot>::Event> + Send + 'storage,
<A as AggregateRoot>::Event: Send + Sync + 'storage,
<R as AsyncRepository>::Error: Send + 'storage,
<P as AsyncDomainEventPublisher>::Error: Send + 'storage,
impl<'storage, A, R, P> AsyncLifecycleContext<'storage, A, R, P>where
A: AggregateRoot + Send + 'storage,
R: AsyncRepository<Aggregate = A> + Send + 'storage,
P: AsyncDomainEventPublisher<Event = <A as AggregateRoot>::Event> + Send + 'storage,
<A as AggregateRoot>::Event: Send + Sync + 'storage,
<R as AsyncRepository>::Error: Send + 'storage,
<P as AsyncDomainEventPublisher>::Error: Send + 'storage,
Sourcepub fn new(
aggregate: &'storage mut A,
repository: &'storage mut R,
publisher: &'storage mut P,
) -> AsyncLifecycleContext<'storage, A, R, P>
pub fn new( aggregate: &'storage mut A, repository: &'storage mut R, publisher: &'storage mut P, ) -> AsyncLifecycleContext<'storage, A, R, P>
English:
Creates a lifecycle context borrowing the aggregate, repository, and publisher mutably.
日本語:
集約、リポジトリ、パブリッシャーを可変借用するライフサイクルコンテキストを作成します。
Sourcepub fn save<'ctx>(
&'ctx mut self,
) -> Pin<Box<dyn Future<Output = Result<(), LifecycleOperationError<<R as AsyncRepository>::Error>>> + Send + 'ctx>>
pub fn save<'ctx>( &'ctx mut self, ) -> Pin<Box<dyn Future<Output = Result<(), LifecycleOperationError<<R as AsyncRepository>::Error>>> + Send + 'ctx>>
English:
Attempts repository persistence once; adapter errors are returned and the attempt cannot be retried.
日本語:
リポジトリへの保存を一度試行します。アダプターエラーを返し、再試行はできません。
Sourcepub fn dispatch<'ctx>(
&'ctx mut self,
) -> Pin<Box<dyn Future<Output = Result<(), LifecycleOperationError<<P as AsyncDomainEventPublisher>::Error>>> + Send + 'ctx>>where
'storage: 'ctx,
A: Send + 'ctx,
P: Send + 'ctx,
<A as AggregateRoot>::Event: Send + Sync + 'ctx,
<P as AsyncDomainEventPublisher>::Error: Send + 'ctx,
pub fn dispatch<'ctx>(
&'ctx mut self,
) -> Pin<Box<dyn Future<Output = Result<(), LifecycleOperationError<<P as AsyncDomainEventPublisher>::Error>>> + Send + 'ctx>>where
'storage: 'ctx,
A: Send + 'ctx,
P: Send + 'ctx,
<A as AggregateRoot>::Event: Send + Sync + 'ctx,
<P as AsyncDomainEventPublisher>::Error: Send + 'ctx,
English:
Attempts event dispatch once; adapter errors are returned and the attempt cannot be retried.
日本語:
イベント配信を一度試行します。アダプターエラーを返し、再試行はできません。
Sourcepub fn complete(self) -> Result<(), LifecycleCompletionError>
pub fn complete(self) -> Result<(), LifecycleCompletionError>
English:
Consumes the context and succeeds only when both save and dispatch succeeded.
日本語:
コンテキストを消費し、保存と配信の両方が成功した場合にのみ成功します。