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