Files
2022-10-26 12:25:11 +08:00

70 lines
1.4 KiB
C++

#include "stdafx.h"
#include ".\timekeeper.h"
#include "TimeObject.h"
#include "ConnectionTimeout.h"
TimeKeeper g_TimeKeeper;
TimeKeeper::TimeKeeper()
{
}
TimeKeeper::~TimeKeeper()
{
}
VOID TimeKeeper::InitTimeKeeper( DWORD dwHashSize )
{
m_TimeObjectHash.Initialize( dwHashSize );
m_TimeObjectHashByUserGUID.Initialize( dwHashSize );
}
VOID TimeKeeper::ReleaseTimeKeeper()
{
// Object¹ÝȯÇÏÀÚ!
m_TimeObjectHash.RemoveAll();
m_TimeObjectHashByUserGUID.RemoveAll();
}
VOID TimeKeeper::Update()
{
m_TimeObjectHash.SetFirst();
while (TimeObject* pObj = m_TimeObjectHash.GetNext() )
{
pObj->_update();
}
}
VOID TimeKeeper::PushTimer( DWORD dwKey, TimeObject * pObj )
{
ASSERT(pObj);
// ÀÓ½Ã
ConnectionTimeout * pTimeout = (ConnectionTimeout *)pObj;
m_TimeObjectHash.Add( pObj, dwKey );
m_TimeObjectHashByUserGUID.Add( pObj, pTimeout->GetUserGUID() );
}
VOID TimeKeeper::KillTimer( DWORD dwKey, TimeObject ** ppObj )
{
TimeObject * pObject = m_TimeObjectHash.GetData( dwKey );
if( ppObj ) *ppObj = pObject;
ConnectionTimeout * pTimeout = (ConnectionTimeout *)pObject;
m_TimeObjectHash.Remove( dwKey );
if(pTimeout) m_TimeObjectHashByUserGUID.Remove(pTimeout->GetUserGUID());
}
TimeObject * TimeKeeper::PeekTimer( DWORD dwKey )
{
return m_TimeObjectHash.GetData( dwKey );
}
TimeObject * TimeKeeper::PeekTimerByUserGUID( DWORD dwUserGUID )
{
return m_TimeObjectHashByUserGUID.GetData( dwUserGUID );
}