diff --git a/Cargo.lock b/Cargo.lock index dabf49a5d6..4c89091fa7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2655,10 +2655,11 @@ dependencies = [ [[package]] name = "fluvio-compression" -version = "0.3.3" +version = "0.3.4" dependencies = [ "bytes", "flate2", + "fluvio-types", "lz4_flex", "serde", "snap", @@ -3332,7 +3333,7 @@ dependencies = [ [[package]] name = "fluvio-types" -version = "0.5.0" +version = "0.5.1" dependencies = [ "event-listener 5.3.1", "fluvio-future", diff --git a/crates/fluvio-compression/Cargo.toml b/crates/fluvio-compression/Cargo.toml index 60c5187f22..a8b04702ae 100644 --- a/crates/fluvio-compression/Cargo.toml +++ b/crates/fluvio-compression/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fluvio-compression" -version = "0.3.3" +version = "0.3.4" edition = "2021" license = "Apache-2.0" authors = ["Fluvio Contributors "] @@ -27,6 +27,8 @@ serde = { workspace = true, features = ['derive'] } thiserror = { workspace = true } bytes = { workspace = true } +fluvio-types = { workspace = true } + # Optional Dependencies flate2 = { workspace = true, optional = true } lz4_flex = { version = "0.11.1", default-features = false, features = ["safe-decode", "safe-encode", "frame"], optional = true } diff --git a/crates/fluvio-compression/src/lib.rs b/crates/fluvio-compression/src/lib.rs index 27d3a7a65d..faa3b112f9 100644 --- a/crates/fluvio-compression/src/lib.rs +++ b/crates/fluvio-compression/src/lib.rs @@ -136,3 +136,48 @@ impl Compression { } } } + +#[cfg(any(feature = "gzip", feature = "snap", feature = "lz4", feature = "zstd"))] +impl From for Compression { + fn from(fcc: fluvio_types::compression::Compression) -> Self { + use fluvio_types::compression::Compression as CompressionType; + + match fcc { + CompressionType::None => Compression::None, + #[cfg(feature = "gzip")] + CompressionType::Gzip => Compression::Gzip, + #[cfg(feature = "snap")] + CompressionType::Snappy => Compression::Snappy, + #[cfg(feature = "lz4")] + CompressionType::Lz4 => Compression::Lz4, + #[cfg(feature = "zstd")] + CompressionType::Zstd => Compression::Zstd, + } + } +} + +#[cfg(test)] +mod tests { + use super::Compression; + + #[test] + fn converts_from_fluvio_compression() { + use fluvio_types::compression::Compression as CompressionType; + + assert_eq!(Compression::from(CompressionType::None), Compression::None); + + #[cfg(feature = "gzip")] + assert_eq!(Compression::from(CompressionType::Gzip), Compression::Gzip); + #[cfg(feature = "snap")] + assert_eq!( + Compression::from(CompressionType::Snappy), + Compression::Snappy + ); + + #[cfg(feature = "lz4")] + assert_eq!(Compression::from(CompressionType::Lz4), Compression::Lz4); + + #[cfg(feature = "zstd")] + assert_eq!(Compression::from(CompressionType::Zstd), Compression::Zstd); + } +} diff --git a/crates/fluvio-types/Cargo.toml b/crates/fluvio-types/Cargo.toml index ca9ae0d993..80c49e8096 100644 --- a/crates/fluvio-types/Cargo.toml +++ b/crates/fluvio-types/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fluvio-types" -version = "0.5.0" +version = "0.5.1" authors = ["Fluvio Contributors "] edition = "2021" description = "Fluvio common types and objects" diff --git a/crates/fluvio-types/src/compression.rs b/crates/fluvio-types/src/compression.rs new file mode 100644 index 0000000000..47904effe5 --- /dev/null +++ b/crates/fluvio-types/src/compression.rs @@ -0,0 +1,8 @@ +#[derive(Clone, Debug, Eq, PartialEq)] +pub enum Compression { + None, + Gzip, + Snappy, + Lz4, + Zstd, +} diff --git a/crates/fluvio-types/src/lib.rs b/crates/fluvio-types/src/lib.rs index d5aa425116..5444def474 100644 --- a/crates/fluvio-types/src/lib.rs +++ b/crates/fluvio-types/src/lib.rs @@ -1,5 +1,6 @@ use std::collections::BTreeMap; +pub mod compression; pub mod defaults; pub mod macros; pub mod partition;