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