UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
DbHandle.H
Go to the documentation of this file.
1 /* DbHandle.H */
2 /* $Id: DbHandle.H,v 1.13 2006/02/01 15:54:42 ibadm Exp $ */
3 
4 /*********************************************************************
5  *
6  * UNIVERS
7  * (C) ООО "ГЕОВЕРС", 2001
8  *
9  * Все права защищены * * Использование, копирование или передача регулируются законами * Российской Федерации "Об авторском праве и смежных правах", "О * правовой охране программ для электронных вычислительных машин и баз * данных" * * Encoding: ISO-8859-5 (GOST) * *********************************************************************/ #ifndef __DbHandle_H #define __DbHandle_H /** \file *********************************************************************** * * Локальная База Данных (версия 4) * Доступ к таблице ЛБД через унифицированный класс, задающий правила * именования и размещения файлов БД. * ***********************************************************************/ #include <ldb/DbTable.H> #include <ldb/DbPointer.H> #include <ldb/dbnamedefs.h> #include <ldb/dblocks.h> /** Максимальное число попыток создания файла таблицы ЛБД при предыдущей попытке, завершившейся с EEXIST. */ #define DB_CREATE_EFFORTS 10 /** *********************************************************************** * Унифицированный класс, задающий правила доступа, именования и * размещения файла БД. */ class DbHandle : public DbTable, public DbPointer { public: /** Создать таблицу с указанным именем указанного типа в памяти. В зависимости от способа доступа поля dbNameStruct имеют следующий смысл: <pre> table well sp mod ------------------+---------------+-------+-------+--------------- DbMemory Опция Опция Опция Не используется DbReadOnlyFile Обязательно Опция Опция Обязательно DbReadWriteFile Обязательно Опция Опция Обязательно DbCreateFile Обязательно Опция Опция Опция ------------------+---------------+-------+-------+--------------- </pre> Для способа доступа DbMemory проект можно не указывать (NULL). */ DbHandle (const char* szProject, const dbNameStruct& dbns, DbAccess dbac); /** Создать копию таблицы в памяти. */ DbHandle (DbHandle& dbh); /** Сохранить изменения в файле для DbReadWriteFile, DbCreateFile */ virtual ~DbHandle (); /** Изменить режим доступа к таблице базы данных. Данная операция изменяет тип блокировки таблицы за исключением DbMemory. Изменение типа на DbCreateFile аналогична изменению на DbReadWriteFile. */ void change_access_mode (DbAccess new_dbac); /** Получить режим, в котором открыта таблица ЛБД. */ DbAccess access_mode () const; /** Возвратить идентификатор блокировки (неопределенное число, если таблица открыта в режиме DB_MEMORY). */ LockId db_lock_id () const; /** Восстановить блокировку (полезно в том случае, если она была потеряна). Функция db_lock_id() будет возвращать новый идентификатор. */ void restore_lock (); /** Записать таблицу в файл, если способ доступа позволяется это сделать. */ void flush (); /** Проект, в котором создана таблица. */ const char* project () const; /** Вставить в таблицу строку (строки) перед указанной line. Если указана строка _last_, то после последней. Если аргумент bInit TRUE, то требуется инициализация строк. */ virtual void insert_line (DbIndex line, DbIndex lines_cnt = 1, Logic bInit = TRUE); /** Удалить из таблицы указанный диапазон строк [line1..line2] */ virtual void remove_lines (DbIndex line1, DbIndex line2); /** Получить индекс домена по имени и проверить его на соответствие формату конкретной таблицы БД - кидает ERROR__DB_DMN_NOT_FOUND */ virtual unsigned valid_n2i (const char* column) const; protected: /** Способ доступа к таблице. */ DbAccess dbaccess; /** Открытый файл таблицы ЛБД. Для DbMemory равен EOF */ int fildes; /** Дополнить заданную маску dbsname уникальным в проекте номером mod и создать файл с полученным именем. */ int unique_dbmod (); /** Идентификатор блокировки. */ LockId lock_id; /** Доступ к файлу. */ DbFile *filstor; /** Тип архитектуры процессора, в которой читаются/пишутся данные на диске. */ ByteOrder file_bo; /** Признак того, что в историю обработки однажды уже заносилось событие о модификации данного объекта БД */ Logic heModifyData_added; /* * Операции переопределяемого ввода/вывода (no _last_ support). */ /** Безусловно прочитать из файла на диске указанные строки [line1..line2]. Гарантируется, что в памяти строки идут последовательно. */ virtual void read_line_seq (DbIndex line1, DbIndex line2); /** Безусловно сохранить в файл на диске указанные строки [line1..line2]. Гарантируется, что в памяти строки идут последовательно. */ virtual void write_line_seq (DbIndex line1, DbIndex line2); }; #endif /* DbHandle.H */
10  *
11  * Использование, копирование или передача регулируются законами
12  * Российской Федерации "Об авторском праве и смежных правах", "О * правовой охране программ для электронных вычислительных машин и баз * данных" * * Encoding: ISO-8859-5 (GOST) * *********************************************************************/ #ifndef __DbHandle_H #define __DbHandle_H /** \file *********************************************************************** * * Локальная База Данных (версия 4) * Доступ к таблице ЛБД через унифицированный класс, задающий правила * именования и размещения файлов БД. * ***********************************************************************/ #include <ldb/DbTable.H> #include <ldb/DbPointer.H> #include <ldb/dbnamedefs.h> #include <ldb/dblocks.h> /** Максимальное число попыток создания файла таблицы ЛБД при предыдущей попытке, завершившейся с EEXIST. */ #define DB_CREATE_EFFORTS 10 /** *********************************************************************** * Унифицированный класс, задающий правила доступа, именования и * размещения файла БД. */ class DbHandle : public DbTable, public DbPointer { public: /** Создать таблицу с указанным именем указанного типа в памяти. В зависимости от способа доступа поля dbNameStruct имеют следующий смысл: <pre> table well sp mod ------------------+---------------+-------+-------+--------------- DbMemory Опция Опция Опция Не используется DbReadOnlyFile Обязательно Опция Опция Обязательно DbReadWriteFile Обязательно Опция Опция Обязательно DbCreateFile Обязательно Опция Опция Опция ------------------+---------------+-------+-------+--------------- </pre> Для способа доступа DbMemory проект можно не указывать (NULL). */ DbHandle (const char* szProject, const dbNameStruct& dbns, DbAccess dbac); /** Создать копию таблицы в памяти. */ DbHandle (DbHandle& dbh); /** Сохранить изменения в файле для DbReadWriteFile, DbCreateFile */ virtual ~DbHandle (); /** Изменить режим доступа к таблице базы данных. Данная операция изменяет тип блокировки таблицы за исключением DbMemory. Изменение типа на DbCreateFile аналогична изменению на DbReadWriteFile. */ void change_access_mode (DbAccess new_dbac); /** Получить режим, в котором открыта таблица ЛБД. */ DbAccess access_mode () const; /** Возвратить идентификатор блокировки (неопределенное число, если таблица открыта в режиме DB_MEMORY). */ LockId db_lock_id () const; /** Восстановить блокировку (полезно в том случае, если она была потеряна). Функция db_lock_id() будет возвращать новый идентификатор. */ void restore_lock (); /** Записать таблицу в файл, если способ доступа позволяется это сделать. */ void flush (); /** Проект, в котором создана таблица. */ const char* project () const; /** Вставить в таблицу строку (строки) перед указанной line. Если указана строка _last_, то после последней. Если аргумент bInit TRUE, то требуется инициализация строк. */ virtual void insert_line (DbIndex line, DbIndex lines_cnt = 1, Logic bInit = TRUE); /** Удалить из таблицы указанный диапазон строк [line1..line2] */ virtual void remove_lines (DbIndex line1, DbIndex line2); /** Получить индекс домена по имени и проверить его на соответствие формату конкретной таблицы БД - кидает ERROR__DB_DMN_NOT_FOUND */ virtual unsigned valid_n2i (const char* column) const; protected: /** Способ доступа к таблице. */ DbAccess dbaccess; /** Открытый файл таблицы ЛБД. Для DbMemory равен EOF */ int fildes; /** Дополнить заданную маску dbsname уникальным в проекте номером mod и создать файл с полученным именем. */ int unique_dbmod (); /** Идентификатор блокировки. */ LockId lock_id; /** Доступ к файлу. */ DbFile *filstor; /** Тип архитектуры процессора, в которой читаются/пишутся данные на диске. */ ByteOrder file_bo; /** Признак того, что в историю обработки однажды уже заносилось событие о модификации данного объекта БД */ Logic heModifyData_added; /* * Операции переопределяемого ввода/вывода (no _last_ support). */ /** Безусловно прочитать из файла на диске указанные строки [line1..line2]. Гарантируется, что в памяти строки идут последовательно. */ virtual void read_line_seq (DbIndex line1, DbIndex line2); /** Безусловно сохранить в файл на диске указанные строки [line1..line2]. Гарантируется, что в памяти строки идут последовательно. */ virtual void write_line_seq (DbIndex line1, DbIndex line2); }; #endif /* DbHandle.H */
13  * правовой охране программ для электронных вычислительных машин и баз * данных" * * Encoding: ISO-8859-5 (GOST) * *********************************************************************/ #ifndef __DbHandle_H #define __DbHandle_H /** \file *********************************************************************** * * Локальная База Данных (версия 4) * Доступ к таблице ЛБД через унифицированный класс, задающий правила * именования и размещения файлов БД. * ***********************************************************************/ #include <ldb/DbTable.H> #include <ldb/DbPointer.H> #include <ldb/dbnamedefs.h> #include <ldb/dblocks.h> /** Максимальное число попыток создания файла таблицы ЛБД при предыдущей попытке, завершившейся с EEXIST. */ #define DB_CREATE_EFFORTS 10 /** *********************************************************************** * Унифицированный класс, задающий правила доступа, именования и * размещения файла БД. */ class DbHandle : public DbTable, public DbPointer { public: /** Создать таблицу с указанным именем указанного типа в памяти. В зависимости от способа доступа поля dbNameStruct имеют следующий смысл: <pre> table well sp mod ------------------+---------------+-------+-------+--------------- DbMemory Опция Опция Опция Не используется DbReadOnlyFile Обязательно Опция Опция Обязательно DbReadWriteFile Обязательно Опция Опция Обязательно DbCreateFile Обязательно Опция Опция Опция ------------------+---------------+-------+-------+--------------- </pre> Для способа доступа DbMemory проект можно не указывать (NULL). */ DbHandle (const char* szProject, const dbNameStruct& dbns, DbAccess dbac); /** Создать копию таблицы в памяти. */ DbHandle (DbHandle& dbh); /** Сохранить изменения в файле для DbReadWriteFile, DbCreateFile */ virtual ~DbHandle (); /** Изменить режим доступа к таблице базы данных. Данная операция изменяет тип блокировки таблицы за исключением DbMemory. Изменение типа на DbCreateFile аналогична изменению на DbReadWriteFile. */ void change_access_mode (DbAccess new_dbac); /** Получить режим, в котором открыта таблица ЛБД. */ DbAccess access_mode () const; /** Возвратить идентификатор блокировки (неопределенное число, если таблица открыта в режиме DB_MEMORY). */ LockId db_lock_id () const; /** Восстановить блокировку (полезно в том случае, если она была потеряна). Функция db_lock_id() будет возвращать новый идентификатор. */ void restore_lock (); /** Записать таблицу в файл, если способ доступа позволяется это сделать. */ void flush (); /** Проект, в котором создана таблица. */ const char* project () const; /** Вставить в таблицу строку (строки) перед указанной line. Если указана строка _last_, то после последней. Если аргумент bInit TRUE, то требуется инициализация строк. */ virtual void insert_line (DbIndex line, DbIndex lines_cnt = 1, Logic bInit = TRUE); /** Удалить из таблицы указанный диапазон строк [line1..line2] */ virtual void remove_lines (DbIndex line1, DbIndex line2); /** Получить индекс домена по имени и проверить его на соответствие формату конкретной таблицы БД - кидает ERROR__DB_DMN_NOT_FOUND */ virtual unsigned valid_n2i (const char* column) const; protected: /** Способ доступа к таблице. */ DbAccess dbaccess; /** Открытый файл таблицы ЛБД. Для DbMemory равен EOF */ int fildes; /** Дополнить заданную маску dbsname уникальным в проекте номером mod и создать файл с полученным именем. */ int unique_dbmod (); /** Идентификатор блокировки. */ LockId lock_id; /** Доступ к файлу. */ DbFile *filstor; /** Тип архитектуры процессора, в которой читаются/пишутся данные на диске. */ ByteOrder file_bo; /** Признак того, что в историю обработки однажды уже заносилось событие о модификации данного объекта БД */ Logic heModifyData_added; /* * Операции переопределяемого ввода/вывода (no _last_ support). */ /** Безусловно прочитать из файла на диске указанные строки [line1..line2]. Гарантируется, что в памяти строки идут последовательно. */ virtual void read_line_seq (DbIndex line1, DbIndex line2); /** Безусловно сохранить в файл на диске указанные строки [line1..line2]. Гарантируется, что в памяти строки идут последовательно. */ virtual void write_line_seq (DbIndex line1, DbIndex line2); }; #endif /* DbHandle.H */
14  * данных"
15  *
16  * Encoding: ISO-8859-5 (GOST)
17  *
18  *********************************************************************/
19 
20 #ifndef __DbHandle_H
21 #define __DbHandle_H
22 
32 #include <ldb/DbTable.H>
33 #include <ldb/DbPointer.H>
34 #include <ldb/dbnamedefs.h>
35 #include <ldb/dblocks.h>
36 
37 
40 #define DB_CREATE_EFFORTS 10
41 
42 
48 class DbHandle
49  : public DbTable,
50  public DbPointer
51 {
52 public:
53 
68  DbHandle (const char* szProject, const dbNameStruct& dbns,
69  DbAccess dbac);
70 
72  DbHandle (DbHandle& dbh);
73 
75  virtual ~DbHandle ();
76 
81  void change_access_mode (DbAccess new_dbac);
82 
83 
85  DbAccess access_mode () const;
86 
89  LockId db_lock_id () const;
90 
94  void restore_lock ();
95 
96 
99  void flush ();
100 
102  const char* project () const;
103 
107  virtual void insert_line (DbIndex line, DbIndex lines_cnt = 1,
108  Logic bInit = TRUE);
109 
111  virtual void remove_lines (DbIndex line1, DbIndex line2);
112 
115  virtual unsigned valid_n2i (const char* column) const;
116 
117 protected:
118 
120  DbAccess dbaccess;
121 
123  int fildes;
124 
127  int unique_dbmod ();
128 
130  LockId lock_id;
131 
134 
137  ByteOrder file_bo;
138 
142 
143  /*
144  * Операции переопределяемого вводавывода (no _last_ support). */ /** Безусловно прочитать из файла на диске указанные строки [line1..line2]. Гарантируется, что в памяти строки идут последовательно. */ virtual void read_line_seq (DbIndex line1, DbIndex line2); /** Безусловно сохранить в файл на диске указанные строки [line1..line2]. Гарантируется, что в памяти строки идут последовательно. */ virtual void write_line_seq (DbIndex line1, DbIndex line2); }; #endif /* DbHandle.H */ /вывода (no _last_ support).
145  */
146 
150  virtual void read_line_seq (DbIndex line1, DbIndex line2);
151 
155  virtual void write_line_seq (DbIndex line1, DbIndex line2);
156 
157 };
158 
159 
160 #endif /* DbHandle.H */
ByteOrder file_bo
Definition: DbHandle.H:137
const char * project() const
int fildes
Definition: DbHandle.H:123
DbAccess access_mode() const
Definition: dbnamedefs.h:67
LockId db_lock_id() const
Definition: DbPointer.H:15
virtual void remove_lines(DbIndex line1, DbIndex line2)
void restore_lock()
DbAccess dbaccess
Definition: DbHandle.H:120
DbFile * filstor
Definition: DbHandle.H:133
LockId lock_id
Definition: DbHandle.H:130
virtual void read_line_seq(DbIndex line1, DbIndex line2)
virtual unsigned valid_n2i(const char *column) const
DbHandle(const char *szProject, const dbNameStruct &dbns, DbAccess dbac)
virtual ~DbHandle()
Logic heModifyData_added
Definition: DbHandle.H:141
void flush()
void change_access_mode(DbAccess new_dbac)
Definition: DbTable.H:84
virtual void write_line_seq(DbIndex line1, DbIndex line2)
Definition: DbFileStorage.H:28
virtual void insert_line(DbIndex line, DbIndex lines_cnt=1, Logic bInit=TRUE)
int unique_dbmod()
Definition: DbHandle.H:48