📄 rc_ctl_define.h
字号:
/*
* 文 件 名:rc_ctl_define.h
* 功 能:链接控制部分的公共的宏定义及类型的定义
* 作 者:马云龙
* E_mail : mayunlong21@163.com
* 开始时间:2007-4-23 16:05
* 结束时间:2007-4-27 13:12
* 修改时间:
*/
#ifndef RC_CTL_DEFINE_H//2007-4-23 16:06
#define RC_CTL_DEFINE_H
#include <sys/epoll.h>
#include "rc_pub_define.h"
#include "rc_pub_type.h"
#include "include/mysql.h"
#include "rc_mysql_util.h"
#define XML_USED
#ifdef XML_USED
#define XML_LEN_TYPE_USED_NO //发送xml时不使用长度和类型
#endif
#define MYSQL_USED_YES //使用数据库
#define DETAILED_INFO_SEND_TASK //在发送任务队列中保存详细信息
#ifdef MYSQL_USED_YES
//#define MYSQL_SAVE_USED_YES //使用保存数据库的功能
#endif
#ifndef DEBUG_MYL_01
#define NUM_PTHREAD_R_N_CAM 50 //从网络读摄像机的线程的数量
#define NUM_PTHREAD_W_N_CAM 20 //向网络写摄像机的线程的数量
#define NUM_PTHREAD_R_N_ATX 50 //从网络读控件的线程的数量
#define NUM_PTHREAD_W_N_ATX 20 //向网络写控件的线程的数量
#else
#define NUM_PTHREAD_R_N_CAM 5 //从网络读摄像机的线程的数量
#define NUM_PTHREAD_W_N_CAM 1 //向网络写摄像机的线程的数量
#define NUM_PTHREAD_R_N_ATX 5 //从网络读控件的线程的数量
#define NUM_PTHREAD_W_N_ATX 2 //向网络写控件的线程的数量
#endif
#define MAX_NUM_SOCKET 65535//最大链接数
#define MAX_LEN_CONNECT_BUF 2048 //链接控制的接收缓冲区大小
#define MAX_PACKETS_SND 10 //一个sock上最大可以发送的数据包的个数
#define VAL_SIGNAL_CGI 12 //cgi要处理的信号
#define TIME_SEC_ALIVE_TASK 240 //任务的最大存活时间(秒)
#define SPACE_DELAY_LINK_MIN 5 //延迟链接的时间间隔(分钟)
#define PORT_LISTEN_CON_CAM 5000 //链接控制监听摄像机的端口号码
#define PORT_LISTEN_CON_ATX 5001 //链接控制监听控件的端口号码
#define PORT_LISTEN_VIDEO 3000 //默认的视频端口
#define DEFAULT_PATH_LOG_CTL "/log/ctl"//默认的视频转发端的日志路径
#define KEY_PORT_SERVER_ATX "AtxServerPort" //链接控制端的控件用的监听端口的关键字
#define KEY_PORT_SERVER_CAM "CamServerPort"//链接控制端的摄像机用的监听端口的关键字
#define KEY_IP_SERVER_VIDEO "VideoServerip" //视频服务器ip的关键字
#define KEY_PORT_SERVER_VIDEO "VideoServerPort"//视频服务器的端口的关键字
#define KEY_SPACE_CONNECT_CTL "CtlConnectSpace"//链接控制端的链接间隔
#define KEY_MAX_FPS "MaxFps" //最大帧率
#define KEY_MAX_FPS "MaxFps" //最大帧率
#define KEY_PATH_LOG_CTL "CtlLogPath"//链接控制端日志文件路径
enum type_action {
TYPE_ACTION_CAMERA = 1,//摄像机的动作
TYPE_ACTION_CGI,//cgi的动作
};
/*
enum state_operation {//操作的状态
STATE_OPERATION_NO = 0,//没有任何操作
STATE_OPERATION_READ,//正在读
STATE_OPERATION_WRITE,//正在写
};*/
typedef struct __struct_task_sended {//已经发送过的任务相关的结构体
unsigned long int createtime;//创建任务的时间
unsigned long int logintime;//链接时间
struct_buf_fifo *oldtask;//任务
struct __struct_task_sended *next;
}struct_task_sended;
typedef struct __struct_data_net {//网络数据缓冲区的结构体
char *buf;//数据指针
unsigned int size;//要发送或者接收的数据长度
unsigned int len;//已经接收或者发送的数据总长度
}struct_data_net;
typedef struct __struct_data_net_s {//要发送的数据队列结构体
struct_data_net data;
struct_buf_fifo *msg_fifo;//管道发送来的消息
struct __struct_data_net_s *next;
}struct_data_net_s;
typedef struct __struct_task_net_r {//读线程池任务队列结构体
int sockfd;//需要读的文件描述符
// char opt;//是否正在操作0没有操作非0有在操作
// struct_data_net data;//读数据缓冲区
struct __struct_task_net_r *next;//下一个任务的指针
}struct_task_net_r;
typedef struct __struct_task_net_w {//写线程池任务队列结构体
int sockfd;//需要写的文件描述符
#ifdef DETAILED_INFO_SEND_TASK
unsigned char type;//链接类型:摄像机还是控件
char serial[MAX_LEN_SERIAL];//摄像机序列号
#endif
pthread_mutex_t mutex_opt;//操作互斥锁
int errors;//连续写出错的次数
unsigned char packets;//要发送的数据包的数量
struct_data_net_s *buf;//数据缓冲区
struct __struct_task_net_w *next;//下一个任务的指针
}struct_task_net_w;
typedef struct __struct_cam_local {//摄像机相关的内网信息(传给与控件的链接使用的)
struct in_addr ip;//内网ip
struct in_addr submask;//子网掩码
unsigned short int port_web;//内网web端口
unsigned short int port_nat;//外网映射端口
}struct_cam_local;
typedef struct __struct_msg_con {//摄像机链接相关信息的结构体
int sockfd;//文件描述符
struct sockaddr_in address;//链接地址
unsigned char type;//链接类型:摄像机还是控件
char serial[MAX_LEN_SERIAL];//序列号
unsigned long int logintime;//链接时间,只对摄像机有用,来标志摄像机的在线状态
pthread_mutex_t mutex_opt;//操作互斥锁
struct_cam_local local;//摄像机的内网网信息
struct_data_net rcv;//接收数据缓冲区
int errors;//接收和发送出错的最大次数
unsigned long int lasttime;//上次成功接收或者发送数据的时间
struct_lab_mysql mysql;//数据库是否存在的标志,0不存在,1存在
struct __struct_msg_con *next;
}struct_msg_con;
typedef struct __struct_msg_atx {//控件链接相关信息的结构体
int sockfd;//文件描述符
struct sockaddr_in address;//链接地址
char serial[MAX_LEN_SERIAL];//序列号
int errors;//接收和发送出错的最大次数
unsigned long int lasttime;//上次成功接收或者发送数据的时间
pthread_mutex_t mutex_opt;//操作互斥锁
struct_data_net rcv;//接收数据缓冲区
struct __struct_msg_atx *next;
}struct_msg_atx;
typedef struct __struct_par_net {//网络线程的入口参数结构体
int *epfd;//epoll文件描述符
}struct_par_net;
typedef struct __struct_info_link {//链接相关信息
unsigned char serial[MAX_LEN_SERIAL];//摄像机序列号
int type;//链接类型,摄像机还是控件
int sockfd;//sock链接id
struct sockaddr_in address;//链接地址
unsigned long int logintime;
}struct_info_link;
typedef struct __struct_msg_alarm {//报警信息结构体
int id;//用户id
char name_user[128];//用户姓名
char name_cam[128];//摄像机名
char tel[32];//电话号码
char mob[32];//手机号码
char address[256];//报警地址
char channel[256];//摄像机通道
char type[128];//报警类型
char ser_cli[MAX_LEN_SERIAL];//报警客户端序列号
char ser_cam[MAX_LEN_SERIAL];//摄像机序列号
}struct_msg_alarm;
#endif//2007-4-23 16:06
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -