aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Map/MapUpdater.h
diff options
context:
space:
mode:
authorRat <none@none>2010-06-05 23:40:08 +0200
committerRat <none@none>2010-06-05 23:40:08 +0200
commit75b80d9f5b02a643c983b2fb1ededed79fd5d133 (patch)
treeebd1c2cc12a2715909dd04c1ed147a260c6ceb14 /src/server/game/Map/MapUpdater.h
parent6a9357b13d7ea6bd7d77dbfc6587af9028caa401 (diff)
rearranged core files
--HG-- branch : trunk
Diffstat (limited to 'src/server/game/Map/MapUpdater.h')
-rw-r--r--src/server/game/Map/MapUpdater.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/server/game/Map/MapUpdater.h b/src/server/game/Map/MapUpdater.h
new file mode 100644
index 00000000000..f301b15ca2f
--- /dev/null
+++ b/src/server/game/Map/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