diff options
Diffstat (limited to 'src/game/MapUpdater.cpp')
| -rw-r--r-- | src/game/MapUpdater.cpp | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/src/game/MapUpdater.cpp b/src/game/MapUpdater.cpp deleted file mode 100644 index f9bb5e2bbbc..00000000000 --- a/src/game/MapUpdater.cpp +++ /dev/null @@ -1,129 +0,0 @@ -#include "MapUpdater.h" -#include "DelayExecutor.h" -#include "Map.h" -#include "Database/DatabaseEnv.h" - -#include <ace/Guard_T.h> -#include <ace/Method_Request.h> - -class WDBThreadStartReq1 : public ACE_Method_Request -{ - public: - - WDBThreadStartReq1() - { - } - - virtual int call() - { - WorldDatabase.ThreadStart(); - return 0; - } -}; - -class WDBThreadEndReq1 : public ACE_Method_Request -{ - public: - - WDBThreadEndReq1() - { - } - - virtual int call() - { - WorldDatabase.ThreadEnd(); - return 0; - } -}; - -class MapUpdateRequest : public ACE_Method_Request -{ - private: - - Map& m_map; - MapUpdater& m_updater; - ACE_UINT32 m_diff; - - public: - - MapUpdateRequest(Map& m, MapUpdater& u, ACE_UINT32 d) - : m_map(m), m_updater(u), m_diff(d) - { - } - - virtual int call() - { - m_map.Update (m_diff); - m_updater.update_finished (); - return 0; - } -}; - -MapUpdater::MapUpdater() - : m_mutex(), m_condition(m_mutex), m_executor(), pending_requests(0) -{ -} - -MapUpdater::~MapUpdater() -{ - deactivate(); -} - -int MapUpdater::activate(size_t num_threads) -{ - return m_executor.activate((int)num_threads, new WDBThreadStartReq1, new WDBThreadEndReq1); -} - -int MapUpdater::deactivate() -{ - wait(); - - return m_executor.deactivate(); -} - -int MapUpdater::wait() -{ - ACE_GUARD_RETURN(ACE_Thread_Mutex, guard, m_mutex, -1); - - while (pending_requests > 0) - m_condition.wait(); - - return 0; -} - -int MapUpdater::schedule_update(Map& map, ACE_UINT32 diff) -{ - ACE_GUARD_RETURN(ACE_Thread_Mutex, guard, m_mutex, -1); - - ++pending_requests; - - if (m_executor.execute(new MapUpdateRequest(map, *this, diff)) == -1) - { - ACE_DEBUG((LM_ERROR, ACE_TEXT("(%t) \n"), ACE_TEXT("Failed to schedule Map Update"))); - - --pending_requests; - return -1; - } - - return 0; -} - -bool MapUpdater::activated() -{ - return m_executor.activated(); -} - -void MapUpdater::update_finished() -{ - ACE_GUARD(ACE_Thread_Mutex, guard, m_mutex); - - if (pending_requests == 0) - { - ACE_ERROR((LM_ERROR, ACE_TEXT("(%t)\n"), ACE_TEXT("MapUpdater::update_finished BUG, report to devs"))); - return; - } - - --pending_requests; - - m_condition.broadcast(); -} |
