protospec_build/prelude/
gzip.rs1use super::*;
2
3pub struct GzipTransform;
4
5impl ForeignTransform for GzipTransform {
6 fn decoding_gen(
7 &self,
8 input_stream: TokenStream,
9 _arguments: Vec<TokenStream>,
10 is_async: bool,
11 ) -> TokenStream {
12 if is_async {
13 quote! {
14 async_compression::tokio::bufread::GzipDecoder::new(#input_stream)
15 }
16 } else {
17 quote! {
18 flate2::read::GzDecoder::new(#input_stream)
19 }
20 }
21 }
22
23 fn encoding_gen(
24 &self,
25 input_stream: TokenStream,
26 _arguments: Vec<TokenStream>,
27 is_async: bool,
28 ) -> TokenStream {
29 if is_async {
30 quote! {
31 async_compression::tokio::write::GzipEncoder::new(#input_stream)
32 }
33 } else {
34 quote! {
35 flate2::write::GzEncoder::new(#input_stream, flate2::Compression::default())
36 }
37 }
38 }
39
40 fn arguments(&self) -> Vec<FFIArgument> {
41 vec![]
42 }
43}