⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 px_rs_module_ls.h

📁 MMORPG游戏服务器端架构及函数
💻 H
字号:
#ifndef _PX_RS_MODULE_LS_
#define _PX_RS_MODULE_LS_

/* 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_Ls_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_LS_INFO, * LPPX_RS_LS_INFO;

typedef struct tagPx_RS_Ls_Per_Data{
	PX_RS_LS_INFO	* pci;
}PX_RS_LS_PER_DATA, * LPPX_RS_LS_PER_DATA;

typedef struct tagPx_RS_Ls_Io_Data {
	OVERLAPPED	overlapped;
	char *		buf;
	int			size;
	byte		io_type;
	WSABUF		wsabuf;
}PX_RS_LS_IO_DATA, * LPPX_RS_LS_IO_DATA;

typedef struct tagPx_RS_Ls_Redirect {
	PX_RS_LS_PER_DATA * per_data;
	PX_RS_LS_IO_DATA  * io_recv;
	PX_RS_LS_IO_DATA  * io_send;
}PX_RS_LS_REDIRECT, * LPPX_RS_LS_REDIRECT;

typedef struct tagPx_RS_Ls_Key {
	byte state;
	PX_RS_CL_REDIRECT * prdi;
}PX_RS_LS_KEY, * LPPX_RS_LS_KEY;

typedef struct tagPx_RS_Ls_Version {
	char	version[MAX_VERSION_LEN];
	char	md5code[MAX_MD5CODE_LEN];
	char	antihackcode[MAX_AHCODE_LEN];
	BOOL	accept;
}PX_RS_LS_VERSION, * LPPX_RS_LS_VERSION;


void init_module_ls(void);
void close_module_ls(void);
void free_module_ls_resource(void);

BOOL init_ls_key_new(PX_RS_LS_KEY * plk);
BOOL init_ls_key_reuse(PX_RS_LS_KEY * plk);

void close_speicy_ls(PX_RS_LS_INFO * pli);

void set_module_ls_state(byte state);
void set_specify_ls_state(PX_RS_LS_INFO * pli,byte state);
void set_specify_ls_send_state(PX_RS_LS_INFO * pli,byte state);
BOOL valid_module_ls_state(byte state);
BOOL valid_specify_ls_state(PX_RS_LS_INFO * pli,byte state);

void add_buf_to_specify_ls_recv_buf(PX_RS_LS_INFO * pli,int size,char * packet);
void add_buf_to_specify_ls_send_buf(PX_RS_LS_INFO * pli,int size,char * packet);
void update_specify_ls_send_buf(PX_RS_LS_INFO * pli,int size);
int get_specify_ls_send_buf(PX_RS_LS_INFO * pli,char * packet);
void tidy_specify_ls_send_buf(PX_RS_LS_INFO * pli);
void tidy_specify_ls_recv_buf(PX_RS_LS_INFO * pli);

void close_module_ls_all_connect(void);

void post_quit_module_ls_thread(void);

void handle_module_ls_heartbreak(void);
void handle_module_ls_reuse(void);
void module_cl_handle_event_rs_need_close(void);

void handle_all_logic_server_recv_buf(void);
void handle_specify_logic_server_recv_buf(PX_RS_LS_INFO * pli);
void handle_specify_logic_server_packet(PX_RS_LS_INFO * pli,WORD mc,WORD size,char * packet)

void module_ls_packet_request_connect(PX_RS_LS_INFO * pli,WORD size,char * packet);

DWORD WINAPI module_ls_accept_thread(PVOID paparm);
DWORD WINAPI module_ls_iocp_thread(PVOID paparm);




































#endif	//_PX_RS_MODULE_LS_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -