Branch data Line data Source code
# 1 : : // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
# 2 : : // Use of this source code is governed by a BSD-style license that can be
# 3 : : // found in the LICENSE file. See the AUTHORS file for names of contributors.
# 4 : :
# 5 : : #include "leveldb/env.h"
# 6 : :
# 7 : : namespace leveldb {
# 8 : :
# 9 : 651 : Env::~Env() = default;
# 10 : :
# 11 : 0 : Status Env::NewAppendableFile(const std::string& fname, WritableFile** result) {
# 12 : 0 : return Status::NotSupported("NewAppendableFile", fname);
# 13 : 0 : }
# 14 : :
# 15 : 5357 : SequentialFile::~SequentialFile() = default;
# 16 : :
# 17 : 1923 : RandomAccessFile::~RandomAccessFile() = default;
# 18 : :
# 19 : 10093 : WritableFile::~WritableFile() = default;
# 20 : :
# 21 : 2191 : Logger::~Logger() = default;
# 22 : :
# 23 : 2218 : FileLock::~FileLock() = default;
# 24 : :
# 25 : 6909 : void Log(Logger* info_log, const char* format, ...) {
# 26 [ + - ]: 6909 : if (info_log != nullptr) {
# 27 : 6909 : va_list ap;
# 28 : 6909 : va_start(ap, format);
# 29 : 6909 : info_log->Logv(format, ap);
# 30 : 6909 : va_end(ap);
# 31 : 6909 : }
# 32 : 6909 : }
# 33 : :
# 34 : : static Status DoWriteStringToFile(Env* env, const Slice& data,
# 35 : 3411 : const std::string& fname, bool should_sync) {
# 36 : 3411 : WritableFile* file;
# 37 : 3411 : Status s = env->NewWritableFile(fname, &file);
# 38 [ - + ]: 3411 : if (!s.ok()) {
# 39 : 0 : return s;
# 40 : 0 : }
# 41 : 3411 : s = file->Append(data);
# 42 [ + - ][ + - ]: 3411 : if (s.ok() && should_sync) {
# 43 : 3411 : s = file->Sync();
# 44 : 3411 : }
# 45 [ + - ]: 3411 : if (s.ok()) {
# 46 : 3411 : s = file->Close();
# 47 : 3411 : }
# 48 : 3411 : delete file; // Will auto-close if we did not close above
# 49 [ - + ]: 3411 : if (!s.ok()) {
# 50 : 0 : env->DeleteFile(fname);
# 51 : 0 : }
# 52 : 3411 : return s;
# 53 : 3411 : }
# 54 : :
# 55 : : Status WriteStringToFile(Env* env, const Slice& data,
# 56 : 0 : const std::string& fname) {
# 57 : 0 : return DoWriteStringToFile(env, data, fname, false);
# 58 : 0 : }
# 59 : :
# 60 : : Status WriteStringToFileSync(Env* env, const Slice& data,
# 61 : 3411 : const std::string& fname) {
# 62 : 3411 : return DoWriteStringToFile(env, data, fname, true);
# 63 : 3411 : }
# 64 : :
# 65 : 2193 : Status ReadFileToString(Env* env, const std::string& fname, std::string* data) {
# 66 : 2193 : data->clear();
# 67 : 2193 : SequentialFile* file;
# 68 : 2193 : Status s = env->NewSequentialFile(fname, &file);
# 69 [ - + ]: 2193 : if (!s.ok()) {
# 70 : 0 : return s;
# 71 : 0 : }
# 72 : 2193 : static const int kBufferSize = 8192;
# 73 : 2193 : char* space = new char[kBufferSize];
# 74 : 4386 : while (true) {
# 75 : 4386 : Slice fragment;
# 76 : 4386 : s = file->Read(kBufferSize, &fragment, space);
# 77 [ - + ]: 4386 : if (!s.ok()) {
# 78 : 0 : break;
# 79 : 0 : }
# 80 : 4386 : data->append(fragment.data(), fragment.size());
# 81 [ + + ]: 4386 : if (fragment.empty()) {
# 82 : 2193 : break;
# 83 : 2193 : }
# 84 : 4386 : }
# 85 : 2193 : delete[] space;
# 86 : 2193 : delete file;
# 87 : 2193 : return s;
# 88 : 2193 : }
# 89 : :
# 90 : 651 : EnvWrapper::~EnvWrapper() {}
# 91 : :
# 92 : : } // namespace leveldb
|