LCOV - code coverage report
Current view: top level - src/leveldb/util - env.cc (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 41 44 93.2 %
Date: 2015-10-12 22:39:14 Functions: 11 19 57.9 %
Legend: Lines: hit not hit

          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          52 : Env::~Env() {
      10          52 : }
      11             : 
      12         603 : SequentialFile::~SequentialFile() {
      13         603 : }
      14             : 
      15         160 : RandomAccessFile::~RandomAccessFile() {
      16         160 : }
      17             : 
      18        1112 : WritableFile::~WritableFile() {
      19        1112 : }
      20             : 
      21         244 : Logger::~Logger() {
      22         244 : }
      23             : 
      24         247 : FileLock::~FileLock() {
      25         247 : }
      26             : 
      27         747 : void Log(Logger* info_log, const char* format, ...) {
      28         747 :   if (info_log != NULL) {
      29             :     va_list ap;
      30         747 :     va_start(ap, format);
      31         747 :     info_log->Logv(format, ap);
      32         747 :     va_end(ap);
      33             :   }
      34         747 : }
      35             : 
      36         373 : static Status DoWriteStringToFile(Env* env, const Slice& data,
      37             :                                   const std::string& fname,
      38             :                                   bool should_sync) {
      39             :   WritableFile* file;
      40         373 :   Status s = env->NewWritableFile(fname, &file);
      41         373 :   if (!s.ok()) {
      42             :     return s;
      43             :   }
      44         746 :   s = file->Append(data);
      45         373 :   if (s.ok() && should_sync) {
      46         746 :     s = file->Sync();
      47             :   }
      48         373 :   if (s.ok()) {
      49         746 :     s = file->Close();
      50             :   }
      51         373 :   delete file;  // Will auto-close if we did not close above
      52             :   if (!s.ok()) {
      53           0 :     env->DeleteFile(fname);
      54             :   }
      55             :   return s;
      56             : }
      57             : 
      58           0 : Status WriteStringToFile(Env* env, const Slice& data,
      59             :                          const std::string& fname) {
      60           0 :   return DoWriteStringToFile(env, data, fname, false);
      61             : }
      62             : 
      63         373 : Status WriteStringToFileSync(Env* env, const Slice& data,
      64             :                              const std::string& fname) {
      65         373 :   return DoWriteStringToFile(env, data, fname, true);
      66             : }
      67             : 
      68         244 : Status ReadFileToString(Env* env, const std::string& fname, std::string* data) {
      69             :   data->clear();
      70             :   SequentialFile* file;
      71         244 :   Status s = env->NewSequentialFile(fname, &file);
      72         244 :   if (!s.ok()) {
      73             :     return s;
      74             :   }
      75             :   static const int kBufferSize = 8192;
      76         244 :   char* space = new char[kBufferSize];
      77             :   while (true) {
      78             :     Slice fragment;
      79         976 :     s = file->Read(kBufferSize, &fragment, space);
      80         488 :     if (!s.ok()) {
      81             :       break;
      82             :     }
      83         488 :     data->append(fragment.data(), fragment.size());
      84         488 :     if (fragment.empty()) {
      85             :       break;
      86             :     }
      87             :   }
      88         244 :   delete[] space;
      89         244 :   delete file;
      90             :   return s;
      91             : }
      92             : 
      93          52 : EnvWrapper::~EnvWrapper() {
      94          52 : }
      95             : 
      96             : }  // namespace leveldb

Generated by: LCOV version 1.11