#pragma once #include "VMOp.Type.h" //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // // enum eMOLASIG_TYPE // { // SIGMSG_NORMAL = 0x4400 // }; // // struct eMOLASIG_MSG // { // eMOLASIG_TYPE _TYPE; // }; // #pragma pack(push, 1) struct SIGMSG { // MOLA_RCG_T1_xxx static const eMOLASIG_TYPE CONTROL_STOP = (eMOLASIG_TYPE)MOLA_RCG_T1_020; static const eMOLASIG_TYPE CONTROL_START = (eMOLASIG_TYPE)MOLA_RCG_T1_021; static const eMOLASIG_TYPE NOTIFY_HEARTBEAT = (eMOLASIG_TYPE)MOLA_RCG_T1_023; static const eMOLASIG_TYPE NETWORK_MSG_RECVED = (eMOLASIG_TYPE)MOLA_RCG_T1_024; static const eMOLASIG_TYPE NETWORK_MSG_SENDING = (eMOLASIG_TYPE)MOLA_RCG_T1_025; static const eMOLASIG_TYPE NOTIFY_WORKNODE = (eMOLASIG_TYPE)MOLA_RCG_T1_026; }; struct sSIG_CONTROL_START : eMOLASIG_MSG { sSIG_CONTROL_START() { _TYPE = SIGMSG::CONTROL_START; } }; struct sSIG_CONTROL_STOP : eMOLASIG_MSG { sSIG_CONTROL_STOP() { _TYPE = SIGMSG::CONTROL_STOP; } }; struct sSIG_NOTIFY_HEARTBEAT : eMOLASIG_MSG { sSIG_NOTIFY_HEARTBEAT( DWORD dwCount ) : m_dwCount(dwCount) { _TYPE = SIGMSG::NOTIFY_HEARTBEAT; } DWORD m_dwCount; }; struct sSIG_NETWORK_NTF : eMOLASIG_MSG { sSIG_NETWORK_NTF( eMOLASIG_TYPE sigMSG, MSG_BASE* pMSG, WORD wSIZE ) : m_pMSG(pMSG), m_wSIZE(wSIZE) { _TYPE = sigMSG; } MSG_BASE* m_pMSG; WORD m_wSIZE; }; struct sSIG_NETWORK_RECVED_NTF : sSIG_NETWORK_NTF { sSIG_NETWORK_RECVED_NTF( MSG_BASE* pMSG ) : sSIG_NETWORK_NTF(SIGMSG::NETWORK_MSG_RECVED, pMSG, 0) {} }; struct sSIG_NETWORK_SENDING_NTF : sSIG_NETWORK_NTF { sSIG_NETWORK_SENDING_NTF( MSG_BASE* pMSG, WORD wSIZE ) : sSIG_NETWORK_NTF(SIGMSG::NETWORK_MSG_SENDING, pMSG, wSIZE) {} }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // IWzASM CmdBlock struct sCONTROL_INFORMATION { BYTE TRANSACTION_SENDING_PACKET; // ÆÐŶ Àü¼ÛÇÒ °ÍÀÌ ÀÖ´Â °æ¿ì, LOCK ¿ë BYTE ENABLE_SEND_PACKET; // ÆÐŶ Àü¼ÛÀÌ °¡´ÉÇÑÁö ¿©ºÎ BYTE IS_CONNECTED_WITH_GAMESERVER; // °ÔÀÓ¼­¹ö¿Í Á¢¼Ó ¿©ºÎ BYTE LOCATED_BATTLESCENE; // ClientÀÔÀå¿¡¼­ BattleScene¿¡ ¼ÓÇØÀÖ´ÂÁöÀÇ ¿©ºÎ DWORD MSGROUNDKEYforSENDING; // ¸Þ½ÃÁö Àü¼Û½Ã ÷ºÎµÇ´Â Ű BYTE* MSGforSENDING; // º¸³¾¼ö ÀÖ´Â °æ¿ì º¸³¾ ÆÐŶ Æ÷ÀÎÅÍ WORD MSGSZforSENDING; // º¸³¾¼ö ÀÖ´Â °æ¿ì º¸³¾ ÆÐŶ Å©±â }; #pragma pack(pop) class VMOpCPU; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // class IVMOpGenerater : public IVMOp { public: static const DWORD SECOND = 1000; static const DWORD MINUTE = 60*SECOND; static const DWORD INTERVAL_MOLA_HEARTBEAT = 1*SECOND; // ÆÐŶÀ» º¸³¾ ¼ö ÀÖ´Â ½ÃÁ¡¿¡ Çѹø ÆÐŶÀ» Àü¼ÛÇÑ´Ù. public: IVMOpGenerater(); ~IVMOpGenerater(); virtual BOOL DoInit(); virtual BOOL DoProcess(); virtual BOOL IsComplete(); virtual BOOL DoRelease(); // Control Interface virtual VOID OnMsg( eMOLASIG_MSG* pSIG_MSG ); public: inline BOOL& Enabled() { return m_bEnabled; } inline DWORD GetUpdateCount() { return m_dwUpdateCount; } public: // BOOL m_bEnabled; // DoProcess ¼öÇà¿©ºÎ ITimeout m_UpdateInterval; // ¸Å 1ÃÊÀÇ Heartbeat DWORD m_dwUpdateLoopCount; // DoProcess È£Ãâ ¼ö DWORD m_dwUpdateCount; // Timeout ¸¸Á·¼ö WzASM_EIP* m_SetNextStartAction; WzASM_EIP* m_SetEnable; // }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // class IVMOpScheduler : public IVMOp { public: static const DWORD SECOND = 1000; static const DWORD MINUTE = 60*SECOND; static const DWORD INTERVAL_CHECKER = 3*SECOND; static const DWORD INTERVAL_SEND_DELAY = 5*SECOND; static const DWORD INTERVAL_MOLA_HEARTBEAT = 1*MINUTE; // ÆÐŶÀ» º¸³¾ ¼ö ÀÖ´Â ½ÃÁ¡¿¡ Çѹø ÆÐŶÀ» Àü¼ÛÇÑ´Ù. public: IVMOpScheduler(); ~IVMOpScheduler(); virtual BOOL DoInit(); virtual BOOL DoProcess(); virtual BOOL IsComplete(); virtual BOOL DoRelease(); // Control Interface virtual VOID OnMsg( eMOLASIG_MSG* pSIG_MSG ); public: inline BOOL& Enabled() { return m_bEnabled; } public: static uREG_PV HANDLER_IBF_MakeSendRoundKey( uREG_NODE* pNODE ); // Çѹø º¸³¾ ¶§¸¶´Ù °»½ÅµÇ´Â °ª static uREG_PV HANDLER_IBF_VerifyObject( uREG_NODE* pNODE ); // ¿ÀºêÁ§Æ® ¹«°á¼º °Ë»ç public: // BOOL m_bEnabled; // DoProcess ¼öÇà¿©ºÎ ITimeout m_CheckInterval; // ÀÌ ·çƾÀÌ °Ë»ç¸¦ ½ÃÀÛÇÏ´Â ½ÃÁ¡ ITimeout m_SendIntervalBySendMsg; // ¸Þ½ÃÁö Àü¼ÛÀÌ ÇÊ¿äÇÒ °æ¿ì WzASM_EIP* m_EIPCheckInterval; WzASM_EIP* m_EIPSendIntervalBySendMsg; sCONTROL_INFORMATION* m_pCONTROL_INFO; // ÆÐŶ ÄÁÆ®·Ñ Á¤º¸ struct { DWORD m_dwHBLastedUpdateTick; // °¡Àå ÃÖ±Ù¿¡ °»½ÅµÈ ƽ DWORD m_dwHBIncreaseCount; // °»½ÅµÈ ȸ¼ö DWORD m_dwHBRandomKey; // °»½ÅµÈ ·£´ýŰ }; }; //¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬¦¬ // - Passive Processor Unit class IVMOpPPU : public IVMOp { public: IVMOpPPU(); ~IVMOpPPU(); virtual BOOL DoInit(); virtual BOOL DoProcess(); virtual BOOL IsComplete(); virtual BOOL DoRelease(); // Control Interface virtual VOID OnMsg( eMOLASIG_MSG* pSIG_MSG ); public: inline BOOL& Enabled() { return m_bEnabled; } public: // BOOL m_bEnabled; // DoProcess ¼öÇà¿©ºÎ };