Skip to main content

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