Files
Sun1602/Tools/SunUpdateManager/SunUpdateServer/AccessInfo.cpp
T
2022-10-26 12:25:11 +08:00

72 lines
1.6 KiB
C++

#include "StdAfx.h"
#include ".\accessinfo.h"
#include "ServerInfo.h"
#include "ServerInfoParser.h"
AccessInfo::AccessInfo(void)
{
}
AccessInfo::~AccessInfo(void)
{
}
BOOL AccessInfo::InsertAccessServer( ACCESS_SERVER* pAccessServer )
{
if( !pAccessServer ) return FALSE;
m_mapAccessServer.insert( std::make_pair( pAccessServer->m_dwServerKey, pAccessServer ) );
return TRUE;
}
ACCESS_SERVER* AccessInfo::GetAccessServer( DWORD dwServerKey )
{
ACCESS_SERVER_ITER iter = m_mapAccessServer.find( dwServerKey );
if( iter == m_mapAccessServer.end() )
return NULL;
return iter->second;
}
VOID AccessInfo::SerializeStream( SERVER_ACCESS_TOTAL_INFO& info, BOOL bSave )
{
if( bSave )
{
//1. 이제 현재 메모리 상의 값을 수정하고,
ACCESS_SERVER_ITER iter = NULL;
for( int i =0; i < info.m_Count; i++ )
{
ACCESS_SERVER* pAccessServer = GetAccessServer( info.m_Data[i].m_dwServerKey );
if( !pAccessServer ) continue;
//현재의 값과 다르면.. 바꾼다.
if( pAccessServer->m_bAccess != info.m_Data[i].bAccessRight )
pAccessServer->m_bAccess = info.m_Data[i].bAccessRight;
}
}
else
{
info.m_Count = 0;
ACCESS_SERVER_ITER iter = NULL;
for( iter = m_mapAccessServer.begin(); iter != m_mapAccessServer.end(); ++iter )
{
ACCESS_SERVER* pServer = iter->second;
if( !pServer ) continue;
ServerInfo* pServerInfo = ServerInfoParser::Instance()->GetServerInfo( pServer->m_dwServerKey );
if( !pServerInfo ) continue;
SERVER_ACCESS_INFO AccessInfo;
pServerInfo->GetServerInfo( (SERVER_INFO*)&AccessInfo );
AccessInfo.bAccessRight = pServer->m_bAccess;
info.m_Data[info.m_Count] = AccessInfo;
info.m_Count++;
}
}
}