protospec_build/prelude/
gzip.rs

1use 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}