[10103] More cleanups in InstanceSave

* Use single function for erase element from save list.
* Make lock bool checks class local (it need be replaced by normal lock object in future)
* Remove redundent now friend class declarations.
This commit is contained in:
VladimirMangos 2010-06-24 07:11:51 +04:00
parent f244e68c59
commit 593f1e81b9
4 changed files with 9 additions and 8 deletions

View file

@ -115,8 +115,7 @@ bool InstanceSave::UnloadIfEmpty()
{ {
if(m_playerList.empty() && m_groupList.empty()) if(m_playerList.empty() && m_groupList.empty())
{ {
if(!sInstanceSaveMgr.lock_instLists) sInstanceSaveMgr.RemoveInstanceSave(GetInstanceId());
sInstanceSaveMgr.RemoveInstanceSave(GetInstanceId());
return false; return false;
} }
else else
@ -419,14 +418,17 @@ void InstanceSaveManager::DeleteInstanceFromDB(uint32 instanceid)
void InstanceSaveManager::RemoveInstanceSave(uint32 InstanceId) void InstanceSaveManager::RemoveInstanceSave(uint32 InstanceId)
{ {
if (lock_instLists)
return;
InstanceSaveHashMap::iterator itr = m_instanceSaveById.find( InstanceId ); InstanceSaveHashMap::iterator itr = m_instanceSaveById.find( InstanceId );
if(itr != m_instanceSaveById.end()) if(itr != m_instanceSaveById.end())
{ {
// save the resettime for normal instances only when they get unloaded // save the resettime for normal instances only when they get unloaded
if(time_t resettime = itr->second->GetResetTimeForDB()) if(time_t resettime = itr->second->GetResetTimeForDB())
CharacterDatabase.PExecute("UPDATE instance SET resettime = '"UI64FMTD"' WHERE id = '%u'", (uint64)resettime, InstanceId); CharacterDatabase.PExecute("UPDATE instance SET resettime = '"UI64FMTD"' WHERE id = '%u'", (uint64)resettime, InstanceId);
delete itr->second;
m_instanceSaveById.erase(itr); _ResetSave(itr);
} }
} }

View file

@ -43,7 +43,6 @@ class Group;
*/ */
class InstanceSave class InstanceSave
{ {
friend class InstanceSaveManager;
public: public:
/* Created either when: /* Created either when:
- any new instance is being generated - any new instance is being generated
@ -166,7 +165,6 @@ class InstanceResetScheduler
class MANGOS_DLL_DECL InstanceSaveManager : public MaNGOS::Singleton<InstanceSaveManager, MaNGOS::ClassLevelLockable<InstanceSaveManager, ACE_Thread_Mutex> > class MANGOS_DLL_DECL InstanceSaveManager : public MaNGOS::Singleton<InstanceSaveManager, MaNGOS::ClassLevelLockable<InstanceSaveManager, ACE_Thread_Mutex> >
{ {
friend class InstanceSave;
friend class InstanceResetScheduler; friend class InstanceResetScheduler;
public: public:
InstanceSaveManager(); InstanceSaveManager();

View file

@ -16414,7 +16414,8 @@ InstancePlayerBind* Player::BindToInstance(InstanceSave *save, bool permanent, b
if(bind.save != save) if(bind.save != save)
{ {
if(bind.save) bind.save->RemovePlayer(this); if(bind.save)
bind.save->RemovePlayer(this);
save->AddPlayer(this); save->AddPlayer(this);
} }

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "10102" #define REVISION_NR "10103"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__