codecs/encoding/format/
mod.rs

1//! A collection of formats that can be used to convert from structured events
2//! to byte frames.
3
4#![deny(missing_docs)]
5
6#[cfg(feature = "arrow")]
7mod arrow;
8mod avro;
9mod cef;
10mod common;
11mod csv;
12mod gelf;
13mod json;
14mod logfmt;
15mod native;
16mod native_json;
17#[cfg(feature = "opentelemetry")]
18mod otlp;
19#[cfg(feature = "parquet")]
20mod parquet;
21mod protobuf;
22mod raw_message;
23#[cfg(feature = "syslog")]
24mod syslog;
25mod text;
26
27use std::fmt::Debug;
28
29#[cfg(feature = "parquet")]
30pub use self::parquet::{
31    ParquetCompression, ParquetSchemaMode, ParquetSerializer, ParquetSerializerConfig,
32};
33#[cfg(feature = "arrow")]
34pub use arrow::{
35    ArrowEncodingError, ArrowStreamSerializer, ArrowStreamSerializerConfig, SchemaProvider,
36    find_null_non_nullable_fields,
37};
38pub use avro::{AvroSerializer, AvroSerializerConfig, AvroSerializerOptions};
39pub use cef::{CefSerializer, CefSerializerConfig};
40use dyn_clone::DynClone;
41pub use gelf::{GelfSerializer, GelfSerializerConfig};
42pub use json::{JsonSerializer, JsonSerializerConfig, JsonSerializerOptions};
43pub use logfmt::{LogfmtSerializer, LogfmtSerializerConfig};
44pub use native::{NativeSerializer, NativeSerializerConfig};
45pub use native_json::{NativeJsonSerializer, NativeJsonSerializerConfig};
46#[cfg(feature = "opentelemetry")]
47pub use otlp::{OtlpSerializer, OtlpSerializerConfig};
48pub use protobuf::{ProtobufSerializer, ProtobufSerializerConfig, ProtobufSerializerOptions};
49pub use raw_message::{RawMessageSerializer, RawMessageSerializerConfig};
50#[cfg(feature = "syslog")]
51pub use syslog::{SyslogSerializer, SyslogSerializerConfig};
52pub use text::{TextSerializer, TextSerializerConfig};
53use vector_core::event::Event;
54
55pub use self::csv::{CsvSerializer, CsvSerializerConfig};
56
57/// Serialize a structured event into a byte frame.
58pub trait Serializer:
59    tokio_util::codec::Encoder<Event, Error = vector_common::Error> + DynClone + Debug + Send + Sync
60{
61}
62
63/// Default implementation for `Serializer`s that implement
64/// `tokio_util::codec::Encoder`.
65impl<Encoder> Serializer for Encoder where
66    Encoder: tokio_util::codec::Encoder<Event, Error = vector_common::Error>
67        + Clone
68        + Debug
69        + Send
70        + Sync
71{
72}
73
74dyn_clone::clone_trait_object!(Serializer);