Luanti 5.15.0-dev
 
Loading...
Searching...
No Matches
rollback.h
Go to the documentation of this file.
1// Luanti
2// SPDX-License-Identifier: LGPL-2.1-or-later
3// Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4
5#pragma once
6
7#include <string>
8#include "irr_v3d.h"
10#include <list>
11#include <vector>
12#include <deque>
13#include "sqlite3.h"
14
15class IGameDef;
16
17struct ActionRow;
18struct Entity;
19
21{
22public:
23 RollbackManager(const std::string & world_path, IGameDef * gamedef);
25
26 void reportAction(const RollbackAction & action_);
27 std::string getActor();
28 bool isActorGuess();
29 void setActor(const std::string & actor, bool is_guess);
30 std::string getSuspect(v3s16 p, float nearness_shortcut,
31 float min_nearness);
32 void flush();
33
34 void addAction(const RollbackAction & action);
35 std::list<RollbackAction> getNodeActors(v3s16 pos, int range,
36 time_t seconds, int limit);
37 std::list<RollbackAction> getRevertActions(
38 const std::string & actor_filter, time_t seconds);
39
40private:
41 void registerNewActor(const int id, const std::string & name);
42 void registerNewNode(const int id, const std::string & name);
43 int getActorId(const std::string & name);
44 int getNodeId(const std::string & name);
45 const char * getActorName(const int id);
46 const char * getNodeName(const int id);
47 bool createTables();
48 bool initDatabase();
49 bool registerRow(const ActionRow & row);
50 const std::list<ActionRow> actionRowsFromSelect(sqlite3_stmt * stmt);
52 const std::list<RollbackAction> rollbackActionsFromActionRows(
53 const std::list<ActionRow> & rows);
54 const std::list<ActionRow> getRowsSince(time_t firstTime,
55 const std::string & actor);
56 const std::list<ActionRow> getRowsSince_range(time_t firstTime, v3s16 p,
57 int range, int limit);
58 const std::list<RollbackAction> getActionsSince_range(time_t firstTime, v3s16 p,
59 int range, int limit);
60 const std::list<RollbackAction> getActionsSince(time_t firstTime,
61 const std::string & actor = "");
62 static float getSuspectNearness(bool is_guess, v3s16 suspect_p,
63 time_t suspect_t, v3s16 action_p, time_t action_t);
64
65
66 IGameDef *gamedef = nullptr;
67
68 std::string current_actor;
70
71 std::vector<RollbackAction> action_todisk_buffer;
72 std::deque<RollbackAction> action_latest_buffer;
73
74 std::string database_path;
75 sqlite3 *db = nullptr;
76 sqlite3_stmt *stmt_insert = nullptr;
77 sqlite3_stmt *stmt_replace = nullptr;
78 sqlite3_stmt *stmt_select = nullptr;
79 sqlite3_stmt *stmt_select_range = nullptr;
80 sqlite3_stmt *stmt_select_withActor = nullptr;
81 sqlite3_stmt *stmt_knownActor_select = nullptr;
82 sqlite3_stmt *stmt_knownActor_insert = nullptr;
83 sqlite3_stmt *stmt_knownNode_select = nullptr;
84 sqlite3_stmt *stmt_knownNode_insert = nullptr;
85
86 std::vector<Entity> knownActors;
87 std::vector<Entity> knownNodes;
88};
Definition gamedef.h:26
Definition rollback_interface.h:98
Definition rollback.h:21
static float getSuspectNearness(bool is_guess, v3s16 suspect_p, time_t suspect_t, v3s16 action_p, time_t action_t)
Definition rollback.cpp:647
void flush()
Definition rollback.cpp:759
sqlite3_stmt * stmt_knownNode_insert
Definition rollback.h:84
void reportAction(const RollbackAction &action_)
Definition rollback.cpp:670
std::list< RollbackAction > getRevertActions(const std::string &actor_filter, time_t seconds)
Definition rollback.cpp:804
std::string getSuspect(v3s16 p, float nearness_shortcut, float min_nearness)
Definition rollback.cpp:717
int getNodeId(const std::string &name)
Definition rollback.cpp:139
std::string current_actor
Definition rollback.h:68
void registerNewActor(const int id, const std::string &name)
Definition rollback.cpp:105
const std::list< ActionRow > getRowsSince_range(time_t firstTime, v3s16 p, int range, int limit)
Definition rollback.cpp:611
std::vector< Entity > knownActors
Definition rollback.h:86
bool current_actor_is_guess
Definition rollback.h:69
std::vector< Entity > knownNodes
Definition rollback.h:87
std::deque< RollbackAction > action_latest_buffer
Definition rollback.h:72
RollbackManager(const std::string &world_path, IGameDef *gamedef)
Definition rollback.cpp:74
sqlite3_stmt * stmt_select
Definition rollback.h:78
bool registerRow(const ActionRow &row)
Definition rollback.cpp:362
~RollbackManager()
Definition rollback.cpp:87
sqlite3_stmt * stmt_select_range
Definition rollback.h:79
bool isActorGuess()
Definition rollback.cpp:706
const std::list< RollbackAction > getActionsSince(time_t firstTime, const std::string &actor="")
Definition rollback.cpp:638
void addAction(const RollbackAction &action)
Definition rollback.cpp:778
const std::list< RollbackAction > rollbackActionsFromActionRows(const std::list< ActionRow > &rows)
Definition rollback.cpp:548
sqlite3_stmt * stmt_knownActor_insert
Definition rollback.h:82
bool initDatabase()
Definition rollback.cpp:236
void setActor(const std::string &actor, bool is_guess)
Definition rollback.cpp:711
sqlite3_stmt * stmt_knownActor_select
Definition rollback.h:81
const char * getActorName(const int id)
Definition rollback.cpp:159
void registerNewNode(const int id, const std::string &name)
Definition rollback.cpp:112
sqlite3_stmt * stmt_select_withActor
Definition rollback.h:80
bool createTables()
Definition rollback.cpp:185
std::vector< RollbackAction > action_todisk_buffer
Definition rollback.h:71
ActionRow actionRowFromRollbackAction(const RollbackAction &action)
Definition rollback.cpp:514
const char * getNodeName(const int id)
Definition rollback.cpp:172
std::list< RollbackAction > getNodeActors(v3s16 pos, int range, time_t seconds, int limit)
Definition rollback.cpp:793
IGameDef * gamedef
Definition rollback.h:66
const std::list< RollbackAction > getActionsSince_range(time_t firstTime, v3s16 p, int range, int limit)
Definition rollback.cpp:631
const std::list< ActionRow > getRowsSince(time_t firstTime, const std::string &actor)
Definition rollback.cpp:595
std::string getActor()
Definition rollback.cpp:701
sqlite3_stmt * stmt_insert
Definition rollback.h:76
sqlite3 * db
Definition rollback.h:75
const std::list< ActionRow > actionRowsFromSelect(sqlite3_stmt *stmt)
Definition rollback.cpp:447
std::string database_path
Definition rollback.h:74
sqlite3_stmt * stmt_replace
Definition rollback.h:77
int getActorId(const std::string &name)
Definition rollback.cpp:119
sqlite3_stmt * stmt_knownNode_select
Definition rollback.h:83
core::vector3d< s16 > v3s16
Definition irr_v3d.h:13
Definition rollback.cpp:47
Definition rollback.cpp:67
Definition rollback_interface.h:40
static std::string p(std::string path)
Definition test_filesys.cpp:64