Functorize Zip reading/writing functionality to permit different backends #36
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Our web endpoint needs to construct fairly small zip files consisting of multiple CSVs (think export of multiple independent queries). With the current implementation, we need to use the temporary files, clean them up, involve disk I/O etc. Functorization of the
Zip
module permitted us to have memory backend for this operation, leaving all the heavy lifting in theZip
's responsibility, just collecting theBuffer.contents
in the end.Description
Zip.mli
:READER
,IN_CHANNEL
,Make_reader
,WRITER
,OUT_CHANNEL
,Make_writer
minizip
test is updated (-b
flag) to test/demonstrate new capabilities (functionally, it is the same as before)4.07.0
as stated incamlzip.opam
4.11.2