Класс std_db_content_t

#include <std_db_content.hpp>

Граф наследования:std_db_content_t:

db_content_t Полный список членов класса

Подробное описание

Стандартная реализация интерфейса db_content_t.


Открытые члены

Реализация унаследованных методов.
virtual void open (const std::string &name, const oess_1::db::storage::config_t &config, bool is_read_only, bool is_auto_repair_enabled)
 Открыть указанную БД.
virtual void client_attach (const std::string &client_id)
 Подключить еще одного клиента к БД.
virtual void client_detach (const std::string &client_id)
 Отключить указанного агента от БД.
virtual oess_1::uint_t client_count () const
 Определить количество подключенных клиентов.
virtual void slice_create (const std::string &client_id, const std::string &name)
 Создание раздела в БД.
virtual void slice_destroy (const std::string &client_id, const std::string &name)
 Удаление раздела в БД.
virtual bool slice_is_exists (const std::string &client_id, const std::string &name)
 Проверка существования раздела в БД.
virtual std::set< std::string > slice_names (const std::string &client_id)
 Получение имен всех существующих разделов в БД.
virtual oess_1::ent_id_t ent_create (const std::string &client_id, const std::string &slice_name, oess_1::io::istream_t &ent_value, oess_1::uint_t ent_size)
 Создать сущность.
virtual void ent_destroy (const std::string &client_id, const oess_1::ent_id_t &ent_id)
 Удалить сущность.
virtual void ent_destroy_all (const std::string &client_id, const std::string &slice_name)
 Удалить все сущности в указанном разделе.
virtual void ent_load (const std::string &client_id, const oess_1::ent_id_t &ent_id, oess_1::io::ostream_t &ent_value)
 Загрузить сущность.
virtual void ent_update (const std::string &client_id, const oess_1::ent_id_t &ent_id, oess_1::io::istream_t &ent_value, oess_1::uint_t ent_size)
 Изменить значение сущности.
virtual oess_1::ent_id_t ent_find_next (const std::string &client_id, const std::string &slice_name, const oess_1::ent_id_t &ent_id)
 Найти следующую существующую сущность.
virtual void transaction_begin (const std::string &client_id)
 Начать транзакцию.
virtual void transaction_commit (const std::string &client_id)
 Подтвердить транзакцию.
virtual void transaction_rollback (const std::string &client_id)
 Откатить транзакцию.

Закрытые типы

 connection_only = 0
 Проверка только открытия БД и подключения клиента.
 must_be_transaction_owner = 1
 Клиент должен быть владельцем транзакции.
enum  { connection_only = 0, must_be_transaction_owner = 1 }
 Флаги для метода check_for_client(). Подробнее...

Закрытые члены

void sys_trans_start ()
 Начать системную транзакцию в хранилище.
void sys_trans_finish ()
 Завершить системную транзакцию.
void careful_sys_trans_rollback ()
 Попытаться осторожно откатить системную транзакцию.
void cleanup ()
 Очистка всех ресурсов без выпуска исключений наружу.
void must_be_open () const
 Порождает исключение, если БД не открыта.
void check_for_client (const std::string &client_id, unsigned int actions) const
 операции над БД.
oess_1::db::storage::entity_stream_tslice_for_entity_search (const std::string &slice_name, const oess_1::ent_id_t &ent_id)
 Найти раздел, в котором нужно искать следующую сущность.

Закрытые данные

auto_ptr_3::obj_ptr_t< oess_1::db::storage::stream_storage_tm_storage
 Физическое хранилище БД.
bool m_is_open
 true, если БД открыта.
std::auto_ptr< client_map_tm_client_map_ptr
 Существует только если БД открыта.
trans_owner_info_t m_transaction_owner
 Описание владельца транзакции.
unsigned int m_trans_deep
 Счетчик начатых транзакций.


Перечисления

anonymous enum [private]

Флаги для метода check_for_client().

Элементы перечислений:
connection_only  Проверка только открытия БД и подключения клиента.
must_be_transaction_owner  Клиент должен быть владельцем транзакции.


Методы

void careful_sys_trans_rollback (  )  [private]

Попытаться осторожно откатить системную транзакцию.

