mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 01:37:00 +00:00
[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:
parent
f244e68c59
commit
593f1e81b9
4 changed files with 9 additions and 8 deletions
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue