mysqladm/core/protocol/
commands.rs1mod create_databases;
2mod create_users;
3mod drop_databases;
4mod drop_users;
5mod list_all_databases;
6mod list_all_privileges;
7mod list_all_users;
8mod list_databases;
9mod list_privileges;
10mod list_users;
11mod lock_users;
12mod modify_privileges;
13mod passwd_user;
14mod unlock_users;
15
16pub use create_databases::*;
17pub use create_users::*;
18pub use drop_databases::*;
19pub use drop_users::*;
20pub use list_all_databases::*;
21pub use list_all_privileges::*;
22pub use list_all_users::*;
23pub use list_databases::*;
24pub use list_privileges::*;
25pub use list_users::*;
26pub use lock_users::*;
27pub use modify_privileges::*;
28pub use passwd_user::*;
29pub use unlock_users::*;
30
31use serde::{Deserialize, Serialize};
32use tokio::net::UnixStream;
33use tokio_serde::{Framed as SerdeFramed, formats::Bincode};
34use tokio_util::codec::{Framed, LengthDelimitedCodec};
35
36pub type ServerToClientMessageStream = SerdeFramed<
37 Framed<UnixStream, LengthDelimitedCodec>,
38 Request,
39 Response,
40 Bincode<Request, Response>,
41>;
42
43pub type ClientToServerMessageStream = SerdeFramed<
44 Framed<UnixStream, LengthDelimitedCodec>,
45 Response,
46 Request,
47 Bincode<Response, Request>,
48>;
49
50pub fn create_server_to_client_message_stream(socket: UnixStream) -> ServerToClientMessageStream {
51 let length_delimited = Framed::new(socket, LengthDelimitedCodec::new());
52 tokio_serde::Framed::new(length_delimited, Bincode::default())
53}
54
55pub fn create_client_to_server_message_stream(socket: UnixStream) -> ClientToServerMessageStream {
56 let length_delimited = Framed::new(socket, LengthDelimitedCodec::new());
57 tokio_serde::Framed::new(length_delimited, Bincode::default())
58}
59
60#[non_exhaustive]
61#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
62pub enum Request {
63 CreateDatabases(CreateDatabasesRequest),
64 DropDatabases(DropDatabasesRequest),
65 ListDatabases(ListDatabasesRequest),
66 ListPrivileges(ListPrivilegesRequest),
67 ModifyPrivileges(ModifyPrivilegesRequest),
68
69 CreateUsers(CreateUsersRequest),
70 DropUsers(DropUsersRequest),
71 PasswdUser(SetUserPasswordRequest),
72 ListUsers(ListUsersRequest),
73 LockUsers(LockUsersRequest),
74 UnlockUsers(UnlockUsersRequest),
75
76 Exit,
78}
79
80#[non_exhaustive]
83#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
84pub enum Response {
85 CreateDatabases(CreateDatabasesResponse),
87 DropDatabases(DropDatabasesResponse),
88 ListDatabases(ListDatabasesResponse),
89 ListAllDatabases(ListAllDatabasesResponse),
90 ListPrivileges(ListPrivilegesResponse),
91 ListAllPrivileges(ListAllPrivilegesResponse),
92 ModifyPrivileges(ModifyPrivilegesResponse),
93
94 CreateUsers(CreateUsersResponse),
95 DropUsers(DropUsersResponse),
96 SetUserPassword(SetUserPasswordResponse),
97 ListUsers(ListUsersResponse),
98 ListAllUsers(ListAllUsersResponse),
99 LockUsers(LockUsersResponse),
100 UnlockUsers(UnlockUsersResponse),
101
102 Ready,
104 Error(String),
105}