Files
svc.ems/src/accountMgr/c_program/wxc1AndWxc2ConverseTools/cdr.h
2024-09-27 15:39:34 +08:00

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