Skip to content

Commit

Permalink
Implement StandardEncodingsWithFramingMigrator
Browse files Browse the repository at this point in the history
Signed-off-by: Pablo Sichert <mail@pablosichert.com>
  • Loading branch information
pablosichert committed Apr 13, 2022
1 parent 429dc49 commit c3d3e92
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 4 deletions.
29 changes: 27 additions & 2 deletions src/sinks/util/encoding/codec.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
use std::io;

#[cfg(feature = "codecs")]
use codecs::{encoding::SerializerConfig, JsonSerializerConfig, RawMessageSerializerConfig};
use codecs::{
encoding::{FramingConfig, SerializerConfig},
JsonSerializerConfig, NewlineDelimitedEncoderConfig, RawMessageSerializerConfig,
};
use serde::{Deserialize, Serialize};
use vector_core::config::log_schema;
use vector_core::event::{Event, LogEvent, TraceEvent};

use super::Encoder;
#[cfg(feature = "codecs")]
use super::EncodingConfigMigrator;
use super::{EncodingConfigMigrator, EncodingConfigWithFramingMigrator};

static DEFAULT_TEXT_ENCODER: StandardTextEncoding = StandardTextEncoding;
static DEFAULT_JSON_ENCODER: StandardJsonEncoding = StandardJsonEncoding;
Expand Down Expand Up @@ -178,6 +181,28 @@ impl EncodingConfigMigrator for StandardEncodingsMigrator {
}
}

#[cfg(feature = "codecs")]
#[derive(Debug, Clone, Serialize, Deserialize)]
/// Migrate the legacy `StandardEncodings` to the new `FramingConfig`/
/// `SerializerConfig` based encoding system.
pub struct StandardEncodingsWithFramingMigrator;

#[cfg(feature = "codecs")]
impl EncodingConfigWithFramingMigrator for StandardEncodingsWithFramingMigrator {
type Codec = StandardEncodings;

fn migrate(codec: &Self::Codec) -> (Option<FramingConfig>, SerializerConfig) {
match codec {
StandardEncodings::Text => (None, RawMessageSerializerConfig::new().into()),
StandardEncodings::Json => (None, JsonSerializerConfig::new().into()),
StandardEncodings::Ndjson => (
Some(NewlineDelimitedEncoderConfig::new().into()),
JsonSerializerConfig::new().into(),
),
}
}
}

/// Standard implementation for encoding events as JSON.
///
/// All event types will be serialized to JSON, without pretty printing. Uses
Expand Down
4 changes: 2 additions & 2 deletions src/sinks/util/encoding/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,9 @@ pub use adapter::{
EncodingConfigAdapter, EncodingConfigMigrator, EncodingConfigWithFramingAdapter,
EncodingConfigWithFramingMigrator, Transformer,
};
#[cfg(feature = "codecs")]
pub use codec::StandardEncodingsMigrator;
pub use codec::{as_tracked_write, StandardEncodings, StandardJsonEncoding, StandardTextEncoding};
#[cfg(feature = "codecs")]
pub use codec::{StandardEncodingsMigrator, StandardEncodingsWithFramingMigrator};
pub use config::EncodingConfig;
pub use fixed::EncodingConfigFixed;
use lookup::lookup_v2::{parse_path, OwnedPath};
Expand Down

0 comments on commit c3d3e92

Please sign in to comment.