Files
Sun1602/Server/MolaCrypt/WzASM_VM/VMOp/VMOp.h
T
2022-10-26 12:25:11 +08:00

126 lines
3.4 KiB
C++

#pragma once
#include "VMOp.Type.h"
struct MSG_BASE;
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// <TYPE DEFINITIONs>
typedef DWORD WORK_KEY;
typedef STLX_LIST<WORK_KEY> WORK_UPDATE_QUEUE;
typedef WORK_UPDATE_QUEUE::iterator WORK_UPDATE_QUEUE_IT;
typedef Delegator<IVMOp> WORK_NODE_DELEGATOR;
typedef std::pair<WORK_NODE_DELEGATOR, BOOL> WORK_NODE_UPDATE_PAIR;
typedef std::pair<WORK_KEY, WORK_NODE_UPDATE_PAIR> WORK_NODE_PAIR;
typedef STLX_MAP<WORK_KEY, WORK_NODE_UPDATE_PAIR> WORK_NODE_MAP;
typedef WORK_NODE_MAP::iterator WORK_NODE_MAP_IT;
class VMOpCPU;
typedef Delegator<VMOpCPU> VMOp_MANAGER;
//━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// 다른 모드에서 서비스로 전환되었을 때, 작업할 내역
class ISession4StartServiceWorkNode
{
public:
virtual BOOL IsValidObject( DWORD dwCheckValue ) = 0;
virtual BOOL IsValidState( DWORD dwStatusValue ) = 0;
virtual BOOL SendPacket4Interface( MSG_BASE* pMsg, WORD wSize ) = 0;
};
class PROCESS_CONNECTION_PHASE_SHIFT_CMD___ON_START_EXCHANGE : public IVMOp
{
public:
PROCESS_CONNECTION_PHASE_SHIFT_CMD___ON_START_EXCHANGE() {}
~PROCESS_CONNECTION_PHASE_SHIFT_CMD___ON_START_EXCHANGE() {}
public:
VOID SetInformation( ISession4StartServiceWorkNode* pObject, DWORD dwCheckKey, DWORD dwStatusValue )
{
m_pIChecker = pObject;
m_dwCheckValue = dwCheckKey;
m_dwStatusValue = dwStatusValue;
}
public:
// <INTERFACE><IMPLEMENTATION>
virtual BOOL DoInit();
virtual BOOL DoProcess()
{
//return _ACTION_Always_Alive();
return TRUE;
}
virtual BOOL IsComplete()
{
return m_bCompleted;
}
virtual BOOL DoRelease()
{
return TRUE;
}
//private:
// // SERVICE_FUNCTION_ALWAYS_ALIVE
// BOOL _ACTION_Always_Alive();
// // SERVICE_FUNCTION_SCRIPT_DATA_LOAD
// BOOL _ACTION_Script_Data_Load( BOOL bFirst = FALSE );
//private:
//#ifdef __NA_000252_20070208_VERSION_GMCMD
// VOID SendPacket_4ScriptData( eSCRIPT_CODE scriptCode );
// VOID SetLoadScriptTable( eSCRIPT_CODE scriptCode );
//#else
// VOID SendPacket_4ScriptData( SCRIPT_CODE_T scriptCode );
// VOID SetLoadScriptTable( SCRIPT_CODE_T scriptCode );
//#endif
private:
ISession4StartServiceWorkNode* m_pIChecker;
DWORD m_dwCheckValue;
DWORD m_dwStatusValue;
BOOL m_bCompleted;
// struct
// {
// BOOL m_bLoadMonitoring;
// DWORD m_dwPeer;
// DWORD m_dwTail;
//#ifdef __NA_000252_20070208_VERSION_GMCMD
// BYTE m_pLoadScriptTable[SCRIPT_LIST_SIZE];
//#else
// BYTE m_pLoadScriptTable[SCRIPT_CODE_KEY(LIST_SIZE)];
//#endif
//
// // METHODs
//#ifdef __NA_000252_20070208_VERSION_GMCMD
// inline DWORD GetNextIndex( DWORD dwIndex )
// { return ((dwIndex+1)%SCRIPT_LIST_SIZE); }
//#else
// inline DWORD GetNextIndex( DWORD dwIndex )
// { return ((dwIndex+1)%SCRIPT_CODE_KEY(LIST_SIZE)); }
//#endif
// inline BOOL IsEmpty() { return (BOOL)( m_dwPeer == m_dwTail ); }
// inline BOOL IsFull() { return (BOOL)( m_dwPeer == GetNextIndex(m_dwTail) ); }
// // no check "IsEmpty" & "IsFull"
// inline VOID EnQueue( BYTE byScriptCode )
// {
// m_pLoadScriptTable[m_dwTail] = byScriptCode;
// m_dwTail = GetNextIndex( m_dwTail );
// }
//
// inline BYTE DeQueue()
// {
// BYTE value = m_pLoadScriptTable[m_dwPeer];
// m_dwPeer = GetNextIndex(m_dwPeer);
// return value;
// }
//
// inline BYTE Peek() { return m_pLoadScriptTable[m_dwPeer]; }
// } LOADING_INFO;
};