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

📄 cusemoney.h

📁 Agent in c++ for DragonRaja
💻 H
字号:

#ifndef _CUSEMONEY_H
#define _CUSEMONEY_H

/*
class CWSASocket
{
public:
	CWSASocket():m_bServer(false),m_sSocket(0){};
	CwSASocket( bool bServer, SOCKET sSocket ):m_bServer(bServer),m_sSocket(sSocket) {};
	~CWSASocket(){};

	
private:
	bool m_bServer;	//辑滚牢瘤 努扼捞攫飘牢瘤
	SOCKET	m_sSocket;

};
*/

//#include <winsock2.h>

//#include <string>

#include "stdafx.h"
#include "usertable.h"
#include <list>
#include <algorithm>
using namespace std;

#define WM_USER_ALIVE_PAY WM_USER+101 // 030701 kyo

#pragma pack(push,1)
typedef struct userinfo_pay
	{
		//Agent沥焊
		unsigned long	dwConnectionIndex;
		char szUserPass[32];
		//char	szName[21];

		//PayServer沥焊
		//unsigned long	dwGameId;
		char	szGameId[32];
		char	szUserId[32];
		char	szUserType[32];
		//unsigned long	dwUserType;
		//char szGumUser[3][21];
		int		nAliveTime;	//030703 YGI

	}USERINFOPAY;
#pragma pack (pop)


class CAsyncClient//	: public CWSASocket
{
enum eMSG_TYPE
{
	//WM_SOCKET_EVENT		= 0x0400+100,
	MAX_RECV_BUF_SIZE	= 128,

	GUM_MSG_DIVISION_HEAD	= 0x1D,
	GUM_MSG_DIVISION_TAB	= 0x09,
	GUM_MSG_DIVISION_NULL	= 0x00,

	GUM_STATE_INIT			= 0,	
	GUM_STATE_RUNNING		= 1,
	GUM_STATE_CLOSE			= 2,

	//seq = 0
	GUM_MSG_INITALIZED			= 1,
	GUM_MSG_INIT_FAIL			= 88,
	GUM_MSG_MESSAGEFORM_WRONG	= 99,
	GUM_MSG_RESPONS_INITALIZED	= 100,

	//seq = 1
	GUM_MSG_LOGIN_ACCESS		= 10,
	GUM_MSG_LOGIN_SUCCESS		= 11,
	GUM_MSG_WRONG_PASS			= 12,
	GUM_MSG_HAVENO_AUTHORITY	= 13,
	GUM_MSG_END_OF_DATE			= 14,
	GUM_MSG_ALREADY_LOGIN		= 15,
	GUM_MSG_ALL_SPEND_IP		= 16,
	GUM_MSG_DISCONNECT_USER		= 17,
	GUM_MSG_END_OF_DATE_1DAY	= 18,
	GUM_MSG_END_OF_DATE_1DAY2	= 19,	

	GUM_MSG_LOGOUT_ACCESS		= 20,
	GUM_MSG_LOGOUT_SUCCESS		= 21,
	GUM_MSG_LOGOUT_FAIL			= 22,

	GUM_MSG_ALIVE_USER			= 30,	//030703 YGI

	//seq =-1	
	GUM_MSG_USER_TIMEOVER		= 51,
	GUM_MSG_USER_TIMEOVER_1DAY	= 52,
	GUM_MSG_USER_TIMEOVER_1DAY2	= 53,
	GUM_MSG_USER_DIS_TIMEOVER	= 61,
	GUM_MSG_USER_DIS_TIMEOV_1D	= 62,
	GUM_MSG_USER_DIS_TIMEOV_1D2	= 63,
	GUM_MSG_USER_DIS_OUSER_REQ	= 64,	//促弗 蜡历狼 夸备肺 
	
}EMSG_TYPE;

//typedef
typedef list<USERINFOPAY>			LISTUSER;
typedef list<USERINFOPAY>::iterator	LISTUSERIT;
public:
static const char* SERVER_NAME;
static const char* GAME_ID;
static const char* USER_TYPE;

public:
	CAsyncClient();
	CAsyncClient( const char* strName, const int nGrup, const char* szServerNum, const int nZone);
	~CAsyncClient();

	SOCKET	InitSocket( const char* strIP, const int nPort );		//
	int		InitConnectPayServer();						// 苞陛辑滚尔 Initialized Message甫 林绊 罐绰促.
	void	CloseConnection();
	int		SendInitialMsg2PayServer();					
	void	SetAgentInfo( const char* szName, const int nGroup, const char* szServerNum, const int nZone );
	void	SetUserInfo( USERINFOPAY& info, const int nCn, const char* szUserId, const char* szUserPass, const char* szGameId, const char* szUserType );

	//state
	void	SetCurrentState( const int nState ) { m_nState = nState;};
	int		GetCurrentState( ) const 
				{ 
					return m_nState; 
				};
	bool	IsRunning()	const 
				{ 
					if( GUM_STATE_RUNNING == GetCurrentState() ) return true; 
					return false;
				};
	//Analysys
	int		AnalysysMessage( char* szMsg );			// 罐篮 皋矫瘤甫 盒籍秦辑 府畔茄促.
	int		AnalysysMsgHeader( char* szMsg );			//Seq府畔窍扁
	char*	AnalysysMsgHeader( char* szMsg, int& nSeq );	//Msgbody何盒父 府畔窍扁
	char*	AnalysysMsgType( char* szMsgBody, int& nType );	
	
