Files
Wei, Jing 5c462e7adb [Issue #2 ] 南瑞郭海龙交接最终版2.0
1.由于郭海龙修改了提供的库,导致增加了大量南瑞的头文件,
  所以新建include目录用于存放所有的南瑞提供的同文件。

2. 修复sys_nicmonitor进程重启后,调用接口告警问题。

3. 增加USER_NUSP宏,用于nusp用户。

4. 由于新增了许多头文件且需交接给郭海龙,所以独立了一版2.0版本以用于区分。

	修改:     code/README
	新文件:   code/dep/42/dotconf#1.0.13-1.pkg.tar.gz
	新文件:   code/dep/42/run.sh
	新文件:   code/dep/90/libdotconf-dev_1.3-0.2_amd64.deb
	新文件:   code/dep/90/libdotconf-dev_1.3-0.2_arm64.deb
	新文件:   code/dep/90/libdotconf0_1.3-0.2_amd64.deb
	新文件:   code/dep/90/libdotconf0_1.3-0.2_arm64.deb
	新文件:   code/dep/90/run.sh
	新文件:   code/dep/libproc_common.so
	新文件:   code/dep/old/libman.so
	新文件:   code/dep/proc_common.cpp
	新文件:   code/sys_nicmonitor-code.tar.gz
	修改:     code/sys_nicmonitor/Makefile
	修改:     code/sys_nicmonitor/README
	新文件:   code/sys_nicmonitor/include/common_types.h
	新文件:   code/sys_nicmonitor/include/d5000_err.h
	新文件:   code/sys_nicmonitor/include/db_api/DeleteRecorder.h
	新文件:   code/sys_nicmonitor/include/db_api/codb_net.h
	新文件:   code/sys_nicmonitor/include/db_api/mc_rtdb_m.h
	新文件:   code/sys_nicmonitor/include/db_api/mc_rtdb_mng.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_apinet.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_apinet_rtdb_key.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_apiop.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_apiop.h.old
	新文件:   code/sys_nicmonitor/include/db_api/odb_app2id.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_autolock.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_baseindex.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_ckeymanager.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_common.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_define.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_double_overflow_hashindex.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_field.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_hashindex.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_hashpk.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_intel_ptr.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_lock.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_net.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_net_m.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_netfactory.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_nooverflow_pk.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_orbmgr.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_profile.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_prv_struct.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_public.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_rtdbbase.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_rtdbfactory.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_rtdbop.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_rtdbtable.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_struct.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_system.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_table.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_tablebase.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_tablemgr.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_tablenet.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_tableop.h
	新文件:   code/sys_nicmonitor/include/db_api/odb_where.h
	新文件:   code/sys_nicmonitor/include/db_api/pub_buf.h
	新文件:   code/sys_nicmonitor/include/db_api/rtdb_graph_name_list.h
	新文件:   code/sys_nicmonitor/include/db_api/server2proto.h
	新文件:   code/sys_nicmonitor/include/db_api/tab2idx.h
	新文件:   code/sys_nicmonitor/include/db_api/vl_get_data.h
	新文件:   code/sys_nicmonitor/include/db_api/vl_struct.h
	新文件:   code/sys_nicmonitor/include/db_api/vl_struct_m.cpp
	新文件:   code/sys_nicmonitor/include/db_api/vl_struct_m.h
	新文件:   code/sys_nicmonitor/include/db_com/CAppNo.h
	新文件:   code/sys_nicmonitor/include/db_com/CCharArray.h
	新文件:   code/sys_nicmonitor/include/db_com/CDataStream.h
	新文件:   code/sys_nicmonitor/include/db_com/CDbCommitClient.h
	新文件:   code/sys_nicmonitor/include/db_com/CDbMonitorClient.h
	新文件:   code/sys_nicmonitor/include/db_com/CDbMonitorLocal.h
	新文件:   code/sys_nicmonitor/include/db_com/CDbMonitorShm.h
	新文件:   code/sys_nicmonitor/include/db_com/CDbRepSet.h
	新文件:   code/sys_nicmonitor/include/db_com/CDbSem.h
	新文件:   code/sys_nicmonitor/include/db_com/CDbSemUse.h
	新文件:   code/sys_nicmonitor/include/db_com/CDbShm.h
	新文件:   code/sys_nicmonitor/include/db_com/CDyCfgLocal.h
	新文件:   code/sys_nicmonitor/include/db_com/CDyCommitClient.h
	新文件:   code/sys_nicmonitor/include/db_com/CDyMonitorClient.h
	新文件:   code/sys_nicmonitor/include/db_com/CDyMonitorLocal.h
	新文件:   code/sys_nicmonitor/include/db_com/CDyMonitorShm.h
	新文件:   code/sys_nicmonitor/include/db_com/CDySem.h
	新文件:   code/sys_nicmonitor/include/db_com/CDySemUse.h
	新文件:   code/sys_nicmonitor/include/db_com/CDyShm.h
	新文件:   code/sys_nicmonitor/include/db_com/CDyTagShmInfo.h
	新文件:   code/sys_nicmonitor/include/db_com/CErrorLog.h
	新文件:   code/sys_nicmonitor/include/db_com/CFindFile.h
	新文件:   code/sys_nicmonitor/include/db_com/CPrecTime.h
	新文件:   code/sys_nicmonitor/include/db_com/CRecordSet.h
	新文件:   code/sys_nicmonitor/include/db_com/CRedisAccess.h
	新文件:   code/sys_nicmonitor/include/db_com/CRepSet.h
	新文件:   code/sys_nicmonitor/include/db_com/CSaveReCommitSql.h
	新文件:   code/sys_nicmonitor/include/db_com/CSqlResultAlign.h
	新文件:   code/sys_nicmonitor/include/db_com/CSqlResultAlignClient.h
	新文件:   code/sys_nicmonitor/include/db_com/CSqlResultAlignClient2.h
	新文件:   code/sys_nicmonitor/include/db_com/DBAccess.h
	新文件:   code/sys_nicmonitor/include/db_com/DBCipher.h
	新文件:   code/sys_nicmonitor/include/db_com/DBConnectPool.h
	新文件:   code/sys_nicmonitor/include/db_com/DbFileNetIf.h
	新文件:   code/sys_nicmonitor/include/db_com/Hbase.h
	新文件:   code/sys_nicmonitor/include/db_com/Hbase_constants.h
	新文件:   code/sys_nicmonitor/include/db_com/Hbase_types.h
	新文件:   code/sys_nicmonitor/include/db_com/MyMutex.h
	新文件:   code/sys_nicmonitor/include/db_com/cross_region_sync_client.h
	新文件:   code/sys_nicmonitor/include/db_com/database_rep_m.h
	新文件:   code/sys_nicmonitor/include/db_com/db_commit_define.h
	新文件:   code/sys_nicmonitor/include/db_com/db_commit_m.h
	新文件:   code/sys_nicmonitor/include/db_com/db_error_define.h
	新文件:   code/sys_nicmonitor/include/db_com/db_extern.h
	新文件:   code/sys_nicmonitor/include/db_com/db_global.h
	新文件:   code/sys_nicmonitor/include/db_com/db_micro_define.h
	新文件:   code/sys_nicmonitor/include/db_com/db_monitor_define.h
	新文件:   code/sys_nicmonitor/include/db_com/db_monitor_define.h.old
	新文件:   code/sys_nicmonitor/include/db_com/db_monitor_extern.h
	新文件:   code/sys_nicmonitor/include/db_com/db_monitor_global.h
	新文件:   code/sys_nicmonitor/include/db_com/db_monitor_m.h
	新文件:   code/sys_nicmonitor/include/db_com/db_monitor_m.h.old
	新文件:   code/sys_nicmonitor/include/db_com/db_rep_lib_define.h
	新文件:   code/sys_nicmonitor/include/db_com/db_stat_m.h
	新文件:   code/sys_nicmonitor/include/db_com/db_stat_service_interface.h
	新文件:   code/sys_nicmonitor/include/db_com/ds_log.h
	新文件:   code/sys_nicmonitor/include/db_com/dy_commit_m.h
	新文件:   code/sys_nicmonitor/include/db_com/dy_monitor_define.h
	新文件:   code/sys_nicmonitor/include/db_com/dy_monitor_m.h
	新文件:   code/sys_nicmonitor/include/db_com/dy_public_m.h
	新文件:   code/sys_nicmonitor/include/db_com/dy_sample_define_m.h
	新文件:   code/sys_nicmonitor/include/db_com/dy_sample_define_service_interface.h
	新文件:   code/sys_nicmonitor/include/db_com/dy_stat_m.h
	新文件:   code/sys_nicmonitor/include/db_com/dy_stat_service_interface.h
	新文件:   code/sys_nicmonitor/include/db_com/hiredis.h
	新文件:   code/sys_nicmonitor/include/db_com/interpreter_define.h
	新文件:   code/sys_nicmonitor/include/db_com/interpreter_struct.h
	新文件:   code/sys_nicmonitor/include/db_com/lexical_anls.h
	新文件:   code/sys_nicmonitor/include/db_com/public_m.h
	新文件:   code/sys_nicmonitor/include/db_com/query_sample_m.h
	新文件:   code/sys_nicmonitor/include/db_com/query_sample_pi.h
	新文件:   code/sys_nicmonitor/include/db_com/query_sample_pi_m.h
	新文件:   code/sys_nicmonitor/include/db_com/query_sample_service_interface.h
	新文件:   code/sys_nicmonitor/include/db_com/query_sample_service_pi_interface.h
	新文件:   code/sys_nicmonitor/include/db_com/query_stat_m.h
	新文件:   code/sys_nicmonitor/include/db_com/query_stat_service_interface.h
	新文件:   code/sys_nicmonitor/include/db_com/rdb_commit_client.h
	新文件:   code/sys_nicmonitor/include/db_com/rdb_commit_m.h
	新文件:   code/sys_nicmonitor/include/db_com/rdb_define.pb.h
	新文件:   code/sys_nicmonitor/include/db_com/read.h
	新文件:   code/sys_nicmonitor/include/db_com/rtdbkey_defs.h
	新文件:   code/sys_nicmonitor/include/db_com/sample_data_client_base.h
	新文件:   code/sys_nicmonitor/include/db_com/sample_data_m.h
	新文件:   code/sys_nicmonitor/include/db_com/sample_define_m.h
	新文件:   code/sys_nicmonitor/include/db_com/sample_define_service_interface.h
	新文件:   code/sys_nicmonitor/include/db_com/sample_modify_m.h
	新文件:   code/sys_nicmonitor/include/db_com/sample_modify_service_interface.h
	新文件:   code/sys_nicmonitor/include/db_com/sds.h
	新文件:   code/sys_nicmonitor/include/db_com/server_define.h
	新文件:   code/sys_nicmonitor/include/db_com/sheetdataclient.h
	新文件:   code/sys_nicmonitor/include/db_com/sheetdataclient.h0604
	新文件:   code/sys_nicmonitor/include/db_com/sql_sp_client_base.h
	新文件:   code/sys_nicmonitor/include/db_com/sql_sp_define.h
	新文件:   code/sys_nicmonitor/include/db_com/sql_sp_m.h
	新文件:   code/sys_nicmonitor/include/db_com/sql_sp_send_client_base.h
	新文件:   code/sys_nicmonitor/include/db_com/sql_syntax_anls.h
	新文件:   code/sys_nicmonitor/include/db_com/sql_to_cime.h
	新文件:   code/sys_nicmonitor/include/db_com/sqlite_access.h
	新文件:   code/sys_nicmonitor/include/db_com/sqlite_server_client.h
	新文件:   code/sys_nicmonitor/include/db_com/sqlite_srv_m.h
	新文件:   code/sys_nicmonitor/include/db_com/store_access_client.h
	新文件:   code/sys_nicmonitor/include/db_com/trigger_sample_m.h
	新文件:   code/sys_nicmonitor/include/db_com/trigger_sample_service_interface.h
	新文件:   code/sys_nicmonitor/include/db_com/wholepubtools.h
	新文件:   code/sys_nicmonitor/include/db_com/wholesampledata.h
	新文件:   code/sys_nicmonitor/include/db_com/wholesqlsp.h
	新文件:   code/sys_nicmonitor/include/log_api.h
	新文件:   code/sys_nicmonitor/include/log_define.h
	新文件:   code/sys_nicmonitor/include/logclient.h
	新文件:   code/sys_nicmonitor/include/port_def.h
	新文件:   code/sys_nicmonitor/include/proc_common.h
	新文件:   code/sys_nicmonitor/include/scn_common.h
	新文件:   code/sys_nicmonitor/include/sysadm/proc_define.h
	新文件:   code/sys_nicmonitor/include/sysadm/scn_define.h
	新文件:   code/sys_nicmonitor/include/system.h
	修改:     code/sys_nicmonitor/mnic.c
	修改:     code/sys_nicmonitor/nicinfo_shm.c
	修改:     code/sys_nicmonitor/test.c
	修改:     code/sys_nicmonitor/version.h
	新文件:   code/test/test_nic
	新文件:   code/test/test_nic.cpp
	新文件:   packages/sys_nicmonitor-2.0-linx90-aarch64-bin-d5000.tar.gz
	新文件:   packages/sys_nicmonitor-2.0-linx90-aarch64-bin-nusp.tar.gz
	新文件:   packages/sys_nicmonitor-2.0-linx90-x86_64-bin-d5000.tar.gz
	新文件:   packages/sys_nicmonitor-2.0-linx90-x86_64-bin-nusp.tar.gz
	重命名:   sys_nicmonitor-arm-bin.tar.gz -> packages/sys_nicmonitor-arm-bin.tar.gz
	重命名:   sys_nicmonitor-arm.tar.gz -> packages/sys_nicmonitor-arm.tar.gz
	新文件:   packages/sys_nicmonitor-mips64-bin.tar.gz
	新文件:   packages/sys_nicmonitor-mips64.tar.gz

Signed-off-by: Wei, Jing <jwei@linx-info.com>
2020-10-22 19:15:38 +08:00

355 lines
13 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*******************************************************************************
ModuleName: ODB Real Time Database management system
FileName: odb_table.h
DESCRIPTION: class table struct define
FUNCTION LIST:
COMMENT:
History:
Date Version Modifier Activities
2002-09-01 1.0 modify
================================================================================
2002-09-01 1.0 created
*******************************************************************************/
#ifndef __ODB_TABLE_H__
#define __ODB_TABLE_H__
//#include "odb_struct.h"
#include "odb_prv_struct.h"
#include "odb_public.h"
#include "odb_common.h"
#include "odb_baseindex.h"
#include "DeleteRecorder.h"
using namespace std;
struct FIX_INDEX_DEF;
class CRWLock;
//Test Case
class CaseSearch;
class CaseTableWrite;
class CaseDeleteIndex;
#ifdef _APP_SYS_SUBSTATION
class CaseConGet;
class TestItem;
#endif
#define MAX_AREA_IDX_NUM 10
namespace ODB
{
class Tab2Idx;
enum DIRECTION
{
FORWARD = 0,
BACKWARD = 1 ,
};
class COdbTable
{
public:
COdbTable();
COdbTable(struct DB_APP_TAB* app_tab_ptr, struct DB_CTRL_TAB* ctrl_tab_ptr);
//COdbTable(struct DB_APP_TAB* app_tab_ptr, struct DB_CTRL_TAB* ctrl_tab_ptr, char* odb_file_name);
//COdbTable(struct DB_APP_TAB* app_tab_ptr, struct DB_CTRL_TAB* ctrl_tab_ptr, int odb_no);
//COdbTable(struct DB_APP_TAB* app_tab_ptr, struct DB_CTRL_TAB* ctrl_tab_ptr, char* odb_name);
COdbTable(struct DB_APP_TAB* app_tab_ptr, int odb_no);
COdbTable(struct DB_APP_TAB* app_tab_ptr, char* odb_name);
COdbTable(char* app_ptr);
~COdbTable();
//set environment after default constructor
int SetAppCtrl(struct DB_APP_TAB* app_tab_ptr, struct DB_CTRL_TAB* ctrl_tab_ptr = NULL);
//
//create & delete
//
#ifdef _APP_SYS_SUBSTATION
int CreateTable(const struct STDB_CREAT_REQ* odb_creat_ptr, const struct FIELD_CREAT_REQ* odb_field_descrb_ptr, const struct VIR_FIELD_CREAT_REQ* vir_descrb_ptr, const std::vector<MEMBER_DEFINITION>& vec_offset,INDEX_DEFINE_ARRAY &index_define_array);
#endif
int CreateTable(const struct STDB_CREAT_REQ* odb_creat_ptr, const struct FIELD_CREAT_REQ* odb_field_descrb_ptr, const std::vector<MEMBER_DEFINITION>& vec_offset,INDEX_DEFINE_ARRAY &index_define_array);
int DeleteTable(/*struct STDB_DELETE_REQ* stdb_delete_req_ptr*/);
int AddOneTable(const int r_table_no, const char* table_name_eng);
//int DeleteTable();
int CreateAreaTable(const struct STDB_CREAT_REQ* odb_creat_ptr, const struct FIELD_CREAT_REQ* odb_field_descrb_ptr, const std::vector<MEMBER_DEFINITION>& vec_offset,INDEX_DEFINE_ARRAY &index_define_array);
int DeleteAreaTable();
int ClearTable();
int ClearAreaTable();
int ClearAreaTableHoleDirect();
//write record
int WriteRecords(const char* buf_ptr, const int buf_size);
//
//operation by key word
//
int ReadRecordByKey(const char* keyword, char** record_data_ptr, int& record_data_size);
int WriteRecordByKey(const char* keyword, const char* write_record_ptr, const int write_record_size);
int DeleteRecordByKey(const char* keyword);
int UpdateRecordByKey(const char* keyword, const char* update_record_ptr, const int update_record_size);
int ModifyRecordByKey(const char* keyword, const char* modify_record_ptr, const int modify_record_size);
int DeleteAlignedRecords(const char* keyword, int direction = FORWARD);
int DeleteRecords(const char* keyword, const int key_num);
int DeleteAreaTableRecords(const char* keyword, const int key_num);
//
//query the whole table //2002-11-07
//
//int GetAllRecords(char* buf_ptr, int& buf_size);
int GetAllRecords(char* buf_ptr, const int buf_size);
int GetAreaTableAllRecords(char* buf_ptr, const int buf_size);
//
//move table among application
//
int MoveTo(const int r_table_no);
int MoveTo(const char* table_name);
//
//move record each other
//
void RecordFirst();
int RecordPre();
int RecordNext();
int RecordTo(const int no);
int RecordTo(const char* key_ptr);
void RecordLast();
//
//parameter //2002-10-16
//
struct DB_CTRL_TAB* GetCtrlTabPtr();
struct STDB_TAB* GetStdbTabPtr();
struct STDB_TAB* GetStdbTabPtr(const int area_no);
struct STDB_FIELD_TAB* GetFieldTabPtr();
char* GetDbPtr();
char* GetCurRecordPtr();
int GetKeyWordLength();
int GetRecordNum();
int GetPara(short& field_num, int& record_num, int& record_size);
int GetPara(struct TABLE_PARA& table_para);
#ifdef _APP_SYS_SUBSTATION
struct STDB_VIR_FIELD_TAB* GetVirFieldTabPtr();
//jinjing 2012-03-27
int GetParaAll(struct TABLE_PARA& table_para, std::vector<MEMBER_DEFINITION> vec_offset);
#endif
//
//physical file name
//
int GetFileName(const char* table_name_eng);
int GetWholeMapFileName(char* str_file_name);
int GetFileNameWithAreaName(const char* table_name_eng, const char* area_name);
char* GetTableName();
int GetTableName(char* table_name);
int GetTableNo(bool is_real = false);
//wj added for area tables
int SetAreaEnv(const int area_no, const bool is_manage = false);
#ifndef _APP_SYS_SUBSTATION
int CleanEnv();
#endif
DB_APP_TAB* GetAppTabPtr();
STDB_TAB* GetAreaStdbTabPtr();
time_t GetDbOpenTime(const int table_no);
char* GetTableFileName();
void SetAppTabPtr(DB_APP_TAB* app_tab_ptr);
private:
//
//Access environment //2002-10-15
//
int SetDefaultEnv();
int SetAppEnv(char* app_file_ptr);
int SetTableEnv(const struct DB_CTRL_TAB* const init_ctrl_tab_ptr);
#ifdef _APP_SYS_SUBSTATION
int CleanEnv();
#endif
//
//lock 2002-10-28
//
bool Lock(const DB_LOCK_T& lock_type);
bool UnLock(const DB_LOCK_T& lock_type);
//
//stat 2002-10-28
//
int MinusDbNumTab();
int AddDbNumTab();
int SetStaticsParaPtr(int tag, int op_time);
//
//Operation to Create // 2002-10-10
//
int fill_stdb_tab(const struct STDB_CREAT_REQ* stdb_creat_req_ptr);
//int fill_field_tab(const struct STDB_CREAT_REQ* stdb_creat_req_ptr, const struct STDB_FIELD_DESCRIBLE* stdb_field_describle_ptr);
int fill_field_tab(const struct FIELD_CREAT_REQ* stdb_field_describle_ptr, const int field_num, const std::vector<MEMBER_DEFINITION>& vec_offset);
#ifdef _APP_SYS_SUBSTATION
int fill_vir_field_tab(const struct VIR_FIELD_CREAT_REQ* vir_field_ptr, const int vir_field_num);
#endif
int get_keyword();
int fill_sequent_tab(const struct STDB_CREAT_REQ* stdb_creat_req_ptr, int& stdb_describ_area_size, int& stab_total_size);
int fill_db_ctrl_tab(const struct STDB_CREAT_REQ* stdb_creat_req_ptr,int& stdb_describ_area_size);
//
int search(const char*keyword,int &record_pointer);
int binary_search(const char* keyword, int& record_pointer,bool ext_flag=false);//ext_flag means the search area is in overflow table space in the hole direct table
struct RECORD_HEAD_STRU* get_record_head_ptr(const int record_pointer);
char* get_record_ptr(const int record_pointer);
char* get_record_ptr(const int record_pointer, int& record_size );
int compare_keyword(const char* keyword1_ptr, const char* keyword2_ptr, const int keyword_len);
//
//memory data
//
int move_record(int targ_reccord_pointer,int sour_record_pointer, const int move_num);
static int mem_move(char* targ_ptr, char* sour_ptr, const int count);
int assign_position(int* position_ptr, int assign_val);
//
//Operation to a record
//
int read_record(const int record_pointer, char** record_data_ptr, int& record_data_size); //locked by caller
int write_record(const int record_pointer, const char* write_record_ptr, const int write_record_size); //locked by caller
int delete_record(const int record_pointer); //locked
int modify_record(const int record_pointer, const char* modify_record_ptr, const int modify_record_size,CRWLock &theLock);//locked
//
//Operation to Record Head //2002-10-15
//
int set_record_head(char* record_ptr, const int exist_tag);
int get_record_head(char* record_ptr);
int need_rebuilt(char * table_file_ptr, int shm_size,int table_size);
public:
int sprint_key(char *key_ptr,char *key_string);
int sprint_field(const int data_type, const char* field_data_ptr,char *field_string);
private:
COdbTable(const COdbTable& odb_table);
COdbTable& operator=(const COdbTable& odb_table);
/***********Added for index begin ****************/
public:
INDEX_DEFINE_TAB* GetIdxDfnPtr();
FIELD_INDEX_DEFINE_TAB* GetFldIdxDfnPtr();
FIELDS_IN_INDEXS_DESC_TAB* GetFldsInIdxDescPtr();
FIELDS_USED_IN_INDEX_TAB* GetFldsUsedInIdxPtr();
CBaseIndex *GetIndexPtr(int seq_no);//返回idx_op_ptr_array的第seq_no个元素如果第seq_no个元素是NULL的话new一个元素出来。
CBaseIndex *GetPKIndexPtr();//如果pk_index_ptr不等于NULL就返回一个pk_index_ptr否则new一个新的返回。
int fill_index_tab(INDEX_DEFINE_ARRAY& seq_idx, std::vector<short>& vec_index_fieldno);
int DebugDisp(int index_seq_no,int type);
int GetAppFile(char *file_name,const struct DB_APP_TAB*app_ptr);
private:
INDEX_DEFINE_TAB *m_IdxDefPtr;
FIELDS_IN_INDEXS_DESC_TAB *m_FieldsInIdxDescPtr;
FIELD_INDEX_DEFINE_TAB *m_FieldIdxDefPtr;
FIELDS_USED_IN_INDEX_TAB *m_FieldsUsedInIndexPtr;
std::vector<CBaseIndex *> m_IdxOpPtrArray;//打开一张表的时候就先给idx_op_ptr_array分配对应的空间。只有真正使用到这个索引的时候再构造里面具体的CBaseIndex。在切换到另外一张表的时候要删除每一个CBaseIndex* 然后再重新分配idx_op_ptr_array。
//CNoOverflowPK* direct_pk_ptr;//打开表的时候就要构造好direct_pk_ptr和hash_pk_ptr切换表的时候要unmap或者detach原来里面的指针然后mmap或者attach里面的指针。
//CHashPK *hash_pk_ptr;
CBaseIndex *m_PkIdxPtr;//考虑到扩展性,还是用这样一个指针好一点。
//CBaseIndex* m_AreaIdxPtr[MAX_AREA_NUM][MAX_AREA_IDX_NUM]; //only for area tables' indexes
public:
int FormIdxErrReport(int idx_seq_no,struct FIX_INDEX_DEF &fix_idx_def );//idx_seq_no = -1 means primary key index
/***********Added for index end ****************/
/*********Added for imcompact table begin ********/
private:
int *GetHoleIdxPtr();
int HoleIdxInsert(int record_pointer);
int HoleIdxDelete(int record_pointer);
int HoleIdxDelete(int del_pointer_start, int del_pointer_end);
int m_CurHolePKPointer;//为带洞表的RecordFirst、RecordNext、RecordLast函数、RecordPre函数几个函数服务的。
char* m_ExtDataAreaPtr; //溢出表体数据区的指针
int *m_HoleIdxPtr; //带洞表主键索引指针。
int hole_direct_search (const char* in_keyword, int &record_pointer);
int hole_idx_search (const int record_pointer, int& real_pos);//根据record_pointer得到m_HoleIdxPtr下标
int CheckDownloadTime();
int ClearTableHoleDirect();
int WriteRecordByKeyHoleDirect(const char* keyword, const char* write_record_ptr, const int write_record_size);
int UpdateRecordByKeyHoleDirect(const char* keyword, const char* update_record_ptr, const int update_record_size);
int DeleteRecordByKeyHoleDirect(const char* keyword);
int DeletePK(vector<int>& vec_del_start, vector<int>& vec_del_end);
int DeleteHolePK(vector<int>& vec_del_start, vector<int>& vec_del_end);
int DeleteAlignedRecordsHoleDirect(const char* keyword, int direction = FORWARD);
/*********Added for imcompact table end ********/
#ifdef _APP_SYS_SUBSTATION
//jinjing 2012-03-29 for GetTableParaAll
int create_field_tab(char* field_para_ptr, struct STDB_FIELD_TAB* stdb_field_ptr, const int field_num, const std::vector<MEMBER_DEFINITION>& vec_offset);
//jinjing 2012-03-29 for createStdbField
int checkIsBitField(const int field_no);
#endif
public:
int& GetSemId(const int table_no); //for OPTLOCK jinjing 20120428
void SetSemId(const int table_no, const int sem_id); //for OPTLOCK jinjing 20120428
int SetSemKey(const int app_no, const int r_table_no, const short ctx_no); //for OPTLOCK
private:
struct DB_APP_TAB* m_AppTabPtr; //App info area
struct DB_SYSTEM_TAB* m_SysTabPtr;
struct DB_STATICS_TAB* m_StaticsTabPtr;
struct DB_CTRL_TAB* m_CtrlTabPtr; //Ctrl info area
struct DB_CTRL_TAB* m_CurCtrlTabPtr; //current table's Ctrl info
struct STDB_TAB* m_StdbTabPtr; //
struct STDB_TAB* m_StdbRootTabPtr; //only for area table's root
struct SEQUENT_TAB* m_SequentTabPtr; //
struct STDB_FIELD_TAB* m_StdbFieldTabPtr; //
//std::map<int, char*> m_DbFilePtr;
char* m_DbFilePtr[MAX_APP_TABLE];
char* m_AreaFilePtr[MAX_APP_TABLE][MAX_AREA_NUM]; //only for area table's root
time_t m_DbOpenTime[MAX_APP_TABLE]; //for re-open tables when download
int m_MapSize[MAX_APP_TABLE]; //for re-open tables when download
int m_SemId[MAX_APP_TABLE+1]; //for OPTLOCK
int m_CurTableNo; //for OPTLOCK
char* m_SequentAreaPtr; //current sequent area
char* m_DataAreaPtr; //current data area
int m_CurRecordPointer; //current record position
int m_CurAreaNo;
int m_LastAreaNo; //only for GetPKIdxPtr
int m_LastIdxAreaNo[MAX_AREA_IDX_NUM]; //only for GetIndexPtr
char m_FileName[120]; //current table's physical file name
char m_RootFileName[120]; //only for area table's root
#ifdef _APP_SYS_SUBSTATION
struct STDB_VIR_FIELD_TAB* m_StdbVirFieldTabPtr; //virtual field
friend class CTableOp;
//friend class ::CTestItem;
friend class ::CaseConGet;
friend class ::TestItem;
#endif
//for Recreate Index Shm
friend class Tab2Idx;
//Only for Test Case
friend class ::CaseSearch;
friend class ::CaseTableWrite;
friend class ::CaseDeleteIndex;
};
}
#endif