Skip to content

Commit

Permalink
fix: 🐛 correctly close async compression writers
Browse files Browse the repository at this point in the history
(fixes #10)
  • Loading branch information
DerZade committed May 18, 2024
1 parent bad9e66 commit f2819c4
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 6 deletions.
6 changes: 3 additions & 3 deletions src/directory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,9 @@ impl Directory {
}

#[duplicate_item(
fn_name cfg_async_filter input_traits compress write_varint(writer, value) add_await(code) async;
[to_writer_impl] [cfg(all())] [impl Write] [compress] [writer.write_varint(value)] [code] [];
[to_async_writer_impl] [cfg(feature="async")] [(impl AsyncWrite + Unpin + Send)] [compress_async] [writer.write_varint_async(value).await] [code.await] [async];
fn_name cfg_async_filter input_traits compress flush write_varint(writer, value) add_await(code) async;
[to_writer_impl] [cfg(all())] [impl Write] [compress] [flush] [writer.write_varint(value)] [code] [];
[to_async_writer_impl] [cfg(feature="async")] [(impl AsyncWrite + Unpin + Send)] [compress_async] [close] [writer.write_varint_async(value).await] [code.await] [async];
)]
#[cfg_async_filter]
async fn fn_name(&self, output: &mut input_traits, compression: Compression) -> Result<()> {
Expand Down
6 changes: 3 additions & 3 deletions src/pmtiles.rs
Original file line number Diff line number Diff line change
Expand Up @@ -302,9 +302,9 @@ impl<R: RTraits> PMTiles<R> {
}

#[duplicate_item(
fn_name cfg_async_filter async add_await(code) RTraits SeekFrom WTraits finish compress write_directories to_writer;
[to_writer_impl] [cfg(all())] [] [code] [Read + Seek] [std::io::SeekFrom] [Write + Seek] [finish] [compress] [write_directories] [to_writer];
[to_async_writer_impl] [cfg(feature="async")] [async] [code.await] [AsyncRead + AsyncReadExt + Send + Unpin + AsyncSeekExt] [futures::io::SeekFrom] [AsyncWrite + Send + Unpin + AsyncSeekExt] [finish_async] [compress_async] [write_directories_async] [to_async_writer];
fn_name cfg_async_filter async add_await(code) RTraits SeekFrom WTraits finish compress flush write_directories to_writer;
[to_writer_impl] [cfg(all())] [] [code] [Read + Seek] [std::io::SeekFrom] [Write + Seek] [finish] [compress] [flush] [write_directories] [to_writer];
[to_async_writer_impl] [cfg(feature="async")] [async] [code.await] [AsyncRead + AsyncReadExt + Send + Unpin + AsyncSeekExt] [futures::io::SeekFrom] [AsyncWrite + Send + Unpin + AsyncSeekExt] [finish_async] [compress_async] [close] [write_directories_async] [to_async_writer];
)]
#[cfg_async_filter]
impl<R: RTraits> PMTiles<R> {
Expand Down
15 changes: 15 additions & 0 deletions src/util/compress.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,21 @@ pub fn compress<'a>(
/// Will return [`Err`] if `compression` is set to [`Compression::Unknown`] or an error occurred
/// while creating the zstd encoder.
///
/// # Example
/// ```rust
/// # use futures::io::{AsyncWriteExt};
/// # use pmtiles2::{util::compress_async, Compression};
/// # tokio_test::block_on(async {
/// let mut output = Vec::<u8>::new();
///
/// let mut writer = compress_async(Compression::GZip, &mut output).unwrap();
///
/// let data_to_compress: Vec<u8> = vec![1, 3, 3, 7, 0, 4, 2, 0, 6, 9];
/// writer.write_all(&data_to_compress).await.unwrap();
///
/// writer.close().await.unwrap(); // do not forget to close writer to make sure it is done writing
/// # })
/// ```
#[allow(clippy::module_name_repetitions)]
#[cfg(feature = "async")]
pub fn compress_async<'a>(
Expand Down

0 comments on commit f2819c4

Please sign in to comment.