156 lines
3.6 KiB
C
156 lines
3.6 KiB
C
/*************************************************
|
||
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 <dirent.h>
|
||
#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
|