codecs/decoding/
config.rs1use serde::{Deserialize, Serialize};
2use vector_core::config::LogNamespace;
3
4use crate::decoding::{Decoder, DeserializerConfig, FramingConfig};
5
6#[derive(Debug, Clone, Deserialize, Serialize)]
8pub struct DecodingConfig {
9 framing: FramingConfig,
11 decoding: DeserializerConfig,
13 log_namespace: LogNamespace,
15}
16
17impl DecodingConfig {
18 pub const fn new(
21 framing: FramingConfig,
22 decoding: DeserializerConfig,
23 log_namespace: LogNamespace,
24 ) -> Self {
25 Self {
26 framing,
27 decoding,
28 log_namespace,
29 }
30 }
31
32 pub const fn config(&self) -> &DeserializerConfig {
34 &self.decoding
35 }
36
37 pub const fn framing(&self) -> &FramingConfig {
39 &self.framing
40 }
41
42 pub fn build(&self) -> vector_common::Result<Decoder> {
44 let framer = self.framing.build();
46
47 let deserializer = self.decoding.build()?;
49
50 Ok(Decoder::new(framer, deserializer).with_log_namespace(self.log_namespace))
51 }
52}