// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. See the AUTHORS file for names of contributors.

#ifndef STORAGE_LEVELDB_INCLUDE_STATISTICS_H_
#define STORAGE_LEVELDB_INCLUDE_STATISTICS_H_

namespace leveldb {

// Analyze the performance of a db
class Statistics {
 public: 
  // Create an Statistics object with default values for all fields.
  Statistics() : numFileOpens_(0), numFileCloses_(0),
                 numFileErrors_(0) {}

  virtual void incNumFileOpens() = 0;
  virtual void incNumFileCloses() = 0;
  virtual void incNumFileErrors() = 0;

  virtual long getNumFileOpens() { return numFileOpens_;}
  virtual long getNumFileCloses() { return numFileCloses_;}
  virtual long getNumFileErrors() { return numFileErrors_;}
  virtual ~Statistics() {}

 protected:
  long numFileOpens_;
  long numFileCloses_;
  long numFileErrors_;
};

}  // namespace leveldb

#endif  // STORAGE_LEVELDB_INCLUDE_STATISTICS_H_