#include #include "RylDBStoreCommand.h" namespace RylDBCommand { #define BOUNDED_SUBTRACT(data, minusval, minbound) if ((data) < (minusval) + (minbound)) { (data) = (minbound); } else { (data) -= (minusval); } void CUnifiedStore1::Init(void) { m_UID = 0; m_Flag = 0; m_Gold = 0; memset(m_Store, 0, sizeof(STORE)); memset(m_Password, 0, sizeof(char) * STORE_INFO::MAX_PASS_LEN * 2); m_OldServerGroupID = 0; m_bAdjustedSize = false; m_StoreLength = 0; m_PasswordLength = 0; m_UIDStatus = DBSTATUS_S_OK; m_OldServerGroupIDStatus = DBSTATUS_S_OK; m_PasswordStatus = DBSTATUS_S_OK; m_FlagStatus = DBSTATUS_S_OK; m_GoldStatus = DBSTATUS_S_OK; m_StoreStatus = DBSTATUS_S_OK; } void CUnifiedStore1::AdjustSize(bool bRestore) { if (bRestore && m_bAdjustedSize) { reinterpret_cast(m_Store).dwSize += sizeof(unsigned long); m_bAdjustedSize = false; } else if (!bRestore && !m_bAdjustedSize) { BOUNDED_SUBTRACT(reinterpret_cast(m_Store).dwSize, sizeof(unsigned long), 0); m_bAdjustedSize = true; } } void CUnifiedStore1::LogError(DBErrorType eErrorType, HRESULT hr) { switch(eErrorType) { case DBERR_CONVERT_FAILED: ERRLOG1(g_Log, "UID:%10u / UnifiedStore1 µ¥ÀÌÅÍ Ã³¸® ½ÇÆÐ", GetUID()); break; case DBERR_SETDATA_FAILED: ERRLOG3(g_Log, "UID:%10u / hr:0x%08x / UnifiedStore1 SetData ½ÇÆÐ : DBStatus:%s", GetUID(), hr, GetDBStatus()); break; case DBERR_UPDATE_FAILED: ERRLOG3(g_Log, "UID:%10u / hr:0x%08x / UnifiedStore1 Update ½ÇÆÐ : DBStatus:%s", GetUID(), hr, GetDBStatus()); break; } } bool CUnifiedStore1::operator == (const CUnifiedStore1& rhs) const { return m_UID == rhs.m_UID && m_Flag == rhs.m_Flag && m_Gold == rhs.m_Gold && m_OldServerGroupID == rhs.m_OldServerGroupID && 0 == memcmp(m_Store, rhs.m_Store, sizeof(STORE)) && 0 == memcmp(m_Password, rhs.m_Password, sizeof(char) * STORE_INFO::MAX_PASS_LEN * 2); } CString CUnifiedStore1::GetDBStatus() { CString dbStatus; m_Password[STORE_INFO::MAX_PASS_LEN - 1] = 0; dbStatus.Format("UID:%10u(0x%08x) OldServerGroupID:%3d(0x%08x) Password:%s(0x%08x) " "Flag:0x%08x(0x%08x) Gold:%10u(0x%08x) StoreLen:%4u(0x%08x)", m_UID, m_UIDStatus, m_OldServerGroupID, m_OldServerGroupIDStatus, m_Password, m_PasswordStatus, m_Flag, m_FlagStatus, m_Gold, m_GoldStatus, GetStore().dwSize, m_StoreStatus); return dbStatus; } void CUnifiedStore2::Init(void) { m_UID = 0; memset(m_Store, 0, sizeof(STORE)); m_OldServerGroupID = 0; m_bAdjustedSize = false; m_StoreLength = 0; m_UIDStatus = DBSTATUS_S_OK; m_StoreStatus = DBSTATUS_S_OK; m_OldServerGroupIDStatus = DBSTATUS_S_OK; } void CUnifiedStore2::AdjustSize(bool bRestore) { if (bRestore && m_bAdjustedSize) { reinterpret_cast(m_Store).dwSize += sizeof(unsigned long); m_bAdjustedSize = false; } else if (!bRestore && !m_bAdjustedSize) { BOUNDED_SUBTRACT(reinterpret_cast(m_Store).dwSize, sizeof(unsigned long), 0); m_bAdjustedSize = true; } } void CUnifiedStore2::LogError(DBErrorType eErrorType, HRESULT hr) { switch(eErrorType) { case DBERR_CONVERT_FAILED: ERRLOG1(g_Log, "UID:%10u / UnifiedStore2 µ¥ÀÌÅÍ Ã³¸® ½ÇÆÐ", GetUID()); break; case DBERR_SETDATA_FAILED: ERRLOG3(g_Log, "UID:%10u / hr:0x%08x / UnifiedStore2 SetData ½ÇÆÐ : DBStatus:%s", GetUID(), hr, GetDBStatus()); break; case DBERR_UPDATE_FAILED: ERRLOG3(g_Log, "UID:%10u / hr:0x%08x / UnifiedStore2 Update ½ÇÆÐ : DBStatus:%s", GetUID(), hr, GetDBStatus()); break; } } bool CUnifiedStore2::operator == (const CUnifiedStore2& rhs) const { return m_UID == rhs.m_UID && m_OldServerGroupID == rhs.m_OldServerGroupID && 0 == memcmp(m_Store, rhs.m_Store, sizeof(STORE)); } CString CUnifiedStore2::GetDBStatus() { CString dbStatus; dbStatus.Format("UID:%10u(0x%08x) OldServerGroupID:%3d(0x%08x) StoreLen:%4u(0x%08x)", m_UID, m_UIDStatus, m_OldServerGroupID, m_OldServerGroupIDStatus, GetStore().dwSize, m_StoreStatus); return dbStatus; } }