chromium/components/leveldb_proto/internal/proto_database_selector.h

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COMPONENTS_LEVELDB_PROTO_INTERNAL_PROTO_DATABASE_SELECTOR_H_
#define COMPONENTS_LEVELDB_PROTO_INTERNAL_PROTO_DATABASE_SELECTOR_H_

#include <memory>
#include <string>

#include "base/component_export.h"
#include "base/containers/queue.h"
#include "base/files/file_path.h"
#include "base/task/sequenced_task_runner.h"
#include "components/leveldb_proto/internal/proto_leveldb_wrapper.h"
#include "components/leveldb_proto/public/shared_proto_database_client_list.h"

namespace leveldb_proto {

class MigrationDelegate;
class SharedProtoDatabase;
class SharedProtoDatabaseClient;
class SharedProtoDatabaseProvider;
class UniqueProtoDatabase;

// A wrapper around unique and shared database client. Handles initialization of
// underlying database as unique or shared as requested.
// TODO: Discuss the init flow/migration path for unique/shared DB here.
class COMPONENT_EXPORT(LEVELDB_PROTO) ProtoDatabaseSelector
    : public base::RefCountedThreadSafe<ProtoDatabaseSelector> {};

}  // namespace leveldb_proto

#endif  // COMPONENTS_LEVELDB_PROTO_INTERNAL_PROTO_DATABASE_SELECTOR_H_