	int		AnalysysMsgBody( char* szMsgBody , USERINFOPAY& userInfo, int& nRestTime);	// analysys Body
	//int		AnalysysMsgBody_User( char* szMsgBody , USERINFO& userInfo, int& nRestTime)

	HWND	CreateMsgWindow( WNDPROC messageproc);
	int		AddPayUser( USERINFOPAY& stUser );					// list俊 蜡历 历厘
	void	DisconnectUser( USERINFOPAY& stUser );				
	bool	DeletePayUser( USERINFOPAY& stUser );				// list俊辑 蜡历 昏力
	list<USERINFOPAY>::iterator
			FindUserIterator( const char* szUserName);			// list俊辑 秦寸 蜡历狼 馆汗磊 府畔

	//030703 YGI
	void	CheckAliveUser();
	void	SendAliveMessage( USERINFOPAY& userInfo );

	void	SendMsgToPayServer( int nType , USERINFOPAY& stUser);	//屈侥俊 嘎冕 郴侩阑 焊郴霖促. 
	int		SendPayFormatMessage( char* strMsg );				// GUM俊辑 力矫茄 屈侥俊 嘎绰 巩磊凯阑 send茄促.
	void	SendKeepaliveMsg();									//蜡瘤 皋矫瘤. 1盒埃拜栏肺 焊郴档废 茄促. 
	void	SendUserLogin( USERINFOPAY& userInfo, const char* szRIP, const char* szVIP , const int nReConnect);
	void	SendUserLogout( USERINFOPAY& userInfo);				//肺弊酒眶秦崔扼
	void	RecvUserLogin( USERINFOPAY& userInfo);				// 肺弊牢 己傍
	void	RecvUserLoginFail( USERINFOPAY& userInfo, int nType);	//肺弊牢 角菩
	void	RecvUserLogout( USERINFOPAY& userInfo);					//肺弊酒眶 夸没
	void	RecvUserLogoutFail( USERINFOPAY& userInfo );			//肺弊酒眶角菩
	void	RecvUserAlert( USERINFOPAY& userInfo, int nTime);		//蜡历 版绊皋矫瘤
	void	RecvUserDisconnect( USERINFOPAY& userInfo, int nMsgType);	//蜡历 立加 碍力 辆丰	
	void 	RecvResponsMessage( SOCKET socket , char* szBuf); 			//滚欺俊辑 皋矫瘤甫 佬绰促. 
	USERINFO*	FindPayUser( const char* szUserId);	

	//DB connect
	void	SendUserLoginSuccess2DB( const DWORD dwConnectionIndex, const char* szUserId );
	//Client connect
	void	SendUser2Client( const DWORD dwConnectionIndex, const char* szUserId, const int nType);	

	void	LoginUser( const int nCn, const char* szUserId, const char* szUserPass , const char* szGameId, const char* szUserType, const char* szUserRealIp, const char* szUserVrIp);
	void	LogoutUser( const int nCn, const char* szUserName );
	void	LogoutUser( USERINFO *pUser );					// 秦寸 蜡历甫 苞陛辑厚胶尔 立加 辆丰矫糯
	void	LogoutAllUser();

	list<USERINFOPAY>	GetAllUser(){ return m_vtUser;	};		//葛电 蜡历郴侩阑 促 霖促. 
	void	ShowError( int nError );
	bool	IsRightType( int nType );
	
protected:
	//list<USERINFOPAY*> m_vtUser;		//蜡历锅龋 抛捞喉
	void	SetGumHeader( const char* szHeader, const char* szVer )
				{ 
					sprintf( m_szGumHeader, "%s/%s", szHeader, szVer); 
					sprintf( m_szKeepaliveMsg, "%s\t0\0352\theart_beat\t\0", m_szGumHeader );
				};
//	void	SetDivided( const char* szHeaderDivided, const char* szWordDivided, const char* szNULL ){};
	LISTUSER m_vtUser;		//蜡历锅龋 抛捞喉
	char	m_szGumHeader[16];	//秦歹器杆
	char	m_szKeepaliveMsg[128];

private:
	static const char dvHeader;
	static const char dvWord;
	static const char* dvNull;

	SOCKET	m_sSocket;			//苞陛辑滚尔 烹脚窍绰 家墓
	char	m_strServerName[24];		//辑滚捞抚
	int		m_nServerGroupNum;	//辑滚弊缝锅龋 辑滚悸 锅龋
	char	m_szServerNum[24];			//辑滚锅龋 IP
	int		m_nZoneNum;			//粮 锅龋 器飘锅龋
	int		m_nState;			//惑怕

	CRITICAL_SECTION		m_cs;
};
extern CAsyncClient g_cAsyncPay;
extern void RecvReponseGUMP( SOCKET socket );
#endif //_CUSEMONEY_H


⌨️ 快捷键说明

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