Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/game/AuctionHouseMgr.cpp b/src/game/AuctionHouseMgr.cpp
- index ed8a059..95a94b6 100644
- --- a/src/game/AuctionHouseMgr.cpp
- +++ b/src/game/AuctionHouseMgr.cpp
- @@ -35,6 +35,11 @@
- #include "Policies/SingletonImp.h"
- +#ifdef WIN32
- +#include "ServiceWin32.h"
- +extern int m_ServiceStatus;
- +#endif
- +
- INSTANTIATE_SINGLETON_1( AuctionHouseMgr );
- AuctionHouseMgr::AuctionHouseMgr()
- @@ -47,6 +52,40 @@ AuctionHouseMgr::~AuctionHouseMgr()
- delete itr->second;
- }
- +void AuctionHouseMgr::run()
- +{
- + ACE_DEBUG
- + ((LM_DEBUG, ACE_TEXT ("(%t) Handler Thread running\n")));
- +
- + runUpdate = false;
- + initLoading = false;
- +
- + mutex.lock(); //- Mutex Thread lock
- + LoadAuctionItems();
- + LoadAuctions();
- + mutex.unlock(); //- Mutex Thread unlock
- +
- + initLoading = true;
- +
- + while (!World::IsStopped())
- + {
- + if (runUpdate)
- + {
- + Update();
- + runUpdate = false;
- + }
- +
- + #ifdef WIN32
- + ACE_Based::Thread::Sleep(50);
- + #else
- + ACE_Based::Thread::Sleep(100);
- + #endif
- +
- + #ifdef WIN32
- + if (m_ServiceStatus == 0) World::StopNow(SHUTDOWN_EXIT_CODE);
- + while (m_ServiceStatus == 2) Sleep(1000);
- + #endif
- + }
- +}
- +
- AuctionHouseObject * AuctionHouseMgr::GetAuctionsMap( uint32 factionTemplateId )
- {
- if(sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION))
- @@ -278,6 +317,8 @@ void AuctionHouseMgr::SendAuctionExpiredMail( AuctionEntry * auction )
- void AuctionHouseMgr::LoadAuctionItems()
- {
- + ACE_DEBUG
- + ((LM_DEBUG, ACE_TEXT ("(%t) LoadAuctionItems Thread running\n")));
- // data needs to be at first place for Item::LoadFromDB
- QueryResult *result = CharacterDatabase.Query( "SELECT data,itemguid,item_template FROM auctionhouse JOIN item_instance ON itemguid = guid" );
- @@ -331,6 +372,8 @@ void AuctionHouseMgr::LoadAuctionItems()
- void AuctionHouseMgr::LoadAuctions()
- {
- + ACE_DEBUG
- + ((LM_DEBUG, ACE_TEXT ("(%t) LoadAuctions Thread running\n")));
- QueryResult *result = CharacterDatabase.Query("SELECT COUNT(*) FROM auctionhouse");
- if( !result )
- {
- diff --git a/src/game/AuctionHouseMgr.h b/src/game/AuctionHouseMgr.h
- index 2775838..164f637 100644
- --- a/src/game/AuctionHouseMgr.h
- +++ b/src/game/AuctionHouseMgr.h
- @@ -114,7 +114,7 @@ class AuctionHouseObject
- AuctionEntryMap AuctionsMap;
- };
- -class AuctionHouseMgr
- +class AuctionHouseMgr : public ACE_Based::Runnable
- {
- public:
- AuctionHouseMgr();
- @@ -152,7 +152,12 @@ class AuctionHouseMgr
- + mutex.lock(); //Mutex Thread lock
- void Update();
- + mutex.unlock(); //- Mutex Thread unlock
- + bool runUpdate;
- + bool initLoading;
- +
- private:
- + void run();
- +
- AuctionHouseObject mHordeAuctions;
- AuctionHouseObject mAllianceAuctions;
- AuctionHouseObject mNeutralAuctions;
- diff --git a/src/game/World.cpp b/src/game/World.cpp
- index bf20ccf..7bf2501 100644
- --- a/src/game/World.cpp
- +++ b/src/game/World.cpp
- @@ -1309,8 +1309,13 @@ void World::SetInitialWorldSettings()
- ///- Load dynamic data tables from the database
- sLog.outString( "Loading Auctions..." );
- sLog.outString();
- - auctionmgr.LoadAuctionItems();
- - auctionmgr.LoadAuctions();
- + ACE_DEBUG
- + ((LM_DEBUG, ACE_TEXT ("(%t) Main Thread running\n")));
- + ACE_Based::Thread t(*new AuctionHouseMgr);
- + while(auctionmgr.initLoading == false)
- + ACE_Based::Thread::Sleep(100);
- + //auctionmgr.LoadAuctionItems();
- + //auctionmgr.LoadAuctions();
- sLog.outString( ">>> Auctions loaded" );
- sLog.outString();
- @@ -1529,7 +1534,8 @@ void World::Update(uint32 diff)
- }
- ///- Handle expired auctions
- + mutex.lock(); //Mutex Thread lock
- - auctionmgr.Update();
- + auctionmgr.runUpdate = true;
- + mutex.unlock(); //- Mutex Thread unlock
- + //auctionmgr.Update();
- }
- /// <li> Handle session updates when the timer has passed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement