/************************************************* File name: cdr.h Author: Version: 9:00:00 Date: 2002-5-7 Description:该文件定义了cdrCollector模块包含的一些常量和函数,最后定义了三个重要的数据 结构cdr_src,cdr_def,cdr_tlv History: No. Author: Date: Version: Description: *************************************************/ #ifndef __CDR_HEAD_FILE #define __CDR_HEAD_FILE #include "mysql.h" #include "errmsg.h" #include #include "../../../../plat/public/src/include/asn1.h" #include "../../../../plat/snmp/src/include/snmp.h" #include "../../../omcLib/c_program/omcLib/omcLib.h" #ifndef _T_DWORD #define _T_DWORD typedef unsigned int DWORD; #endif #define CDR_DEBUG 0 #define CDR_LINK_DEBUG 0 #define CDR_PORT 4968 #define CDR_SRC_NUM 32 #define CDR_TYPE_NUM 20 #define CDR_OBJ_MAX 128 #define HOST_NAME "localhost" #define CDRDB_NAME "CDR_DB" #define CSV_PATH "/usr/local/cdr" #define CDR_LOG_PATH "../log" #define CDR_LOG_FILE "cdrlog" #define ST_GET_TAIL 0 #define ST_WAIT_TAIL 1 #define ST_CDR_IDLE 2 #define ST_GET_CDR 3 #define ST_WAIT_CDR 4 #define ST_TAIL_IDLE 5 #define ST_SET_TAIL 6 #define CDR_TIME_UNIT 20 //ms #define CDR_T_idle 250 //5s lowest speed #define CDR_T_getcdr 30 //60ms #define CDR_T_gettail 500 //300*20=6000ms=10s #define CDR_T_settail 100 //2s #define HEAP_SIZE_MAX 256 //1024*28 #define HEAP_TIME_MAX 50*30 //30s #define OMC_SINGLE 7 #define OMC_MASTER 5 char totalCdrFileName[128]; char cdrFileName[128]; int cdrHour; //此结构的逻辑意义是数据表里的一个字段 typedef struct cdr_tlv { char tag_seq[17][20]; //16个tag的值 char field_name[30]; //字段的名称 BYTE type; //字段的类型 BOOL optional; //字段是否可选 BYTE width; //字段长度 } cdr_tlv; //此结构的逻辑意义是数据表的定义,包括该表的字段定义 typedef struct cdr_def { BOOL valid[17]; //tag位标识 char field_set[1024]; //全部的字段连接字符 char field_select[1024];//指定版本的全部字段连接字符 char create_sql[2048]; //产生数据表的sql语句 BYTE field_count; //字段的个数 cdr_tlv obj[CDR_OBJ_MAX];//字段对象数组 } cdr_def; //此数据结构的逻辑意义是一个CDR数据源 typedef struct cdr_src { int loss; //丢包统计 int recv; //接收的包的个数 int recd; //记录的包的个数 BYTE cdr_ver; //版本号 WORD sysTypeNo; //系统设备号 BYTE sysid; //系统号 BYTE retry; //重试次数 //informaion for getting cdr int get_timeout; //get操作剩余时间 BOOL get_state; //get状态 DWORD instance; //头指针 DWORD head; //尾指针 BYTE maxbind; //最大绑定变量数 DWORD request_id; //get的请求ID //information for setting ptail int set_timeout; //set操作剩余时间 BYTE set_fail; //set失败次数 BOOL set_state; //set状态 BOOL move_flag; //尾指针是否改变 DWORD set_rid; //set请求ID snmp_addr addr; //IP和端口地址 DWORD oid[20]; //OID BYTE oid_len; //OID长度 DWORD head_oid[20]; //头指针OID DWORD tail_oid[20]; //尾指针OID char record_table[30]; //数据表名 char define_table[30]; //数据定义表名 char csv_path[50]; //保存路径 int backup_max; //最大备份个数 int buf_size; //缓冲区大小 cdr_def define; //对应的字段表定义对象 //BOOL receive_tail; //BOOL receive_cdr; //int serial; } cdr_src; void converseFile(); void cdr_timer(); void cdr_init(); #if CDR_LINK_DEBUG void cdrdebug_init(); #endif void cdrdb_init(); void cdr_start(); void cdr_stop(); BOOL cdr_status(); void cdrdb_timer(); void cdrlog_init(); void cdrlog_timer(); void cdr_log(const char *fmt, ...); void cdr_logmsg(BYTE * buf, int len); void cdr_report(); int safe_query(MYSQL * conn, char *strquery, int retry); #endif