Advertisement
Guest User

Untitled

a guest
Mar 30th, 2010
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.09 KB | None | 0 0
  1. diff --git a/src/game/AuctionHouseMgr.cpp b/src/game/AuctionHouseMgr.cpp
  2. index ed8a059..95a94b6 100644
  3. --- a/src/game/AuctionHouseMgr.cpp
  4. +++ b/src/game/AuctionHouseMgr.cpp
  5. @@ -35,6 +35,11 @@
  6.  
  7. #include "Policies/SingletonImp.h"
  8.  
  9. +#ifdef WIN32
  10. +#include "ServiceWin32.h"
  11. +extern int m_ServiceStatus;
  12. +#endif
  13. +
  14. INSTANTIATE_SINGLETON_1( AuctionHouseMgr );
  15.  
  16. AuctionHouseMgr::AuctionHouseMgr()
  17. @@ -47,6 +52,40 @@ AuctionHouseMgr::~AuctionHouseMgr()
  18. delete itr->second;
  19. }
  20.  
  21. +void AuctionHouseMgr::run()
  22. +{
  23. + ACE_DEBUG
  24. + ((LM_DEBUG, ACE_TEXT ("(%t) Handler Thread running\n")));
  25. +
  26. + runUpdate = false;
  27. + initLoading = false;
  28. +
  29. + mutex.lock(); //- Mutex Thread lock
  30. + LoadAuctionItems();
  31. + LoadAuctions();
  32. + mutex.unlock(); //- Mutex Thread unlock
  33. +
  34. + initLoading = true;
  35. +
  36. + while (!World::IsStopped())
  37. + {
  38. + if (runUpdate)
  39. + {
  40. + Update();
  41. + runUpdate = false;
  42. + }
  43. +
  44. + #ifdef WIN32
  45. + ACE_Based::Thread::Sleep(50);
  46. + #else
  47. + ACE_Based::Thread::Sleep(100);
  48. + #endif
  49. +
  50. + #ifdef WIN32
  51. + if (m_ServiceStatus == 0) World::StopNow(SHUTDOWN_EXIT_CODE);
  52. + while (m_ServiceStatus == 2) Sleep(1000);
  53. + #endif
  54. + }
  55. +}
  56. +
  57. AuctionHouseObject * AuctionHouseMgr::GetAuctionsMap( uint32 factionTemplateId )
  58. {
  59. if(sWorld.getConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_AUCTION))
  60. @@ -278,6 +317,8 @@ void AuctionHouseMgr::SendAuctionExpiredMail( AuctionEntry * auction )
  61.  
  62. void AuctionHouseMgr::LoadAuctionItems()
  63. {
  64. + ACE_DEBUG
  65. + ((LM_DEBUG, ACE_TEXT ("(%t) LoadAuctionItems Thread running\n")));
  66. // data needs to be at first place for Item::LoadFromDB
  67. QueryResult *result = CharacterDatabase.Query( "SELECT data,itemguid,item_template FROM auctionhouse JOIN item_instance ON itemguid = guid" );
  68.  
  69. @@ -331,6 +372,8 @@ void AuctionHouseMgr::LoadAuctionItems()
  70.  
  71. void AuctionHouseMgr::LoadAuctions()
  72. {
  73. + ACE_DEBUG
  74. + ((LM_DEBUG, ACE_TEXT ("(%t) LoadAuctions Thread running\n")));
  75. QueryResult *result = CharacterDatabase.Query("SELECT COUNT(*) FROM auctionhouse");
  76. if( !result )
  77. {
  78. diff --git a/src/game/AuctionHouseMgr.h b/src/game/AuctionHouseMgr.h
  79. index 2775838..164f637 100644
  80. --- a/src/game/AuctionHouseMgr.h
  81. +++ b/src/game/AuctionHouseMgr.h
  82. @@ -114,7 +114,7 @@ class AuctionHouseObject
  83. AuctionEntryMap AuctionsMap;
  84. };
  85.  
  86. -class AuctionHouseMgr
  87. +class AuctionHouseMgr : public ACE_Based::Runnable
  88. {
  89. public:
  90. AuctionHouseMgr();
  91. @@ -152,7 +152,12 @@ class AuctionHouseMgr
  92.  
  93. + mutex.lock(); //Mutex Thread lock
  94. void Update();
  95. + mutex.unlock(); //- Mutex Thread unlock
  96.  
  97. + bool runUpdate;
  98. + bool initLoading;
  99. +
  100. private:
  101. + void run();
  102. +
  103. AuctionHouseObject mHordeAuctions;
  104. AuctionHouseObject mAllianceAuctions;
  105. AuctionHouseObject mNeutralAuctions;
  106. diff --git a/src/game/World.cpp b/src/game/World.cpp
  107. index bf20ccf..7bf2501 100644
  108. --- a/src/game/World.cpp
  109. +++ b/src/game/World.cpp
  110. @@ -1309,8 +1309,13 @@ void World::SetInitialWorldSettings()
  111. ///- Load dynamic data tables from the database
  112. sLog.outString( "Loading Auctions..." );
  113. sLog.outString();
  114. - auctionmgr.LoadAuctionItems();
  115. - auctionmgr.LoadAuctions();
  116. + ACE_DEBUG
  117. + ((LM_DEBUG, ACE_TEXT ("(%t) Main Thread running\n")));
  118. + ACE_Based::Thread t(*new AuctionHouseMgr);
  119. + while(auctionmgr.initLoading == false)
  120. + ACE_Based::Thread::Sleep(100);
  121. + //auctionmgr.LoadAuctionItems();
  122. + //auctionmgr.LoadAuctions();
  123. sLog.outString( ">>> Auctions loaded" );
  124. sLog.outString();
  125.  
  126. @@ -1529,7 +1534,8 @@ void World::Update(uint32 diff)
  127. }
  128.  
  129. ///- Handle expired auctions
  130. + mutex.lock(); //Mutex Thread lock
  131. - auctionmgr.Update();
  132. + auctionmgr.runUpdate = true;
  133. + mutex.unlock(); //- Mutex Thread unlock
  134. + //auctionmgr.Update();
  135. }
  136.  
  137. /// <li> Handle session updates when the timer has passed
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement