5 #include "util/sinksource.h" 6 #include "base/logging.h" 11 Sink::WritableBuffer Sink::GetAppendBuffer(
size_t min_capacity, WritableBuffer scratch,
13 CHECK_GE(scratch.size(), min_capacity);
17 Status Sink::Flush() {
return Status::OK; }
20 CHECK(!range.empty());
23 if (!prepend_buf_.empty()) {
24 if (prepend_buf_.size() >= range.size()) {
25 memcpy(range.begin(), prepend_buf_.begin(), range.size());
26 auto src = prepend_buf_.begin() + range.size();
27 size_t new_size = prepend_buf_.size() - range.size();
28 memmove(prepend_buf_.begin(), src, new_size);
29 prepend_buf_.resize(new_size);
34 memcpy(range.begin(), prepend_buf_.begin(), prepend_buf_.size());
36 read = prepend_buf_.size();
38 DCHECK_LT(read, range.size());
44 auto lrange = range.subpiece(read);
52 if (eof_ || res.obj == lrange.size())
54 lrange = lrange.subpiece(res.obj);
60 size_t to_fill = std::min<size_t>({range.size(), block_size_, input_.size()});
61 memcpy(range.begin(), input_.begin(), to_fill);
63 input_.remove_prefix(to_fill);
virtual StatusObject< size_t > ReadInternal(const strings::MutableByteRange &range)=0
StatusObject< size_t > Read(const strings::MutableByteRange &range)
Reads source into mutable range.