blob: f275da781e2c448e4f9f09f74b72584ec766b783 [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_STORE_H_
#define COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_STORE_H_
#include <map>
#include <string>
#include "base/macros.h"
#include "base/strings/string_piece.h"
namespace data_reduction_proxy {
// Interface for a permanent key/value store used by the Data Reduction Proxy
// component. This class has no-op methods for clients that do not want to
// support a permanent store.
class DataStore {
public:
// Values are used in UMA. Do not change existing values; only append to the
// end. STATUS_MAX should always be last element.
enum Status { OK, NOT_FOUND, CORRUPTED, IO_ERROR, MISC_ERROR, STATUS_MAX };
DataStore();
virtual ~DataStore();
// Initializes the store on DB sequenced task runner.
virtual void InitializeOnDBThread();
// Gets the value from the store for the provided key.
virtual Status Get(base::StringPiece key, std::string* value);
// Persists the provided keys and values into the store.
virtual Status Put(const std::map<std::string, std::string>& map);
virtual Status Delete(base::StringPiece key);
// Deletes the LevelDB and recreates it.
virtual Status RecreateDB();
private:
DISALLOW_COPY_AND_ASSIGN(DataStore);
};
} // namespace data_reduction_proxy
#endif // COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_STORE_H_