codecs/
lib.rs

1//! A collection of codecs that can be used to transform between bytes streams /
2//! byte messages, byte frames and structured events.
3
4#![deny(missing_docs)]
5#![deny(warnings)]
6
7mod common;
8pub mod decoding;
9pub mod encoding;
10pub mod gelf;
11pub mod internal_events;
12mod ready_frames;
13
14pub use decoding::{
15    BytesDecoder, BytesDecoderConfig, BytesDeserializer, BytesDeserializerConfig,
16    CharacterDelimitedDecoder, CharacterDelimitedDecoderConfig, Decoder, DecodingConfig,
17    GelfDeserializer, GelfDeserializerConfig, JsonDeserializer, JsonDeserializerConfig,
18    LengthDelimitedDecoder, LengthDelimitedDecoderConfig, NativeDeserializer,
19    NativeDeserializerConfig, NativeJsonDeserializer, NativeJsonDeserializerConfig,
20    NewlineDelimitedDecoder, NewlineDelimitedDecoderConfig, OctetCountingDecoder,
21    OctetCountingDecoderConfig, StreamDecodingError, VarintLengthDelimitedDecoder,
22    VarintLengthDelimitedDecoderConfig,
23};
24#[cfg(feature = "syslog")]
25pub use decoding::{SyslogDeserializer, SyslogDeserializerConfig};
26pub use encoding::{
27    BatchEncoder, BatchSerializer, BytesEncoder, BytesEncoderConfig, CharacterDelimitedEncoder,
28    CharacterDelimitedEncoderConfig, CsvSerializer, CsvSerializerConfig, Encoder, EncoderKind,
29    EncodingConfig, EncodingConfigWithFraming, GelfSerializer, GelfSerializerConfig,
30    JsonSerializer, JsonSerializerConfig, LengthDelimitedEncoder, LengthDelimitedEncoderConfig,
31    LogfmtSerializer, LogfmtSerializerConfig, NativeJsonSerializer, NativeJsonSerializerConfig,
32    NativeSerializer, NativeSerializerConfig, NewlineDelimitedEncoder,
33    NewlineDelimitedEncoderConfig, RawMessageSerializer, RawMessageSerializerConfig, SinkType,
34    TextSerializer, TextSerializerConfig, TimestampFormat, Transformer,
35};
36pub use gelf::{VALID_FIELD_REGEX, gelf_fields};
37pub use ready_frames::ReadyFrames;
38use vector_config_macros::configurable_component;
39
40/// The user configuration to choose the metric tag strategy.
41#[configurable_component]
42#[derive(Copy, Clone, Debug, PartialEq, Eq, Default)]
43#[serde(rename_all = "snake_case")]
44pub enum MetricTagValues {
45    /// Tag values are exposed as single strings, the same as they were before this config
46    /// option. Tags with multiple values show the last assigned value, and null values
47    /// are ignored.
48    #[default]
49    Single,
50    /// All tags are exposed as arrays of either string or null values.
51    Full,
52}