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};
9#[cfg(feature = "arrow")]
10pub use format::{ArrowEncodingError, ArrowStreamSerializer, ArrowStreamSerializerConfig};
11pub use format::{
12    AvroSerializer, AvroSerializerConfig, AvroSerializerOptions, CefSerializer,
13    CefSerializerConfig, CsvSerializer, CsvSerializerConfig, GelfSerializer, GelfSerializerConfig,
14    JsonSerializer, JsonSerializerConfig, JsonSerializerOptions, LogfmtSerializer,
15    LogfmtSerializerConfig, NativeJsonSerializer, NativeJsonSerializerConfig, NativeSerializer,
16    NativeSerializerConfig, ProtobufSerializer, ProtobufSerializerConfig,
17    ProtobufSerializerOptions, RawMessageSerializer, RawMessageSerializerConfig, TextSerializer,
18    TextSerializerConfig,
19};
20#[cfg(feature = "opentelemetry")]
21pub use format::{OtlpSerializer, OtlpSerializerConfig};
22pub use framing::{
23    BoxedFramer, BoxedFramingError, BytesEncoder, BytesEncoderConfig, CharacterDelimitedEncoder,
24    CharacterDelimitedEncoderConfig, CharacterDelimitedEncoderOptions, Framer, FramingConfig,
25    LengthDelimitedEncoder, LengthDelimitedEncoderConfig, NewlineDelimitedEncoder,
26    NewlineDelimitedEncoderConfig, VarintLengthDelimitedEncoder,
27    VarintLengthDelimitedEncoderConfig,
28};
29#[cfg(feature = "arrow")]
30pub use serializer::BatchSerializerConfig;
31pub use serializer::{Serializer, SerializerConfig};
32
33/// An error that occurred while building an encoder.
34pub type BuildError = Box<dyn std::error::Error + Send + Sync + 'static>;
35
36/// An error that occurred while encoding structured events.
37#[derive(Debug)]
38pub enum Error {
39    /// The error occurred while encoding the byte frame boundaries.
40    FramingError(BoxedFramingError),
41    /// The error occurred while serializing a structured event into bytes.
42    SerializingError(vector_common::Error),
43    /// A schema constraint was violated during encoding (e.g., null value for non-nullable field).
44    SchemaConstraintViolation(vector_common::Error),
45}
46
47impl std::fmt::Display for Error {
48    fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
49        match self {
50            Self::FramingError(error) => write!(formatter, "FramingError({error})"),
51            Self::SerializingError(error) => write!(formatter, "SerializingError({error})"),
52            Self::SchemaConstraintViolation(error) => {
53                write!(formatter, "SchemaConstraintViolation({error})")
54            }
55        }
56    }
57}
58
59impl std::error::Error for Error {}
60
61impl From<std::io::Error> for Error {
62    fn from(error: std::io::Error) -> Self {
63        Self::FramingError(Box::new(error))
64    }
65}