📄 px_rs_module_cl.h
字号:
#ifndef _PX_RS_MODULE_CL_
#define _PX_RS_MODULE_CL_
/* must been first include begin */
#include "..\ProjectX_Common\ProjectX_Copyright.h"
#include "..\ProjectX_Common\ProjectX_Common.h"
/* must been first include end */
/* std and common include */
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
typedef struct tagPx_RS_Cl_Info {
CRITICAL_SECTION * cts_state;
CRITICAL_SECTION * cts_recv;
CRITICAL_SECTION * cts_send;
int size_recv_append;
int size_send_append;
int last_heartbreak_frame;
int last_heartbreak;
int last_frame_handled;
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_RS_CL_INFO, * LPPX_RS_CL_INFO;
typedef struct tagPx_RS_Cl_Per_Data{
PX_RS_CL_INFO * pci;
}PX_RS_CL_PER_DATA, * LPPX_RS_CL_PER_DATA;
typedef struct tagPx_RS_Cl_Io_Data {
OVERLAPPED overlapped;
char * buf;
int size;
byte io_type;
WSABUF wsabuf;
}PX_RS_CL_IO_DATA, * LPPX_RS_CL_IO_DATA;
typedef struct tagPx_RS_Cl_Redirect {
PX_RS_CL_PER_DATA * per_data;
PX_RS_CL_IO_DATA * io_recv;
PX_RS_CL_IO_DATA * io_send;
}PX_RS_CL_REDIRECT, * LPPX_RS_CL_REDIRECT;
typedef struct tagPx_RS_Cl_Key {
byte state;
PX_RS_CL_REDIRECT * prdi;
}PX_RS_CL_KEY, * LPPX_RS_CL_KEY;
typedef struct tagPx_RS_Cl_Version {
char version[MAX_VERSION_LEN];
char md5code[MAX_MD5CODE_LEN];
char antihackcode[MAX_AHCODE_LEN];
BOOL accept;
}PX_RS_CL_VERSION, * LPPX_RS_CL_VERSION;
typedef struct tagPx_RS_Cl_Hashtable {
int hash_key;
int dest_offset;
}PX_RS_CL_HASHTABLE, * LPPX_RS_CL_HASHTABLE;
void init_module_cl(void);
void init_module_cl_hashtable(void);
void close_module_cl(void);
void free_module_cl_hashtable(void);
void close_specify_cl(PX_RS_CL_INFO * pci);
void free_module_cl_resource(void);
BOOL init_cl_key_new(PX_RS_CL_KEY * pck);
BOOL init_cl_key_reuse(PX_RS_CL_KEY * pck);
void set_module_cl_state(byte state);
void set_specify_cl_state(byte state);
void set_specify_cl_send_state(PX_RS_CL_INFO * pci, byte state);
BOOL valid_module_cl_state(byte state);
BOOL valid_specify_cl_state(PX_RS_CL_INFO * pci,byte state);
void add_buf_to_specify_cl_recv_buf(PX_RS_CL_INFO * pci,int size,char * packet);
void add_buf_to_specify_cl_send_buf(PX_RS_CL_INFO * pci,int size,char * packet);
void update_specify_cl_send_buf(PX_RS_CL_INFO * pci,int size);
int get_specify_cl_send_buf(PX_RS_CL_INFO * pci, char * packet);
void tidy_specify_cl_recv_buf(PX_RS_CL_INFO * pci);
void tidy_specify_cl_send_buf(PX_RS_CL_INFO * pci);
void close_module_cl_all_connect(void);
void post_quit_module_cl_thread(void);
void handle_module_cl_heartbreak(void);
void handle_module_cl_reuse(void);
void module_cl_handle_event_rs_need_close(void);
void handle_all_client_recv_buf(void);
void handle_specify_cl_recv_buf(PX_RS_CL_INFO * pci);
void handle_specify_cl_packet(PX_RS_CL_INFO * pci,WORD mc,WORD size,char * packet);
void module_cl_packet_request_connect(PX_RS_CL_INFO * pci,WORD size,char * packet);
//+....
DWORD WINAPI module_cl_accept_thread(PVOID paparm);
DWORD WINAPI module_cl_iocp_thread(PVOID paparm);
#endif //_PX_RS_MODULE_CL_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -