1use aws_smithy_schema::codec::Codec;
9
10mod deserializer;
11mod serializer;
12
13pub use deserializer::CborDeserializer;
14pub use serializer::CborSerializer;
15
16#[derive(Debug, Clone)]
18pub struct CborCodecSettings {
19 max_depth: u32,
20}
21
22impl CborCodecSettings {
23 pub fn max_depth(&self) -> u32 {
25 self.max_depth
26 }
27}
28
29impl Default for CborCodecSettings {
30 fn default() -> Self {
31 Self { max_depth: 128 }
32 }
33}
34
35#[derive(Debug)]
37pub struct CborCodec {
38 settings: CborCodecSettings,
39}
40
41impl CborCodec {
42 pub fn new(settings: CborCodecSettings) -> Self {
44 Self { settings }
45 }
46}
47
48impl Default for CborCodec {
49 fn default() -> Self {
50 Self::new(CborCodecSettings::default())
51 }
52}
53
54impl Codec for CborCodec {
55 type Serializer = CborSerializer;
56 type Deserializer<'a> = CborDeserializer<'a>;
57
58 fn create_serializer(&self) -> Self::Serializer {
59 CborSerializer::new()
60 }
61
62 fn create_deserializer<'a>(&self, input: &'a [u8]) -> Self::Deserializer<'a> {
63 CborDeserializer::new(input, self.settings.max_depth)
64 }
65}