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.
5 #include "leveldb/env.h"
12 SequentialFile::~SequentialFile() {
15 RandomAccessFile::~RandomAccessFile() {
18 WritableFile::~WritableFile() {
24 FileLock::~FileLock() {
27 void Log(Logger* info_log, const char* format, ...) {
28 if (info_log != NULL) {
31 info_log->Logv(format, ap);
36 static Status DoWriteStringToFile(Env* env, const Slice& data,
37 const std::string& fname,
40 Status s = env->NewWritableFile(fname, &file);
44 s = file->Append(data);
45 if (s.ok() && should_sync) {
51 delete file; // Will auto-close if we did not close above
53 env->DeleteFile(fname);
58 Status WriteStringToFile(Env* env, const Slice& data,
59 const std::string& fname) {
60 return DoWriteStringToFile(env, data, fname, false);
63 Status WriteStringToFileSync(Env* env, const Slice& data,
64 const std::string& fname) {
65 return DoWriteStringToFile(env, data, fname, true);
68 Status ReadFileToString(Env* env, const std::string& fname, std::string* data) {
71 Status s = env->NewSequentialFile(fname, &file);
75 static const int kBufferSize = 8192;
76 char* space = new char[kBufferSize];
79 s = file->Read(kBufferSize, &fragment, space);
83 data->append(fragment.data(), fragment.size());
84 if (fragment.empty()) {
93 EnvWrapper::~EnvWrapper() {
96 } // namespace leveldb