codecs/encoding/
mod.rs

1//! A collection of support structures that are used in the process of encoding
2//! events into bytes.
3
4pub mod chunking;
5pub mod format;
6pub mod framing;
7pub mod serializer;
8pub use chunking::{Chunker, Chunking, GelfChunker};
9pub use format::{
10    AvroSerializer, AvroSerializerConfig, AvroSerializerOptions, CefSerializer,
11    CefSerializerConfig, CsvSerializer, CsvSerializerConfig, GelfSerializer, GelfSerializerConfig,
12    JsonSerializer, JsonSerializerConfig, JsonSerializerOptions, LogfmtSerializer,
13    LogfmtSerializerConfig, NativeJsonSerializer, NativeJsonSerializerConfig, NativeSerializer,
14    NativeSerializerConfig, ProtobufSerializer, ProtobufSerializerConfig,
15    ProtobufSerializerOptions, RawMessageSerializer, RawMessageSerializerConfig, TextSerializer,
16    TextSerializerConfig,
17};
18#[cfg(feature = "opentelemetry")]
19pub use format::{OtlpSerializer, OtlpSerializerConfig};
20pub use framing::{
21    BoxedFramer, BoxedFramingError, BytesEncoder, BytesEncoderConfig, CharacterDelimitedEncoder,
22    CharacterDelimitedEncoderConfig, CharacterDelimitedEncoderOptions, Framer, FramingConfig,
23    LengthDelimitedEncoder, LengthDelimitedEncoderConfig, NewlineDelimitedEncoder,
24    NewlineDelimitedEncoderConfig, VarintLengthDelimitedEncoder,
25    VarintLengthDelimitedEncoderConfig,
26};
27pub use serializer::{Serializer, SerializerConfig};
28
29/// An error that occurred while building an encoder.
30pub type BuildError = Box<dyn std::error::Error + Send + Sync + 'static>;
31
32/// An error that occurred while encoding structured events into byte frames.
33#[derive(Debug)]
34pub enum Error {
35    /// The error occurred while encoding the byte frame boundaries.
36    FramingError(BoxedFramingError),
37    /// The error occurred while serializing a structured event into bytes.
38    SerializingError(vector_common::Error),
39}
40
41impl std::fmt::Display for Error {
42    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
43        match self {
44            Self::FramingError(error) => write!(formatter, "FramingError({error})"),
45            Self::SerializingError(error) => write!(formatter, "SerializingError({error})"),
46        }
47    }
48}
49
50impl std::error::Error for Error {}
51
52impl From<std::io::Error> for Error {
53    fn from(error: std::io::Error) -> Self {
54        Self::FramingError(Box::new(error))
55    }
56}