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;
19mod protobuf;
20mod raw_message;
21mod text;
22
23use std::fmt::Debug;
24
25#[cfg(feature = "arrow")]
26pub use arrow::{ArrowEncodingError, ArrowStreamSerializer, ArrowStreamSerializerConfig};
27pub use avro::{AvroSerializer, AvroSerializerConfig, AvroSerializerOptions};
28pub use cef::{CefSerializer, CefSerializerConfig};
29use dyn_clone::DynClone;
30pub use gelf::{GelfSerializer, GelfSerializerConfig};
31pub use json::{JsonSerializer, JsonSerializerConfig, JsonSerializerOptions};
32pub use logfmt::{LogfmtSerializer, LogfmtSerializerConfig};
33pub use native::{NativeSerializer, NativeSerializerConfig};
34pub use native_json::{NativeJsonSerializer, NativeJsonSerializerConfig};
35#[cfg(feature = "opentelemetry")]
36pub use otlp::{OtlpSerializer, OtlpSerializerConfig};
37pub use protobuf::{ProtobufSerializer, ProtobufSerializerConfig, ProtobufSerializerOptions};
38pub use raw_message::{RawMessageSerializer, RawMessageSerializerConfig};
39pub use text::{TextSerializer, TextSerializerConfig};
40use vector_core::event::Event;
41
42pub use self::csv::{CsvSerializer, CsvSerializerConfig};
43
44/// Serialize a structured event into a byte frame.
45pub trait Serializer:
46    tokio_util::codec::Encoder<Event, Error = vector_common::Error> + DynClone + Debug + Send + Sync
47{
48}
49
50/// Default implementation for `Serializer`s that implement
51/// `tokio_util::codec::Encoder`.
52impl<Encoder> Serializer for Encoder where
53    Encoder: tokio_util::codec::Encoder<Event, Error = vector_common::Error>
54        + Clone
55        + Debug
56        + Send
57        + Sync
58{
59}
60
61dyn_clone::clone_trait_object!(Serializer);