Начиная с:
v.1.4.0
Если m_trans_deep отличен от нуля, то уменьшает m_trans_deep. Если m_trans_deep после этого обнуляется, то откатывает транзакцию в хранилище.

Данный метод предназначен для отката системной транзакции, в которой было поймано какое-нибудь исключение. Поэтом исключения из careful_sys_trans_rollback() не выпускаются.

void check_for_client ( const std::string &  client_id,
unsigned int  actions 
) const [private]

операции над БД.

v.1.1.0 Вызывает must_be_open(), затем проверяет подключен ли клиент к БД.

Если установлен флаг must_be_transaction_owner, то проверяется, является ли клиент владельцем транзакции.

Исключения:
oess_1::ex_t если клиент не может работать с БД (БД не открыта, клиент не подключен, ...).
Аргументы:
client_id  Идентификатор проверяемого клиента.
actions  Битовые флаги, определяющие набор выполняемых действий.

void client_detach ( const std::string &  client_id  )  [virtual]

Отключить указанного агента от БД.

Если такой клиент к БД не подключен, то это ошибкой не считается.

Если клиент проводил транзакцию, то транзакция автоматически откатывается.

Замещает db_content_t.

oess_1::ent_id_t ent_find_next ( const std::string &  client_id,
const std::string &  slice_name,
const oess_1::ent_id_t ent_id 
) [virtual]

Найти следующую существующую сущность.

Для поиска первой существующей сущности в разделе необходимо указать имя раздела и ent_id, эквивалентный NULL. Если ent_id не равен NULL, то считается, что поиск продолжается и имя раздела игнорируется. Если существующих сущностей больше нет, то возвращается эквивалентное NULL значение.

Замещает db_content_t.

void slice_destroy ( const std::string &  client_id,
const std::string &  name 
) [virtual]

Удаление раздела в БД.

Начиная с:
v.1.4.0

Замещает db_content_t.

oess_1::db::storage::entity_stream_t & slice_for_entity_search ( const std::string &  slice_name,
const oess_1::ent_id_t ent_id 
) [private]

Найти раздел, в котором нужно искать следующую сущность.

Если ищется первая сущность, то должен быть определен параметр slice_name. Если первая сущность уже была найдена, то должен быть передан корректный ent_id -- в этом случае раздел берется по идентификатору ent_id_t::m_slice_id.

bool slice_is_exists ( const std::string &  client_id,
const std::string &  name 
) [virtual]

Проверка существования раздела в БД.

Начиная с:
v.1.4.0
Возвращает:
true, если раздел существует.

Замещает db_content_t.

std::set< std::string > slice_names ( const std::string &  client_id  )  [virtual]

Получение имен всех существующих разделов в БД.

Начиная с:
v.1.4.0

Замещает db_content_t.

void sys_trans_finish (  )  [private]

Завершить системную транзакцию.

Начиная с:
v.1.1.0
Уменьшает m_trans_deep и завершает системную транзакцию только если m_trans_deep == 0.

void sys_trans_start (  )  [private]

Начать системную транзакцию в хранилище.

Начиная с:
v.1.1.0 Начинает системную транзакцию, если m_trans_deep == 0. Затем увеличивает m_trans_deep.

void transaction_begin ( const std::string &  client_id  )  [virtual]

Начать транзакцию.

Начиная с:
v.1.1.0

Замещает db_content_t.

void transaction_commit ( const std::string &  client_id  )  [virtual]

Подтвердить транзакцию.

Начиная с:
v.1.1.0

Замещает db_content_t.

void transaction_rollback ( const std::string &  client_id  )  [virtual]

Откатить транзакцию.

Начиная с:
v.1.1.0

Замещает db_content_t.


Данные класса

auto_ptr_3::obj_ptr_t< oess_1::db::storage::stream_storage_t > m_storage [private]

Физическое хранилище БД.

Существует только, если БД открыта.

unsigned int m_trans_deep [private]

Счетчик начатых транзакций.

Начиная с:
v.1.1.0
Увеличивается в sys_trans_start() и уменьшается в sys_trans_finish().

trans_owner_info_t m_transaction_owner [private]

Описание владельца транзакции.

Начиная с:
v.1.1.0


Объявления и описания членов классов находятся в файлах:
Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:38 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz