72 lines
1.6 KiB
C++
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++;
|
|
}
|
|
}
|
|
} |