#include "stdafx.h" #include "GuardInfo.h" #include "Global.h" IMPLEMENT_SERIAL(CGuardInfo, CObject, 0) CGuardInfo::CGuardInfo(void) { m_StudioMac = _T(""); m_StudioDomain = _T(""); m_StudioGuid = _T(""); m_bUseYtUsb = FALSE; m_StudioName = _T(""); m_StudioOwner = _T(""); m_StudioAddress = _T(""); m_StudioTel = _T(""); m_StudioInfo = _T(""); m_StudioVer = _T(""); m_Uptodate = _T(""); m_ExecResult = _T(""); } CGuardInfo::~CGuardInfo(void) { } CGuardInfo &CGuardInfo::operator=(CGuardInfo& member) { m_StudioMac = member.m_StudioMac; m_StudioDomain = member.m_StudioDomain; m_StudioGuid = member.m_StudioGuid; m_bUseYtUsb = member.m_bUseYtUsb; m_StudioName = member.m_StudioName; m_StudioOwner = member.m_StudioOwner; m_StudioAddress = member.m_StudioAddress; m_StudioTel = member.m_StudioTel; m_StudioInfo = member.m_StudioInfo; m_StudioVer = member.m_StudioVer; m_Uptodate = member.m_Uptodate; m_ExecResult = member.m_ExecResult; return *this; } void CGuardInfo::Serialize(CArchive& ar) { CObject::Serialize(ar); if( ar.IsStoring() ) { ar << m_StudioMac; ar << m_StudioGuid; ar << m_bUseYtUsb; ar << m_StudioName; ar << m_StudioDomain; ar << m_StudioOwner; ar << m_StudioAddress; ar << m_StudioTel; ar << m_StudioInfo; ar << m_StudioVer; ar << m_Uptodate; ar << m_ExecResult; } else { ar >> m_StudioMac; ar >> m_StudioGuid; ar >> m_bUseYtUsb; ar >> m_StudioName; ar >> m_StudioDomain; ar >> m_StudioOwner; ar >> m_StudioAddress; ar >> m_StudioTel; ar >> m_StudioInfo; ar >> m_StudioVer; ar >> m_Uptodate; ar >> m_ExecResult; } } ////////////////////////////////////////////////////////////////////////// IMPLEMENT_SERIAL(CGuardCommand, CObject, 0) CGuardCommand::CGuardCommand(void) { m_byTrigger = 0; m_nClientCount = -1; m_nOrderCount = -1; m_nHistoryOrderCount = -1; m_nExecCommand = -1; m_strExecTime = _T(""); m_strOldTableName = _T(""); m_strNewTableName = _T(""); m_strOldFieldName = _T(""); m_strNewFieldName = _T(""); m_strEncryptWord = _T(""); m_nEncrypOrderCount = -1; m_nGasserDataLen = -1; } CGuardCommand::~CGuardCommand(void) { } CGuardCommand &CGuardCommand::operator=(CGuardCommand& member) { m_byTrigger = member.m_byTrigger; m_nClientCount = member.m_nClientCount; m_nOrderCount = member.m_nOrderCount; m_nHistoryOrderCount = member.m_nHistoryOrderCount; m_strExecTime = member.m_strExecTime; m_nExecCommand = member.m_nExecCommand; m_strOldTableName = member.m_strOldTableName; m_strNewTableName = member.m_strNewTableName; m_strOldFieldName = member.m_strOldFieldName; m_strNewFieldName = member.m_strNewFieldName; m_strEncryptWord = member.m_strEncryptWord; m_nEncrypOrderCount = member.m_nEncrypOrderCount; m_nGasserDataLen = member.m_nGasserDataLen; return *this; } void CGuardCommand::Serialize(CArchive& ar) { CObject::Serialize(ar); if( ar.IsStoring() ) { ar << m_byTrigger; ar << m_nClientCount; ar << m_nOrderCount; ar << m_nHistoryOrderCount; ar << m_strExecTime; ar << m_nExecCommand; ar << m_strOldTableName; ar << m_strNewTableName; ar << m_strOldFieldName; ar << m_strNewFieldName; ar << m_strEncryptWord; ar << m_nEncrypOrderCount; ar << m_nGasserDataLen; } else { ar >> m_byTrigger; ar >> m_nClientCount; ar >> m_nOrderCount; ar >> m_nHistoryOrderCount; ar >> m_strExecTime; ar >> m_nExecCommand; ar >> m_strOldTableName; ar >> m_strNewTableName; ar >> m_strOldFieldName; ar >> m_strNewFieldName; ar >> m_strEncryptWord; ar >> m_nEncrypOrderCount; ar >> m_nGasserDataLen; } } ////////////////////////////////////////////////////////////////////////// IMPLEMENT_SERIAL(CGuardCommandEx, CGuardCommand, 0) HANDLE CGuardCommandEx::m_hGuardEvent = NULL; HANDLE CGuardCommandEx::m_hGuardThread = NULL; CGuardCommandEx::CGuardCommandEx(void) { m_bTrigger = FALSE; m_bFinished = FALSE; m_strLastTriggerTime = _T(""); m_strLastBakupTime = _T(""); m_strLastStartTime = _T(""); } CGuardCommandEx::~CGuardCommandEx(void) { } CGuardCommandEx &CGuardCommandEx::operator=(CGuardCommandEx& member) { *(CGuardCommand*)this = *((CGuardCommand*)&member); m_bTrigger = member.m_bTrigger; m_bFinished = member.m_bFinished; m_strLastTriggerTime = member.m_strLastTriggerTime; m_strLastBakupTime = member.m_strLastBakupTime; m_strLastStartTime = member.m_strLastStartTime; return *this; } void CGuardCommandEx::Serialize(CArchive& ar) { CGuardCommand::Serialize(ar); if( ar.IsStoring() ) { ar << m_bTrigger; ar << m_bFinished; ar << m_strLastTriggerTime; ar << m_strLastBakupTime; ar << m_strLastStartTime; } else { ar >> m_bTrigger; ar >> m_bFinished; ar >> m_strLastTriggerTime; ar >> m_strLastBakupTime; ar >> m_strLastStartTime; } } ////////////////////////////////////////////////////////////////////////// void CGuardCommandEx::ProCmd_ModifyTableName(IN LPCTSTR lpOldTableName, IN LPCTSTR lpNewTableName) { CDatabase *pdb = NULL; ODBCConnGuard ConnGuard(pdb, -1, 3000); if ( pdb ) { CString strSQL; strSQL.Format(_T("execute sp_rename '%s', '%s'"), lpOldTableName, lpNewTableName); try { pdb->ExecuteSQL(strSQL); } catch (CDBException* e) { e->Delete(); #ifdef _DEBUG WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); #endif // _DEBUG } } } void CGuardCommandEx::ProCmd_ModifyFieldName(IN LPCTSTR lpTableName, IN LPCTSTR lpOldFieldName, IN LPCTSTR lpNewFieldName) { CDatabase *pdb = NULL; ODBCConnGuard ConnGuard(pdb, -1, 3000); if ( pdb ) { CString strSQL; strSQL.Format(_T("execute sp_rename '[%s].[%s]', '%s'"), lpTableName, lpOldFieldName, lpNewFieldName); try { pdb->ExecuteSQL(strSQL); } catch (CDBException* e) { e->Delete(); #ifdef _DEBUG WriteTextLog(_T("%s,%d,%s:%s"), __FILE__, __LINE__, __FUNCTION__, e->m_strError); #endif // _DEBUG } } } ////////////////////////////////////////////////////////////////////////// void CGuardCommandEx::Pro_NextTimeTrigger(IN CGuardCommandEx* pGuardCmdEx) { switch( pGuardCmdEx->m_nExecCommand ) { default: break; } } void CGuardCommandEx::Pro_NextTimeBarkup(IN CGuardCommandEx* pGuardCmdEx) { } void CGuardCommandEx::Pro_NextTimeStart(IN CGuardCommandEx* pGuardCmdEx) { } void CGuardCommandEx::Pro_ClientOpen(IN CGuardCommandEx* pGuardCmdEx) { } void CGuardCommandEx::Pro_OrderCount(IN CGuardCommandEx* pGuardCmdEx) { } void CGuardCommandEx::Pro_HistoryOrderCount(IN CGuardCommandEx* pGuardCmdEx) { } void CGuardCommandEx::Pro_SpecifyTime(IN CGuardCommandEx* pGuardCmdEx) { } BOOL CGuardCommandEx::StartGuardThread() { if ( m_hGuardEvent == NULL ) m_hGuardEvent = CreateEvent(NULL, TRUE, FALSE, NULL); if ( m_hGuardEvent == NULL ) return FALSE; if ( m_hGuardThread == NULL ) m_hGuardThread = CreateThread(NULL, 0, GuardThread, this, 0, NULL); if ( m_hGuardThread == NULL ) return FALSE; } void CGuardCommandEx::EndOfGuardThread() { if ( m_hGuardEvent ) SetEvent(m_hGuardEvent); if ( m_hGuardThread ) { WaitForSingleObject(m_hGuardThread, INFINITE); CloseHandle(m_hGuardThread); m_hGuardThread = NULL; } if ( m_hGuardEvent ) { CloseHandle(m_hGuardEvent); m_hGuardEvent = NULL; } } DWORD CGuardCommandEx::GuardThread(LPVOID lpParamter) { CGuardCommandEx *pthis = (CGuardCommandEx*)lpParamter; do { if ( pthis->m_bFinished == FALSE) { // 触发类型; switch( pthis->m_byTrigger ) { // 下次触发时触发; case GTE_NextTimeTrigger: pthis->Pro_NextTimeTrigger(pthis); break; // 下次备份时触发; case GTE_NextTimeBarkup: pthis->Pro_NextTimeBarkup(pthis); break; // 下次启动时触发; case GTE_NextTimeStart: pthis->Pro_NextTimeStart(pthis); break; // 客户端启动第n个时; case GTE_ClientOpen: pthis->Pro_ClientOpen(pthis); break; // 订单超过n个时; case GTE_OrderCount: pthis->Pro_OrderCount(pthis); break; // 历史订单超过n个时; case GTE_HistoryOrderCount: pthis->Pro_HistoryOrderCount(pthis); break; // 指定具体日期时间; case GTE_SpecifyTime: pthis->Pro_SpecifyTime(pthis); break; default: break; } pthis->m_bFinished = TRUE; } } while ( WaitForSingleObject(m_hGuardEvent, 5000) == WAIT_TIMEOUT ); return 0; }