summaryrefslogtreecommitdiff
path: root/src/server.h
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2012-07-26 22:06:45 +0300
committerPerttu Ahola <celeron55@gmail.com>2012-07-27 02:27:18 +0300
commit0190f9b077dcb2b8cb41c622dd91ffc1e04dacac (patch)
tree0baa7a5d2094afdbb193e1850836c209c9395c70 /src/server.h
parent0c91a0d59db70f3f502004d4c37fecd4e10c9401 (diff)
downloadminetest-0190f9b077dcb2b8cb41c622dd91ffc1e04dacac.tar.gz
minetest-0190f9b077dcb2b8cb41c622dd91ffc1e04dacac.tar.bz2
minetest-0190f9b077dcb2b8cb41c622dd91ffc1e04dacac.zip
Experimental-ish rollback functionality
Diffstat (limited to 'src/server.h')
-rw-r--r--src/server.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/server.h b/src/server.h
index 4316bc21f..668d42416 100644
--- a/src/server.h
+++ b/src/server.h
@@ -36,6 +36,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "sound.h"
#include "util/thread.h"
#include "util/string.h"
+#include "rollback_interface.h" // Needed for rollbackRevertActions()
+#include <list> // Needed for rollbackRevertActions()
struct LuaState;
typedef struct lua_State lua_State;
@@ -44,6 +46,7 @@ class IWritableNodeDefManager;
class IWritableCraftDefManager;
class EventManager;
class PlayerSAO;
+class IRollbackManager;
class ServerError : public std::exception
{
@@ -543,6 +546,13 @@ public:
// Envlock and conlock should be locked when using Lua
lua_State *getLua(){ return m_lua; }
+
+ // Envlock should be locked when using the rollback manager
+ IRollbackManager *getRollbackManager(){ return m_rollback; }
+ // actions: time-reversed list
+ // Return value: success/failure
+ bool rollbackRevertActions(const std::list<RollbackAction> &actions,
+ std::list<std::string> *log);
// IGameDef interface
// Under envlock
@@ -553,6 +563,7 @@ public:
virtual u16 allocateUnknownNodeId(const std::string &name);
virtual ISoundManager* getSoundManager();
virtual MtEventManager* getEventManager();
+ virtual IRollbackReportSink* getRollbackReportSink();
IWritableItemDefManager* getWritableItemDefManager();
IWritableNodeDefManager* getWritableNodeDefManager();
@@ -720,6 +731,10 @@ private:
// Bann checking
BanManager m_banmanager;
+ // Rollback manager (behind m_env_mutex)
+ IRollbackManager *m_rollback;
+ bool m_rollback_sink_enabled;
+
// Scripting
// Envlock and conlock should be locked when using Lua
lua_State *m_lua;