summaryrefslogtreecommitdiff
path: root/include/git2/sys/stream.h
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2015-11-04 10:30:48 -0800
committerCarlos Martín Nieto <cmn@dwim.me>2016-03-22 19:34:08 +0100
commit0a5c6028898e637544962c2c6b1ef8eeeb9c1d38 (patch)
treee4c57cace7cb954ff337a1b67a44efba3b891c26 /include/git2/sys/stream.h
parent3fa764edd2a11691876153fef6523375b6e4553d (diff)
downloadlibgit2-0a5c6028898e637544962c2c6b1ef8eeeb9c1d38.tar.gz
blob: introduce creating a blob by writing into a stream
The pair of `git_blob_create_frombuffer()` and `git_blob_create_frombuffer_commit()` is meant to replace `git_blob_create_fromchunks()` by providing a way for a user to write a new blob when they want filtering or they do not know the size. This approach allows the caller to retain control over when to add data to this buffer and a more natural fit into higher-level language's own stream abstractions instead of having to handle IO wait in the callback. The in-memory buffer size of 2MB is chosen somewhat arbitrarily to be a round multiple of usual page sizes and a value where most blobs seem likely to be either going to be way below or way over that size. It's also a round number of pages. This implementation re-uses the helper we have from `_fromchunks()` so we end up writing everything to disk, but hopefully more efficiently than with a default filebuf. A later optimisation can be to avoid writing the in-memory contents to disk, with some extra complexity.
Diffstat (limited to 'include/git2/sys/stream.h')
0 files changed, 0 insertions, 0 deletions