MCPcopy Create free account
hub / github.com/ElementsProject/elements / Append

Method Append

src/leveldb/util/env_posix.cc:271–298  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

269 }
270
271 Status Append(const Slice& data) override {
272 size_t write_size = data.size();
273 const char* write_data = data.data();
274
275 // Fit as much as possible into buffer.
276 size_t copy_size = std::min(write_size, kWritableFileBufferSize - pos_);
277 std::memcpy(buf_ + pos_, write_data, copy_size);
278 write_data += copy_size;
279 write_size -= copy_size;
280 pos_ += copy_size;
281 if (write_size == 0) {
282 return Status::OK();
283 }
284
285 // Can't fit in buffer, so need to do at least one write.
286 Status status = FlushBuffer();
287 if (!status.ok()) {
288 return status;
289 }
290
291 // Small writes go to buffer, large writes are written directly.
292 if (write_size < kWritableFileBufferSize) {
293 std::memcpy(buf_, write_data, write_size);
294 pos_ = write_size;
295 return Status::OK();
296 }
297 return WriteUnbuffered(write_data, write_size);
298 }
299
300 Status Close() override {
301 Status status = FlushBuffer();

Callers 2

DoWriteStringToFileFunction · 0.45
TESTFunction · 0.45

Calls 3

OKFunction · 0.85
sizeMethod · 0.45
dataMethod · 0.45

Tested by 1

TESTFunction · 0.36