codecs/decoding/format/
mod.rs1#![deny(missing_docs)]
5
6mod avro;
7mod bytes;
8mod gelf;
9mod influxdb;
10mod json;
11mod native;
12mod native_json;
13#[cfg(feature = "opentelemetry")]
14mod otlp;
15mod protobuf;
16#[cfg(feature = "syslog")]
17mod syslog;
18mod vrl;
19
20use ::bytes::Bytes;
21pub use avro::{AvroDeserializer, AvroDeserializerConfig, AvroDeserializerOptions};
22use dyn_clone::DynClone;
23pub use gelf::{GelfDeserializer, GelfDeserializerConfig, GelfDeserializerOptions};
24pub use influxdb::{InfluxdbDeserializer, InfluxdbDeserializerConfig};
25pub use json::{JsonDeserializer, JsonDeserializerConfig, JsonDeserializerOptions};
26pub use native::{NativeDeserializer, NativeDeserializerConfig};
27pub use native_json::{
28 NativeJsonDeserializer, NativeJsonDeserializerConfig, NativeJsonDeserializerOptions,
29};
30#[cfg(feature = "opentelemetry")]
31pub use otlp::{OtlpDeserializer, OtlpDeserializerConfig, OtlpSignalType};
32pub use protobuf::{ProtobufDeserializer, ProtobufDeserializerConfig, ProtobufDeserializerOptions};
33use smallvec::SmallVec;
34#[cfg(feature = "syslog")]
35pub use syslog::{SyslogDeserializer, SyslogDeserializerConfig, SyslogDeserializerOptions};
36use vector_core::{config::LogNamespace, event::Event};
37
38pub use self::{
39 bytes::{BytesDeserializer, BytesDeserializerConfig},
40 vrl::{VrlDeserializer, VrlDeserializerConfig, VrlDeserializerOptions},
41};
42
43pub trait Deserializer: DynClone + Send + Sync {
45 fn parse(
54 &self,
55 bytes: Bytes,
56 log_namespace: LogNamespace,
57 ) -> vector_common::Result<SmallVec<[Event; 1]>>;
58}
59
60dyn_clone::clone_trait_object!(Deserializer);
61
62pub type BoxedDeserializer = Box<dyn Deserializer>;
64
65const fn default_lossy() -> bool {
67 true
68}