📄 net_cmd.h
字号:
#ifndef _CMD_H
#define _CMD_H
#include "../notif/notif_net.h"
#include "../notif/notif_cmd.h"
#include "../notif/notif_av.h"
#include "net_bk.h"
#include "net.h"
#include "net_udp.h"
#include "list"
#include "timer.h"
#include "vector"
#include "alarm server.h"
#define MAX_BACKUP_THREAD_NUM 50
#define MAX_TALKING_THREAD_NUM 50
// 类超前声明
class net_av;
#define IPPORT ULONG rip, USHORT rport
/*
* 网络命令功能, 登录, 退出, 打开视频通道, 关闭通道...
*/
/*
* 权限.
* 1 = User
* 2 = Admin
*/
//##ModelId=3F9A1D2202BF
class server
{
protected:
//##ModelId=3F9A1D2202C0
ULONG _ip;
//##ModelId=3F9A1D2202C9
USHORT _port;
public:
TREC_ALARMINFO alarm_info ;
public:
//##ModelId=3F9A1D2202E7
server(): _ip(0), _port(0) {}
server(ULONG i, USHORT p): _ip(i), _port(p){}
//##ModelId=3F9A1D2202F1
//##ModelId=3F9A1D2202FC
server(const server& p) {*this = p;}
ULONG get_ip() {return _ip;}
USHORT get_port() {return _port;}
//##ModelId=3F9A1D220306
server& operator=(const server& p)
{
_ip = p._ip;
_port = p._port;
alarm_info=p.alarm_info;
return *this;
}
//##ModelId=3F9A1D220325
ULONG ip() const {return _ip;}
//##ModelId=3F9A1D22032E
USHORT port() const {return _port;}
//##ModelId=3F9A1D220330
friend bool operator==(const server& p1, const server& p2);
};
class privilege: public server
{
PRIVILEGE priv;
public:
privilege(): priv(privNONE) {};
privilege(ULONG i, USHORT p, PRIVILEGE _priv): server(i, p), priv(_priv)
{
}
//##ModelId=3F9A1D220310
PRIVILEGE get_priv() const {return priv;}
//##ModelId=3F9A1D22031A
void set_priv(PRIVILEGE p) {priv = p;}
//##ModelId=3F9A1D22031C
bool is_admin() const
{
return get_priv() == privADMIN;
}
//##ModelId=3F9A1D220306
privilege& operator=(const privilege& p)
{
_ip = p._ip;
_port = p._port;
alarm_info=p.alarm_info;
priv = p.priv;
return *this;
}
friend bool operator==(const privilege& p1, const privilege& p2);
};
inline bool operator==(const server& p1, const server& p2)
{
return (p1._ip == p2._ip) &&
(p1._port == p2._port);
}
inline bool operator==(const privilege& p1, const privilege& p2)
{
return ((const server&)p1 == (const server&)p2);
}
//##ModelId=3F9A1D220342
typedef std::list<server> server_list;
typedef std::list<privilege> priv_list;
typedef server_list::iterator sit;
typedef priv_list::iterator pit;
//////////////////////////////////////////////////////////////////////////
//##ModelId=3F9A1D230004
class net_cmd: public net_udp
{
net_alarmserver * palarmserver;
server_list request_list;
//##ModelId=3F9A1D230019
priv_list connected; // 权限表
enum
{
max_channel=256,
};
// timer dec_timer;
//##ModelId=3F9A1D23002D
net_av* av[max_channel];
//##ModelId=3F9A1D230036
ULONG last_ip;
//##ModelId=3F9A1D230040
USHORT last_port;
UINT udp_bitrate;
//USHORT last_mport;
//##ModelId=3F9A1D23004A
int last_group;
//##ModelId=3F9A1D23005F
CMD_CALLEE cmdcb;
//##ModelId=3F9A1D230073
OPT_GET_CALLEE gc;
//##ModelId=3F9A1D230087
OPT_SET_CALLEE sc;
/// VOD
//##ModelId=3F9A1D2300A4
int vod_group;
/// Backup
BACKUP_CALLEE bkcb ;
///@{
ULONG bk_ip[MAX_BACKUP_THREAD_NUM] ;
ULONG bk_port[MAX_BACKUP_THREAD_NUM] ;
UCHAR timeout[MAX_BACKUP_THREAD_NUM] ;
net_bk *pBackupTh[MAX_BACKUP_THREAD_NUM] ;
///@}
//Talking
BACKUP_CALLEE talkcb ;
ULONG talk_ip[MAX_TALKING_THREAD_NUM] ;
ULONG talk_port[MAX_TALKING_THREAD_NUM] ;
UCHAR talk_timeout[MAX_TALKING_THREAD_NUM] ;
int talk_channel[MAX_TALKING_THREAD_NUM];
net_bk *ptalkTh[MAX_TALKING_THREAD_NUM] ;
// 收到原始数据
//##ModelId=3F9A1D2300F4
virtual void on_net_udp_recv(byte* buf, int length, net_addr* from);
friend void CALLBACK request_decode(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
//##ModelId=3F9A1D24004C
friend void CALLBACK shake_hand(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
//##ModelId=3F9A1D24007D
friend void CALLBACK request_vod_frame(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
friend void CALLBACK request_vod_frame_ntsc(UINT uTimerID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
void check_connect_timeout();
void send_keep_port();
//##ModelId=3F9A1D230112
void send_cmd(IPPORT, char cmd, const char* data, int datalen);
void send_cmd_data(ULONG ip, USHORT port, char cmd, const char* data, int datalen, int group);
//##ModelId=3F9A1D23013A
void request_vod_frame(ULONG ip,USHORT port, USHORT mport, LONG speed,int group);
//##ModelId=3F9A1D23014E
void close_vod();
void close_vod(int group);
//##ModelId=3F9A1D230180
bool is_admin(ULONG ip, ULONG port);
//##ModelId=3F9A1D23019E
void add_priv(ULONG ip, ULONG port, PRIVILEGE priv);
//##ModelId=3F9A1D2301BC
void remove_priv(ULONG ip, ULONG port);
//##ModelId=3F9A1D2301DC
timer timer_shake_hand;
timer timer_vod_ctl_pal;
timer timer_vod_ctl_ntsc;
//timer connect_timeout;
//##ModelId=3F9A1D2301E5
void shake_hand();
//##ModelId=3F9A1D2301F9
void process_alarm(net_addr* from, byte* data);
void process_disconnect(ULONG ip, USHORT port);
void disconnect_timeout(ULONG ip, USHORT port);
//void create_new_bind_socket(ULONG ip, USHORT port, ULONG mip, int group, int channel);
ULONG send_open_channel(IPPORT);
ULONG operation_btye(int m);
USHORT m_vod_mport;
USHORT m_real_mport;
public:
//##ModelId=3F9A1D230203
net_cmd();
//##ModelId=3F9A1D230217
virtual ~net_cmd();
UINT get_bitrate(int group);
UINT udp_get_bitrate();
//##ModelId=3F9A1D230221
BOOL create(IPPORT, CMD_CALLEE cb);
static net_cmd * m_netcmdp;
friend class CSoundin;
//##ModelId=3F9A1D23023F
virtual void destroy();
HWND get_cmdhwnd() { return cmdcb; }
/// 登录
//##ModelId=3F9A1D230249
BOOL login(IPPORT, LPCTSTR user, LPCTSTR password);
/// 登出
//##ModelId=3F9A1D230267
BOOL logout(IPPORT, BOOL close_remote);
// /// 加入视频多播组
// BOOL join_channel(IPPORT, LONG channel);
// BOOL leave_channel(LONG group);
/// 打开主机视频通道
//##ModelId=3F9A1D230285
BOOL open_remote_channel(IPPORT,
LONG channel_idx,
LONG group,
VIDEO_CALLEE cb);
/// 关闭主机视频通道
//##ModelId=3F9A1D2302AD
BOOL close_remote_channel(LONG group);
// 退出视频多播组
//##ModelId=3F9A1D2302C1
BOOL close_local_channel(LONG group);
//##ModelId=3F9A1D2302D5
void update_window(int group);
//##ModelId=3F9A1D2302DF
void set_option(IPPORT, NET_OPTIONS no, void* stuff, OPT_SET_CALLEE cb);
//##ModelId=3F9A1D230307
void get_option(IPPORT, NET_OPTIONS no, int channel, OPT_GET_CALLEE cb);
void get_options_file(IPPORT, byte * m_byte, OPT_GET_CALLEE cb);
void get_options_backup_file(IPPORT, byte * m_byte, OPT_GET_CALLEE cb);
//##ModelId=3F9A1D23032F
void switch_audio(int group);
//##ModelId=3F9A1D230339
void mute(BOOL mute);
//##ModelId=3F9A1D23034D
int get_audio_group();
void clear_alarm(ULONG ip, USHORT port);
//##ModelId=3F9A1D23034E
VOD_SPEED get_vod_speed(ULONG ip,int group);
//##ModelId=3F9A1D230357
void request_vod(ULONG rip, LONG rport,
const TREC_FILETIME* ft,
VOD_CMD cmd,
int group,
VIDEO_CALLEE cb);
//##ModelId=3F9A1D23037F
BOOL is_voding(int group);
void initi_login_if(IPPORT, LPCTSTR user);
int get_login_version(IPPORT);
//##ModelId=3F9A1D230393
void start_local_record(int group, TCHAR drive);
//##ModelId=3F9A1D2303A7
void stop_local_record(int group);
//##ModelId=3F9A1D2303BB
void get_local_record(int group, TCHAR* drive);
bool check_vod_send_cmd(LONG speed, int time_nub);
void start_backup(IPPORT, TREC_BACKUPTIME* opt, BACKUP_CALLEE cb) ;
void stop_backup(ULONG rip, USHORT rport) ;
void clear_backup(ULONG rip, USHORT rport) ;
void check_backup() ;
void start_talk(IPPORT,int channel, BACKUP_CALLEE cb) ;
void stop_talk(ULONG rip, USHORT rport) ;
void clear_talk(ULONG rip, USHORT rport) ;
void check_talk() ;
//##ModelId=3F9A1D240006
bool snapshot(int group, LPCTSTR bmpfile);
//##ModelId=3F9A1D24001A
void set_video_renderer(COLOR_SPACE cs, BOOL video_mem);
void get_disk_info(ULONG rip, ULONG rport);
//##ModelId=3F9A1D240037
PRIVILEGE get_privilege(ULONG ip, USHORT port);
//##ModelId=3F9A1D24004B
BOOL is_muted();
void post_alarm_message(ULONG ip, USHORT m_new, USHORT m_type);
void send_bind_cmd(USHORT oldport, USHORT newport, BOOL image_type);
void get_zh_decstate(ULONG ip, USHORT port, int address);
ULONG get_host_by_name(LPCTSTR m_name);
BOOL set_cb_showhandle(int group, VIDEO_CALLEE cb);
BOOL set_callbackfn(int group, PCALLBACKSTREAMPROD p, DWORD d1, DWORD d2);
BOOL set_decodedcallbackfn(int group, PCALLBACKDECODEDSTREAMPROD p, DWORD d1, DWORD d2);
BOOL setdrawaddimagecallback(int group, pDraw_Add_Image pimage, DWORD d1, DWORD d2);
BOOL open_alarm_server(USHORT bindport);
BOOL close_alarm_server();
BOOL set_update_statue(ULONG ip, USHORT port);
BOOL set_netclub_info(ULONG ip, USHORT port, void * buf, int len);
BOOL set_dvrrestart(ULONG ip, USHORT port);
BOOL sendcardid(ULONG ip, USHORT port, void * buf);
BOOL opennet_alarm(ULONG ip, USHORT port, int channel);
BOOL closenet_alarm(ULONG ip, USHORT port, int channel);
BOOL openalarm_output(ULONG ip, USHORT port, int output);
BOOL is_opened(int group);
};
class ip_speed
{
public:
ULONG ip;
USHORT port;
LONG speed;
int group;
USHORT mport;
ip_speed()
{
ip = 0;
port = 0;
speed = 0;
group = -1;
mport = 0;
}
};
class login_version
{
public:
ULONG ip;
USHORT port;
int connecttime;
int version;
};
#undef IPPORT
#endif // _CMD_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -