leveldb
Public Member Functions | Private Member Functions | Private Attributes | List of all members
leveldb::TestWritableFile Class Reference
Inheritance diagram for leveldb::TestWritableFile:
Inheritance graph
[legend]
Collaboration diagram for leveldb::TestWritableFile:
Collaboration graph
[legend]

Public Member Functions

 TestWritableFile (const FileState &state, WritableFile *f, FaultInjectionTestEnv *env)
 
virtual ~TestWritableFile ()
 
virtual Status Append (const Slice &data)
 
virtual Status Close ()
 
virtual Status Flush ()
 
virtual Status Sync ()
 
- Public Member Functions inherited from leveldb::WritableFile
 WritableFile ()
 
virtual ~WritableFile ()
 

Private Member Functions

Status SyncParent ()
 

Private Attributes

FileState state_
 
WritableFiletarget_
 
bool writable_file_opened_
 
FaultInjectionTestEnvenv_
 

Detailed Description

Definition at line 107 of file fault_injection_test.cc.

Constructor & Destructor Documentation

§ TestWritableFile()

leveldb::TestWritableFile::TestWritableFile ( const FileState &  state,
WritableFile f,
FaultInjectionTestEnv env 
)

Definition at line 159 of file fault_injection_test.cc.

162  : state_(state),
163  target_(f),
164  writable_file_opened_(true),
165  env_(env) {
166  assert(f != NULL);
167 }
FaultInjectionTestEnv * env_
Here is the caller graph for this function:

§ ~TestWritableFile()

leveldb::TestWritableFile::~TestWritableFile ( )
virtual

Definition at line 169 of file fault_injection_test.cc.

169  {
170  if (writable_file_opened_) {
171  Close();
172  }
173  delete target_;
174 }
Here is the call graph for this function:

Member Function Documentation

§ Append()

Status leveldb::TestWritableFile::Append ( const Slice data)
virtual

Implements leveldb::WritableFile.

Definition at line 176 of file fault_injection_test.cc.

176  {
177  Status s = target_->Append(data);
178  if (s.ok() && env_->IsFilesystemActive()) {
179  state_.pos_ += data.size();
180  }
181  return s;
182 }
virtual Status Append(const Slice &data)=0
FaultInjectionTestEnv * env_
Here is the call graph for this function:

§ Close()

Status leveldb::TestWritableFile::Close ( )
virtual

Implements leveldb::WritableFile.

Definition at line 184 of file fault_injection_test.cc.

184  {
185  writable_file_opened_ = false;
186  Status s = target_->Close();
187  if (s.ok()) {
189  }
190  return s;
191 }
virtual Status Close()=0
void WritableFileClosed(const FileState &state)
FaultInjectionTestEnv * env_
Here is the call graph for this function:
Here is the caller graph for this function:

§ Flush()

Status leveldb::TestWritableFile::Flush ( )
virtual

Implements leveldb::WritableFile.

Definition at line 193 of file fault_injection_test.cc.

193  {
194  Status s = target_->Flush();
195  if (s.ok() && env_->IsFilesystemActive()) {
196  state_.pos_at_last_flush_ = state_.pos_;
197  }
198  return s;
199 }
virtual Status Flush()=0
FaultInjectionTestEnv * env_
Here is the call graph for this function:

§ Sync()

Status leveldb::TestWritableFile::Sync ( )
virtual

Implements leveldb::WritableFile.

Definition at line 209 of file fault_injection_test.cc.

209  {
210  if (!env_->IsFilesystemActive()) {
211  return Status::OK();
212  }
213  // Ensure new files referred to by the manifest are in the filesystem.
214  Status s = target_->Sync();
215  if (s.ok()) {
216  state_.pos_at_last_sync_ = state_.pos_;
217  }
218  if (env_->IsFileCreatedSinceLastDirSync(state_.filename_)) {
219  Status ps = SyncParent();
220  if (s.ok() && !ps.ok()) {
221  s = ps;
222  }
223  }
224  return s;
225 }
bool IsFileCreatedSinceLastDirSync(const std::string &filename)
static Status OK()
Definition: status.h:32
virtual Status Sync()=0
FaultInjectionTestEnv * env_
Here is the call graph for this function:

§ SyncParent()

Status leveldb::TestWritableFile::SyncParent ( )
private

Definition at line 201 of file fault_injection_test.cc.

201  {
202  Status s = SyncDir(GetDirName(state_.filename_));
203  if (s.ok()) {
204  env_->DirWasSynced();
205  }
206  return s;
207 }
static std::string GetDirName(const std::string filename)
FaultInjectionTestEnv * env_
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

§ env_

FaultInjectionTestEnv* leveldb::TestWritableFile::env_
private

Definition at line 122 of file fault_injection_test.cc.

§ state_

FileState leveldb::TestWritableFile::state_
private

Definition at line 119 of file fault_injection_test.cc.

§ target_

WritableFile* leveldb::TestWritableFile::target_
private

Definition at line 120 of file fault_injection_test.cc.

§ writable_file_opened_

bool leveldb::TestWritableFile::writable_file_opened_
private

Definition at line 121 of file fault_injection_test.cc.


The documentation for this class was generated from the following file: