Skip to main content

mm1_test_rt/rt/
query.rs

1use std::time::Duration;
2
3use futures::future::BoxFuture;
4use mm1_address::address::Address;
5use mm1_address::pool::Lease as AddressLease;
6use mm1_address::subnet::NetAddress;
7use mm1_common::errors::error_of::ErrorOf;
8use mm1_common::types::Never;
9use mm1_core::context::{BindArgs, BindErrorKind, ForkErrorKind, RecvErrorKind, SendErrorKind};
10use mm1_core::envelope::Envelope;
11use mm1_proto_system::{SpawnErrorKind, StartErrorKind, WatchRef};
12use tokio::sync::oneshot;
13
14use super::TestContext;
15use crate::rt::TaskKey;
16
17#[derive(derive_more::Debug)]
18pub struct Spawn<R> {
19    pub task_key: TaskKey,
20    pub link:     bool,
21
22    pub(crate) runnable: R,
23
24    #[debug(skip)]
25    pub(crate) outcome_tx: oneshot::Sender<Result<Address, ErrorOf<SpawnErrorKind>>>,
26}
27
28#[derive(derive_more::Debug)]
29pub struct Start<R> {
30    pub task_key:      TaskKey,
31    pub link:          bool,
32    pub start_timeout: Duration,
33
34    pub(crate) runnable: R,
35
36    #[debug(skip)]
37    pub(crate) outcome_tx: oneshot::Sender<Result<Address, ErrorOf<StartErrorKind>>>,
38}
39
40#[derive(derive_more::Debug)]
41pub struct Bind<A = NetAddress> {
42    pub task_key: TaskKey,
43    pub args:     BindArgs<A>,
44
45    #[debug(skip)]
46    pub(crate) outcome_tx: oneshot::Sender<Result<(), ErrorOf<BindErrorKind>>>,
47}
48
49#[derive(derive_more::Debug)]
50pub struct InitDone {
51    pub task_key: TaskKey,
52    pub address:  Address,
53
54    #[debug(skip)]
55    pub(crate) outcome_tx: oneshot::Sender<()>,
56}
57
58#[derive(derive_more::Debug)]
59pub struct Recv {
60    pub task_key: TaskKey,
61
62    #[debug(skip)]
63    pub(crate) outcome_tx: oneshot::Sender<Result<Envelope, ErrorOf<RecvErrorKind>>>,
64}
65
66#[derive(derive_more::Debug)]
67pub struct RecvClose {
68    pub task_key: TaskKey,
69
70    #[debug(skip)]
71    pub(crate) outcome_tx: oneshot::Sender<()>,
72}
73
74#[derive(derive_more::Debug)]
75pub struct Fork<R> {
76    pub task_key: TaskKey,
77
78    #[debug(skip)]
79    pub(crate) outcome_tx: oneshot::Sender<Result<TestContext<R>, ErrorOf<ForkErrorKind>>>,
80}
81
82#[derive(derive_more::Debug)]
83pub struct ForkRun {
84    pub task_key:      TaskKey,
85    pub address_lease: Option<AddressLease>,
86
87    #[debug(skip)]
88    pub(crate) task_fut: BoxFuture<'static, ()>,
89
90    #[debug(skip)]
91    pub(crate) outcome_tx: oneshot::Sender<()>,
92}
93
94#[derive(derive_more::Debug)]
95pub struct PendingTask {
96    pub task_key:        TaskKey,
97    pub address_lease:   Option<AddressLease>,
98    #[debug(skip)]
99    pub(crate) task_fut: BoxFuture<'static, ()>,
100}
101
102#[derive(derive_more::Debug)]
103pub struct Quit {
104    pub task_key: TaskKey,
105    pub result:   Result<(), Box<dyn std::error::Error + Send + Sync + 'static>>,
106
107    #[debug(skip)]
108    #[allow(dead_code)]
109    pub(crate) outcome_tx: oneshot::Sender<Never>,
110}
111
112#[derive(derive_more::Debug)]
113pub struct Tell {
114    pub task_key: TaskKey,
115    pub to:       Address,
116    pub envelope: Envelope,
117
118    #[debug(skip)]
119    pub(crate) outcome_tx: oneshot::Sender<Result<(), ErrorOf<SendErrorKind>>>,
120}
121
122#[derive(derive_more::Debug)]
123pub struct Watch {
124    pub task_key: TaskKey,
125    pub peer:     Address,
126
127    #[debug(skip)]
128    pub(crate) outcome_tx: oneshot::Sender<WatchRef>,
129}
130
131#[derive(derive_more::Debug)]
132pub struct Unwatch {
133    pub task_key:  TaskKey,
134    pub watch_ref: WatchRef,
135
136    #[debug(skip)]
137    pub(crate) outcome_tx: oneshot::Sender<()>,
138}
139
140#[derive(derive_more::Debug)]
141pub struct Link {
142    pub task_key: TaskKey,
143
144    pub peer:              Address,
145    #[debug(skip)]
146    pub(crate) outcome_tx: oneshot::Sender<()>,
147}
148
149#[derive(derive_more::Debug)]
150pub struct Unlink {
151    pub task_key: TaskKey,
152
153    pub peer:              Address,
154    #[debug(skip)]
155    pub(crate) outcome_tx: oneshot::Sender<()>,
156}
157
158#[derive(derive_more::Debug)]
159pub struct SetTrapExit {
160    pub task_key: TaskKey,
161
162    pub enable:            bool,
163    #[debug(skip)]
164    pub(crate) outcome_tx: oneshot::Sender<()>,
165}
166
167#[derive(derive_more::Debug)]
168pub struct Exit {
169    pub task_key: TaskKey,
170
171    pub peer:              Address,
172    #[debug(skip)]
173    pub(crate) outcome_tx: oneshot::Sender<bool>,
174}
175
176#[derive(derive_more::Debug)]
177pub struct Kill {
178    pub task_key: TaskKey,
179
180    pub peer:              Address,
181    #[debug(skip)]
182    pub(crate) outcome_tx: oneshot::Sender<bool>,
183}