#ifndef STORAGE_BROWSER_DATABASE_DATABASE_CONNECTIONS_H_
#define STORAGE_BROWSER_DATABASE_DATABASE_CONNECTIONS_H_
#include <stdint.h>
#include <map>
#include <string>
#include <vector>
#include "base/component_export.h"
namespace storage {
class COMPONENT_EXPORT(STORAGE_BROWSER) DatabaseConnections {
public:
DatabaseConnections();
~DatabaseConnections();
bool IsEmpty() const;
bool IsDatabaseOpened(const std::string& origin_identifier,
const std::u16string& database_name) const;
bool IsOriginUsed(const std::string& origin_identifier) const;
bool AddConnection(const std::string& origin_identifier,
const std::u16string& database_name);
bool RemoveConnection(const std::string& origin_identifier,
const std::u16string& database_name);
void RemoveAllConnections();
std::vector<std::pair<std::string, std::u16string>> RemoveConnections(
const DatabaseConnections& connections);
int64_t GetOpenDatabaseSize(const std::string& origin_identifier,
const std::u16string& database_name) const;
void SetOpenDatabaseSize(const std::string& origin_identifier,
const std::u16string& database_name,
int64_t size);
std::vector<std::pair<std::string, std::u16string>> ListConnections() const;
private:
using DBConnections = std::map<std::u16string, std::pair<int, int64_t>>;
std::map<std::string, DBConnections> connections_;
bool RemoveConnectionsHelper(const std::string& origin_identifier,
const std::u16string& database_name,
int num_connections);
};
}
#endif