1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use crate::core::ics03_connection::connection::ConnectionEnd;
use crate::core::ics03_connection::context::ConnectionReader;
use crate::core::ics03_connection::error::Error;
use crate::core::ics03_connection::msgs::ConnectionMsg;
use crate::core::ics24_host::identifier::ConnectionId;
use crate::handler::HandlerOutput;
pub mod conn_open_ack;
pub mod conn_open_confirm;
pub mod conn_open_init;
pub mod conn_open_try;
#[derive(Clone, Debug)]
pub enum ConnectionIdState {
Generated,
Reused,
}
#[derive(Clone, Debug)]
pub struct ConnectionResult {
pub connection_id: ConnectionId,
pub connection_id_state: ConnectionIdState,
pub connection_end: ConnectionEnd,
}
pub fn dispatch<Ctx>(
ctx: &Ctx,
msg: ConnectionMsg,
) -> Result<HandlerOutput<ConnectionResult>, Error>
where
Ctx: ConnectionReader,
{
match msg {
ConnectionMsg::ConnectionOpenInit(msg) => conn_open_init::process(ctx, msg),
ConnectionMsg::ConnectionOpenTry(msg) => conn_open_try::process(ctx, *msg),
ConnectionMsg::ConnectionOpenAck(msg) => conn_open_ack::process(ctx, *msg),
ConnectionMsg::ConnectionOpenConfirm(msg) => conn_open_confirm::process(ctx, msg),
}
}