1use crate::{
2 coding::*,
3 ietf::{Message, Parameters, Version as IetfVersion},
4};
5
6#[derive(Debug, Clone)]
8pub struct ClientSetup {
9 pub versions: Versions,
11
12 pub parameters: Parameters,
14}
15
16impl Message for ClientSetup {
17 const ID: u64 = 0x20;
18
19 fn decode_msg<R: bytes::Buf>(r: &mut R, version: IetfVersion) -> Result<Self, DecodeError> {
21 let versions = Versions::decode(r, version)?;
22 let parameters = Parameters::decode(r, version)?;
23
24 Ok(Self { versions, parameters })
25 }
26
27 fn encode_msg<W: bytes::BufMut>(&self, w: &mut W, version: IetfVersion) {
29 self.versions.encode(w, version);
30 self.parameters.encode(w, version);
31 }
32}
33
34#[derive(Debug, Clone)]
36pub struct ServerSetup {
37 pub version: Version,
39
40 pub parameters: Parameters,
42}
43
44impl Message for ServerSetup {
45 const ID: u64 = 0x21;
46
47 fn encode_msg<W: bytes::BufMut>(&self, w: &mut W, version: IetfVersion) {
48 self.version.encode(w, version);
49 self.parameters.encode(w, version);
50 }
51
52 fn decode_msg<R: bytes::Buf>(r: &mut R, version: IetfVersion) -> Result<Self, DecodeError> {
53 let version = Version::decode(r, version)?;
54 let parameters = Parameters::decode(r, version)?;
55
56 Ok(Self { version, parameters })
57 }
58}