Skip to content

Commit

Permalink
Move blosc crate dependent code out of metadata module
Browse files Browse the repository at this point in the history
  • Loading branch information
LDeakin committed Sep 2, 2024
1 parent 1f0458a commit cb29dd0
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 18 deletions.
13 changes: 12 additions & 1 deletion src/array/codec/bytes_to_bytes/blosc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,17 @@ impl From<&str> for BloscError {
}
}

const fn compressor_as_cstr(compressor: BloscCompressor) -> *const u8 {
match compressor {
BloscCompressor::BloscLZ => blosc_sys::BLOSC_BLOSCLZ_COMPNAME.as_ptr(),
BloscCompressor::LZ4 => blosc_sys::BLOSC_LZ4_COMPNAME.as_ptr(),
BloscCompressor::LZ4HC => blosc_sys::BLOSC_LZ4HC_COMPNAME.as_ptr(),
BloscCompressor::Snappy => blosc_sys::BLOSC_SNAPPY_COMPNAME.as_ptr(),
BloscCompressor::Zlib => blosc_sys::BLOSC_ZLIB_COMPNAME.as_ptr(),
BloscCompressor::Zstd => blosc_sys::BLOSC_ZSTD_COMPNAME.as_ptr(),
}
}

fn blosc_compress_bytes(
src: &[u8],
clevel: BloscCompressionLevel,
Expand Down Expand Up @@ -95,7 +106,7 @@ fn blosc_compress_bytes(
src.as_ptr().cast::<c_void>(),
dest.as_mut_ptr().cast::<c_void>(),
destsize,
compressor.as_cstr().cast::<c_char>(),
compressor_as_cstr(compressor).cast::<c_char>(),
blocksize,
i32::try_from(numinternalthreads).unwrap(),
)
Expand Down
6 changes: 3 additions & 3 deletions src/array/codec/bytes_to_bytes/blosc/blosc_codec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ use crate::array::codec::AsyncBytesPartialDecoderTraits;

use super::{
blosc_compress_bytes, blosc_decompress_bytes, blosc_partial_decoder, blosc_validate,
BloscCodecConfiguration, BloscCodecConfigurationV1, BloscCompressionLevel, BloscCompressor,
BloscError, BloscShuffleMode, IDENTIFIER,
compressor_as_cstr, BloscCodecConfiguration, BloscCodecConfigurationV1, BloscCompressionLevel,
BloscCompressor, BloscError, BloscShuffleMode, IDENTIFIER,
};

/// A `blosc` codec implementation.
Expand Down Expand Up @@ -62,7 +62,7 @@ impl BloscCodec {
// Check that the compressor is available
let support = unsafe {
blosc_get_complib_info(
cname.as_cstr().cast::<c_char>(),
compressor_as_cstr(cname).cast::<c_char>(),
std::ptr::null_mut(),
std::ptr::null_mut(),
)
Expand Down
14 changes: 0 additions & 14 deletions src/metadata/v3/array/codec/blosc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,20 +73,6 @@ pub enum BloscCompressor {
Zstd,
}

#[cfg(feature = "blosc")]
impl BloscCompressor {
pub(crate) const fn as_cstr(&self) -> *const u8 {
match self {
Self::BloscLZ => blosc_sys::BLOSC_BLOSCLZ_COMPNAME.as_ptr(),
Self::LZ4 => blosc_sys::BLOSC_LZ4_COMPNAME.as_ptr(),
Self::LZ4HC => blosc_sys::BLOSC_LZ4HC_COMPNAME.as_ptr(),
Self::Snappy => blosc_sys::BLOSC_SNAPPY_COMPNAME.as_ptr(),
Self::Zlib => blosc_sys::BLOSC_ZLIB_COMPNAME.as_ptr(),
Self::Zstd => blosc_sys::BLOSC_ZSTD_COMPNAME.as_ptr(),
}
}
}

/// A wrapper to handle various versions of `blosc` codec configuration parameters.
#[derive(Serialize, Deserialize, Clone, Eq, PartialEq, Debug, Display, From)]
#[serde(untagged)]
Expand Down

0 comments on commit cb29dd0

Please sign in to comment.