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