📄 px_ss_module_rs.h
字号:
#ifndef _PX_SS_MODULE_RS_
#define _PX_SS_MODULE_RS_
/* must been first include begin */
#include "..\ProjectX_Common\ProjectX_Copyright.h"
#include "..\ProjectX_Common\ProjectX_Common.h"
/* must been first include end */
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
//线集群级
typedef struct tagPx_SS_Line_Server {
int line_uid;
int srv_uid;
int area_uid;
int max_online_support;
int curr_online;
unsigned int ip;
u_short port;
char line_name[MAX_SERVERNAME_LEN];
char srv_name[MAX_SERVERNAME_LEN];
char area_name[MAX_SERVERNAME_LEN];
struct tagPx_SS_Line_Server * pNext;
}PX_SS_LINE_SERVER, * LPPX_SS_LINE_SERVER;
//服集群级
typedef struct tagPx_SS_Srv {
int srv_uid;
int area_uid;
char srv_name[MAX_SERVERNAME_LEN];
char area_name[MAX_SERVERNAME_LEN];
int max_online_support;
int curr_online;
int size_buf;
char * send_buf;
PX_SS_LINE_SERVER * pline_list;
struct tagPx_SS_Srv * pNext;
}PX_SS_SRV, * LPPX_SS_SRV;
//区服
typedef struct tagPx_SS_Area {
int area_uid;
char area_name[MAX_SERVERNAME_LEN];
int max_online_support;
int curr_online;
int size_buf;
char * send_buf;
PX_SS_SRV * psrv_list;
struct tagPx_SS_Area * pNext;
}PX_SS_AREA, * LPPX_SS_AREA;
#define STATE_PX_SS_RS_NO_INIT 0 //没有初始化
#define STATE_PX_SS_RS_FREE_USE 1 //可以被再使用,内部成员已经初始化
#define STATE_PX_SS_RS_CONNECTED 2 //刚连接上
#define STATE_PX_SS_RS_VERSION_CHECK 3 //处于版本检查阶段
#define STATE_PX_SS_RS_NORMAL_USE 4 //正常使用中,已经pass版本检查
#define STATE_PX_SS_RS_DISCONNECTED 5 //断开状态,原因不计
#define STATE_PX_SS_RS_REUSE_PROCESS 6 //处于重用时间消失中
#define STATE_PX_SS_RS_ERROR_FOUND 7 //有错误检测到
#define DEFAULT_PX_SS_RS_RECV_BUF_LEN 512
#define DEFAULT_PX_SS_RS_SEND_BUF_LEN 512
#define DEFAULT_PX_SS_RS_IOCP_BUF_LEN 512
typedef struct tagPx_SS_Rs_Info {
CRITICAL_SECTION * cts_state;
CRITICAL_SECTION * cts_recv;
CRITICAL_SECTION * cts_send;
int size_recv_append;
int size_send_append;
int frame_heartbreak;
int heartbreak;
int frame_prev;
unsigned int ip;
u_short port;
byte state;
byte send_sign;
byte version_sign;
SOCKET s_client;
char * recv_buf;
char * precv_start;
char * precv_end;
char * precv_append;
char * send_buf;
char * psend_start;
char * psend_end;
char * psend_append;
}PX_SS_RS_INFO, * LPPX_SS_RS_INFO;
typedef struct tagPx_SS_RS_Per_Data {
PX_SS_RS_INFO * prsi;
}PX_SS_RS_PER_DATA, * LPPX_SS_RS_PER_DATA;
typedef struct tagPx_SS_RS_Io_Data {
OVERLAPPED overlapped;
char * buf;
int size;
byte io_type;
WSABUF wsabuf;
}PX_SS_RS_IO_DATA, * LPPX_SS_RS_IO_DATA;
typedef struct tagPx_SS_RS_Redirect {
PX_SS_RS_PER_DATA * per_data;
PX_SS_RS_IO_DATA * io_recv;
PX_SS_RS_IO_DATA * io_send;
}PX_SS_RS_REDIRECT, * LPPX_SS_RS_REDIRECT;
typedef struct tagPx_SS_RS_Key {
PX_SS_RS_REDIRECT * prdi;
byte state;
}PX_SS_RS_KEY, * LPPX_SS_RS_KEY;
typedef struct tagPx_SS_RS_Version {
char version[MAX_VERSION_LEN];
char md5code[MAX_MD5CODE_LEN];
char antihackcode[MAX_AHCODE_LEN];
BOOL accept;
}PX_SS_RS_VERSION, * LPPX_SS_RS_VERSION;
void init_module_rs(void);
void set_module_rs_state(byte state);
BOOL valid_module_rs_state(byte state);
BOOL init_rs_key_new(PX_SS_RS_KEY * prsk);
BOOL init_rs_key_reuse(PX_SS_RS_KEY * prsk);
BOOL close_specify_rs(PX_SS_RS_PER_DATA * per_data);
void set_specify_rs_state(PX_SS_RS_PER_DATA * per_data, byte state);
void set_specify_rs_send_state(PX_SS_RS_PER_DATA * per_data, byte state);
void add_buf_to_specify_rs_recv_buf(PX_SS_RS_PER_DATA * per_data,int size,char * packet);
void update_specify_rs_send_buf(PX_SS_RS_PER_DATA * per_data, int size);
int get_specify_rs_send_buf(PX_SS_RS_PER_DATA * per_data, char * packet);
void close_all_rs(void);
void close_module_rs(void);
void free_module_rs_resource(void);
void handle_module_rs_recv_buf(void);
void handle_module_rs_heartbreak(void);
void handle_module_rs_reuse(void);
void update_module_rs_status(void);
void update_module_rs_cache(void);
void send_all_rs_ss_need_close(void);
void free_module_rs_area_resource();
DWORD WINAPI module_rs_accept_thread(PVOID paparm);
DWORD WINAPI module_rs_iocp_thread(PVOID paparm);
#endif //_PX_SS_MODULE_RS_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -