mysql_connector/connection/packets/
auth_switch_request.rs1use {
2 crate::{
3 connection::types::AuthPlugin, error::ProtocolError, Deserialize, ParseBuf, Serialize,
4 },
5 bytes::BufMut,
6};
7
8#[derive(Debug, Clone, Eq, PartialEq)]
9pub struct AuthSwitchRequest {
10 plugin: AuthPlugin,
11 data: Vec<u8>,
12}
13
14impl AuthSwitchRequest {
15 pub fn plugin(&self) -> AuthPlugin {
16 self.plugin
17 }
18
19 pub fn into_data(self) -> Vec<u8> {
20 self.data
21 }
22}
23
24impl<'de> Deserialize<'de> for AuthSwitchRequest {
25 const SIZE: Option<usize> = None;
26 type Ctx = ();
27
28 fn deserialize(buf: &mut ParseBuf<'de>, _ctx: Self::Ctx) -> Result<Self, ProtocolError> {
29 buf.skip(1);
30 Ok(Self {
31 plugin: buf.parse(())?,
32 data: match buf.eat_all() {
33 [head @ .., 0] => head.to_vec(),
34 all => all.to_vec(),
35 },
36 })
37 }
38}
39
40impl Serialize for AuthSwitchRequest {
41 fn serialize(&self, buf: &mut Vec<u8>) {
42 buf.put_u8(0x00);
43 self.plugin.serialize(buf);
44 buf.put_slice(&self.data);
45 }
46}