vector/codecs/decoding/
config.rs1use serde::{Deserialize, Serialize};
2use vector_lib::codecs::decoding::{DeserializerConfig, FramingConfig};
3use vector_lib::config::LogNamespace;
4
5use crate::codecs::Decoder;
6
7#[derive(Debug, Clone, Deserialize, Serialize)]
9pub struct DecodingConfig {
10 framing: FramingConfig,
12 decoding: DeserializerConfig,
14 log_namespace: LogNamespace,
16}
17
18impl DecodingConfig {
19 pub const fn new(
22 framing: FramingConfig,
23 decoding: DeserializerConfig,
24 log_namespace: LogNamespace,
25 ) -> Self {
26 Self {
27 framing,
28 decoding,
29 log_namespace,
30 }
31 }
32
33 pub const fn config(&self) -> &DeserializerConfig {
35 &self.decoding
36 }
37
38 pub const fn framing(&self) -> &FramingConfig {
40 &self.framing
41 }
42
43 pub fn build(&self) -> vector_lib::Result<Decoder> {
45 let framer = self.framing.build();
47
48 let deserializer = self.decoding.build()?;
50
51 Ok(Decoder::new(framer, deserializer).with_log_namespace(self.log_namespace))
52 }
53}