@@ -21,6 +21,20 @@ pub extern "C" fn decompress(data_to_decompress: *const c_uchar, data_to_decompr
21
21
result
22
22
}
23
23
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
+
24
38
#[ no_mangle]
25
39
pub extern "C" fn compress ( data_to_compress : * const c_uchar , data_to_compress_length : usize , level : usize ) -> ZstdCompressResult {
26
40
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
33
47
} ;
34
48
std:: mem:: forget ( compressed_data) ;
35
49
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
36
64
}
0 commit comments