/* ==================================================================== * ÆÄ ÀÏ : LoginProcess.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : °ûöÁß * ÀÛ ¼º ÀÏ : 06/12/22 * ÁÖÀÇ»çÇ× : * =================================================================== */ #ifndef __LOGIN_PROCESS_H__ #define __LOGIN_PROCESS_H__ //#ifndef WINVER //#define WINVER 0x0500 //#endif // //#ifndef _WIN32_WINNT //#define _WIN32_WINNT 0x0500 //#endif #pragma once #include "iocpserver.h" #include "loginsrvdefines.h" #include "protocol.h" #include "commonnetworkmsgstruct.h" #include "servermanager.h" #include "rc5.h" class cLoginProcess : public cIocpServer { private: // ȯ°æº¯¼ö. union { struct { bool serverMatrix : 1; bool serverTable : 1; } mRequest; long mRequestData; }; union { struct { bool startLog : 1; // ½ÃÀÛ·Î±× bool serverMatrix : 1; // ¸ÅÆ®¸¯½º °Ë»ç bool serverTable : 1; // ¼­¹öÅ×ÀÌºí ·Îµù bool serverSync : 1; // ¼­¹ö½ÌÅ© } mComplete; long mCompleteData; }; DWORD mFrame; DWORD mFPSTick; DWORD mCCUTick; cServerManager* mServerManager; DWORD mSecurityLevel; public: // LOG °ü·Ã ¸Þ¼Òµå. bool PostServerEvent ( LPCTSTR format, ... ); bool PostConcurrentEvent ( long serverIdx, long minimum, long maximum, LPCTSTR format, ... ); bool PostMemberEvent ( char type, char category, long memberIdx, LPCTSTR format, ... ); public: // SQL °ü·Ã ¸Þ¼Òµå. bool MatrixCreate ( long maxServer, long maxChannel ); bool ServerList ( ); bool ServerDown ( long serverNum, long channelNum ); bool ChannelUpdate ( long serverNum, long channelNum, BYTE status ); bool ConcurrentUser ( long serverNum ); bool WebLauncher ( PerSocketContext* perSocketContext, long loginIdx ); bool WebCheck ( PerSocketContext* perSocketContext, char* uid, char* pwd, char* sec ); bool WebLogin ( PerSocketContext* perSocketContext, char* uid, char* pwd, char* sec, char* ip ); bool WebSMS ( char* msg ); bool MemberLogin ( PerSocketContext* perSocketContext, long memberIdx, char slevel, long pc ); bool MemberLogout ( PerSocketContext* perSocketContext, long loginIdx, long memberIdx ); bool LoginUpdate ( PerSocketContext* perSocketContext, long loginIdx ); bool GameToGame ( PerSocketContext* perSocketContext, long loginIdx, short serverNum, short channelNum, short lastChannel ); private: // ¼­¹ö °ü·Ã ¸Þ¼Òµå - ÀÀ´ä. bool LoginSuccess ( PerSocketContext* perSocketContext, long result, long memberIdx, long loginIdx, char* twitterUid, char* twitterPwd ); bool ServerList ( PerSocketContext* perSocketContext, ServerTable* serverTable, char category, char protocol ); bool LoginToGame ( PerSocketContext* perSocketContext, long ipv4, short port ); private: // ¼­¹ö °ü·Ã ¸Þ¼Òµå - ¾ÏÈ£. void Decrypt ( BYTE* ptr, RC5_32_KEY key ); void Encrypt ( BYTE* ptr, RC5_32_KEY key ); private: // ¼­¹ö °ü·Ã ¸Þ¼Òµå - º¸Á¶. bool BatchComplete ( PerSocketContext* perSocketContext, void* ptr ); void BackendThreadBegin ( void ); void BackendThreadProc ( void ); void BackendThreadEnd ( void ); void BackendThreadFps ( DWORD currentTick ); private: // ¼­¹ö °ü·Ã ¸Þ¼Òµå - ÁÖ. bool SendExec ( PerIoContext* perIoContext ); bool AcceptComplete ( PerSocketContext* perSocketContext ); bool RecvComplete ( PerSocketContext* perSocketContext, PerIoContext* perIoContext, DWORD bytesTransferred ); bool CallbackComplete ( PerSocketContext* perSocketContext, PerIoContext* perIoContext, DWORD bytesTransferred ); public: // ¼­¹ö °ü·Ã ¸Þ¼Òµå - ä³Î°ü¸®. void ChannelStatus ( long cid, BYTE status ); public: // Ŭ·¡½º »ý¼º ¹× °ø¿ë ¸Þ¼Òµå. cLoginProcess(void); bool Initialize ( char* ipAddr="", unsigned short port=10000, unsigned short numWorkerThreads=2 ); void Shutdown ( DWORD maxWait=INFINITE ); DWORD SecurityLevel ( ) { return mSecurityLevel; } MSGROOT* GetMsgRoot ( void** handle, PerSocketContext* perSocketContext ); bool SendMsgRoot ( void* handle, unsigned long length ); bool SendMsgError ( PerSocketContext* perSocketContext, char category, char protocol, int result ); DWORD BackendThread ( ); public: // Ŭ·¡½º ÆÄ±« ¸Þ¼Òµå. virtual ~cLoginProcess(void); public: static cLoginProcess* mLoginProcess; }; #define LOGINPROCESS cLoginProcess::mLoginProcess #endif // __LOGIN_PROCESS_H__