bullet_exchange_interface/message/
mod.rs1use crate::define_enum;
13
14mod admin;
15mod keeper;
16mod public;
17mod user;
18mod vault;
19
20pub use self::admin::*;
21pub use self::keeper::*;
22pub use self::public::*;
23pub use self::user::*;
24pub use self::vault::*;
25
26define_enum! {
27 #[non_exhaustive]
29 enum CallMessage<Address> {
30 User(UserAction<Address>) = 0,
34
35 Vault(VaultAction<Address>) = 1,
39
40 Keeper(KeeperAction<Address>) = 2,
44
45 Public(PublicAction<Address>) = 3,
49
50 Admin(AdminAction<Address>) = 4,
54 }
55}
56
57impl<Address> CallMessage<Address> {
58 pub fn msg_type(&self) -> String {
59 match self {
60 Self::User(x) => format!("User/{}", x.as_ref()),
61 Self::Vault(x) => format!("Vault/{}", x.as_ref()),
62 Self::Keeper(x) => format!("Keeper/{}", x.as_ref()),
63 Self::Public(x) => format!("Public/{}", x.as_ref()),
64 Self::Admin(x) => format!("Admin/{}", x.as_ref()),
65 }
66 }
67}
68
69impl<Address> From<UserAction<Address>> for CallMessage<Address> {
70 fn from(v: UserAction<Address>) -> Self {
71 Self::User(v)
72 }
73}
74impl<Address> From<VaultAction<Address>> for CallMessage<Address> {
75 fn from(v: VaultAction<Address>) -> Self {
76 Self::Vault(v)
77 }
78}
79impl<Address> From<KeeperAction<Address>> for CallMessage<Address> {
80 fn from(v: KeeperAction<Address>) -> Self {
81 Self::Keeper(v)
82 }
83}
84impl<Address> From<PublicAction<Address>> for CallMessage<Address> {
85 fn from(v: PublicAction<Address>) -> Self {
86 Self::Public(v)
87 }
88}
89impl<Address> From<AdminAction<Address>> for CallMessage<Address> {
90 fn from(v: AdminAction<Address>) -> Self {
91 Self::Admin(v)
92 }
93}
94
95#[test]
96fn test_msg_type() {
97 assert_eq!(
98 "User/CreateSubAccount",
99 CallMessage::<crate::address::Address>::User(UserAction::CreateSubAccount { index: 0 })
100 .msg_type()
101 );
102}