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

📄 px_ss_module_rs.h

📁 MMORPG游戏服务器端架构及函数
💻 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 + -