Skip to content

Commit 4849b66

Browse files
committed
adding zstd threadpool methods
1 parent d7932e0 commit 4849b66

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "cas_core_lib"
3-
version = "0.1.8"
3+
version = "0.1.9"
44
edition = "2021"
55
description = "This is a Rust library providing external facing functions to performant and trusted encryption in Rust"
66
license = "Apache-2.0"
@@ -14,4 +14,4 @@ crate-type = ["dylib"]
1414

1515
[dependencies]
1616
libc = "0.2.146"
17-
cas-lib = "0.1.8"
17+
cas-lib = "0.1.9"

src/zstd/mod.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,20 @@ pub extern "C" fn decompress(data_to_decompress: *const c_uchar, data_to_decompr
2121
result
2222
}
2323

24+
#[no_mangle]
25+
pub extern "C" fn decompress_threadpool(data_to_decompress: *const c_uchar, data_to_decompress_length: usize) -> ZstdCompressResult {
26+
let data_to_decompress = unsafe { std::slice::from_raw_parts(data_to_decompress, data_to_decompress_length) }.to_vec();
27+
let mut decompressed_data = zstd::decompress_threadpool(data_to_decompress);
28+
let capacity = decompressed_data.capacity();
29+
decompressed_data.reserve_exact(capacity);
30+
let result = ZstdCompressResult {
31+
data: decompressed_data.as_mut_ptr(),
32+
length: decompressed_data.len()
33+
};
34+
std::mem::forget(decompressed_data);
35+
result
36+
}
37+
2438
#[no_mangle]
2539
pub extern "C" fn compress(data_to_compress: *const c_uchar, data_to_compress_length: usize, level: usize) -> ZstdCompressResult {
2640
let data_to_compress = unsafe { std::slice::from_raw_parts(data_to_compress, data_to_compress_length) }.to_vec();
@@ -33,4 +47,18 @@ pub extern "C" fn compress(data_to_compress: *const c_uchar, data_to_compress_le
3347
};
3448
std::mem::forget(compressed_data);
3549
result
50+
}
51+
52+
#[no_mangle]
53+
pub extern "C" fn compress_threadpool(data_to_compress: *const c_uchar, data_to_compress_length: usize, level: usize) -> ZstdCompressResult {
54+
let data_to_compress = unsafe { std::slice::from_raw_parts(data_to_compress, data_to_compress_length) }.to_vec();
55+
let mut compressed_data = zstd::compress_threadpool(data_to_compress, level as i32);
56+
let capacity = compressed_data.capacity();
57+
compressed_data.reserve_exact(capacity);
58+
let result = ZstdCompressResult {
59+
data: compressed_data.as_mut_ptr(),
60+
length: compressed_data.len()
61+
};
62+
std::mem::forget(compressed_data);
63+
result
3664
}

0 commit comments

Comments
 (0)