diff options
Diffstat (limited to 'src/server/game/Maps/MapUpdater.h')
-rw-r--r-- | src/server/game/Maps/MapUpdater.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/server/game/Maps/MapUpdater.h b/src/server/game/Maps/MapUpdater.h new file mode 100644 index 00000000000..f301b15ca2f --- /dev/null +++ b/src/server/game/Maps/MapUpdater.h @@ -0,0 +1,40 @@ +#ifndef _MAP_UPDATER_H_INCLUDED +#define _MAP_UPDATER_H_INCLUDED + +#include <ace/Thread_Mutex.h> +#include <ace/Condition_Thread_Mutex.h> + +#include "DelayExecutor.h" + +class Map; + +class MapUpdater +{ + public: + + MapUpdater(); + virtual ~MapUpdater(); + + friend class MapUpdateRequest; + + int schedule_update(Map& map, ACE_UINT32 diff); + + int wait(); + + int activate(size_t num_threads); + + int deactivate(); + + bool activated(); + + private: + + DelayExecutor m_executor; + ACE_Condition_Thread_Mutex m_condition; + ACE_Thread_Mutex m_mutex; + size_t pending_requests; + + void update_finished(); +}; + +#endif //_MAP_UPDATER_H_INCLUDED |