ofs | hex dump | ascii |
---|
0000 | 42 42 33 44 df 22 00 00 01 00 00 00 54 45 58 53 25 00 00 00 72 61 69 6c 2e 70 6e 67 00 01 00 00 | BB3D."......TEXS%...rail.png.... |
0020 | 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3f 00 00 80 3f 00 00 00 00 42 52 55 53 2e 00 00 | ................?...?....BRUS... |
0040 | 00 01 00 00 00 42 72 75 73 68 2e 30 30 31 00 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 | .....Brush.001....?...?...?...?. |
0060 | 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 4e 4f 44 45 70 22 00 00 72 61 69 6c 5f 34 35 2e 30 | ...............NODEp"..rail_45.0 |
0080 | 30 31 00 00 00 40 c0 00 00 80 be 00 00 40 40 cd cc cc 3e cd cc cc 3e 00 00 00 3f 5f 83 6c 3f 00 | 01...@.......@@...>...>...?_.l?. |
00a0 | 00 00 00 16 ef c3 3e 00 00 00 00 4d 45 53 48 34 22 00 00 ff ff ff ff 56 52 54 53 0c 1d 00 00 01 | ......>....MESH4"......VRTS..... |
00c0 | 00 00 00 01 00 00 00 02 00 00 00 33 33 11 40 00 00 c0 be 29 05 b5 3f a7 ad 53 3f 46 11 23 be 14 | ...........33.@....)..?..S?F.#.. |
00e0 | 11 0a 3f 0d 41 34 3f f6 b3 30 3f 33 33 11 40 00 00 c0 be 28 05 b5 bf a7 ad 53 3f 46 09 23 be 14 | ..?.A4?..0?33.@....(.....S?F.#.. |
0100 | 11 0a bf bc fb 2e 3e f4 b3 30 3f 98 99 d5 3f 00 00 c0 be 27 05 b5 bf a7 ad 53 bf 46 11 23 be 14 | ......>..0?...?....'.....S.F.#.. |
0120 | 11 0a bf c0 fb 2e 3e 1c c0 07 3f 9a 99 d5 3f 00 00 c0 be 2c 05 b5 3f a7 ad 53 bf 46 09 23 be 14 | ......>...?...?....,..?..S.F.#.. |
0140 | 11 0a 3f 0f 41 34 3f 20 c0 07 3f 98 99 f5 3f cc cc 8c be 29 05 b5 3f b5 45 da be 28 c5 93 3e b7 | ..?.A4?...?...?....)..?.E..(..>. |
0160 | 75 5b 3f 0e 41 34 3f bc be ea 3e 98 99 f5 3f cc cc 8c be 26 05 b5 bf b5 45 da be 28 c5 93 3e b7 | u[?.A4?...>...?....&....E..(..>. |
0180 | 75 5b bf c8 fb 2e 3e b0 be ea 3e 98 99 f5 3f c0 cc cc bc 26 05 b5 bf 77 9d bb be 34 cd 99 be c3 | u[....>...>...?....&...w...4.... |
01a0 | 6d 61 bf ce fb 2e 3e 26 9e c8 3e 98 99 f5 3f c0 cc cc bc 29 05 b5 3f 77 9d bb be 34 cd 99 be c3 | ma....>&..>...?....)..?w...4.... |
01c0 | 6d 61 3f 0f 41 34 3f 36 9e c8 3e 33 33 11 40 00 00 c0 be 29 05 b5 3f a7 ad 53 3f 46 11 23 be 14 | ma?.A4?6..>33.@....)..?..S?F.#.. |
01e0 | 11 0a 3f 16
You should have received a copy of the GNU Lesser General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#pragma once
#include <string>
#include "irr_v3d.h"
#include "rollback_interface.h"
#include <list>
#include <vector>
#include "sqlite3.h"
class IGameDef;
struct ActionRow;
struct Entity;
class RollbackManager: public IRollbackManager
{
public:
RollbackManager(const std::string & world_path, IGameDef * gamedef);
~RollbackManager();
void reportAction(const RollbackAction & action_);
std::string getActor();
bool isActorGuess();
void setActor(const std::string & actor, bool is_guess);
std::string getSuspect(v3s16 p, float nearness_shortcut,
float min_nearness);
void flush();
void addAction(const RollbackAction & action);
std::list<RollbackAction> getEntriesSince(time_t first_time);
std::list<RollbackAction> getNodeActors(v3s16 pos, int range,
time_t seconds, int limit);
std::list<RollbackAction> getRevertActions(
const std::string & actor_filter, time_t seconds);
private:
void registerNewActor(const int id, const std::string & name);
void registerNewNode(const int id, const std::string & name);
int getActorId(const std::string & name);
int getNodeId(const std::string & name);
const char * getActorName(const int id);
const char * getNodeName(const int id);
bool createTables();
bool initDatabase();
bool registerRow(const ActionRow & row);
const std::list<ActionRow> actionRowsFromSelect(sqlite3_stmt * stmt);
ActionRow actionRowFromRollbackAction(const RollbackAction & action);
const std::list<RollbackAction> rollbackActionsFromActionRows(
const std::list<ActionRow> & rows);
const std::list<ActionRow> getRowsSince(time_t firstTime,
const std::string & actor);
const std::list<ActionRow> getRowsSince_range(time_t firstTime, v3s16 p,
int range, int limit);
const std::list<RollbackAction> getActionsSince_range(time_t firstTime, v3s16 p,
int range, int limit);
const std::list<RollbackAction> getActionsSince(time_t firstTime,
const std::string & actor = "");
void migrate(const std::string & filepath);
static float getSuspectNearness(bool is_guess, v3s16 suspect_p,
time_t suspect_t, v3s16 action_p, time_t action_t);
IGameDef *gamedef = nullptr;
std::string current_actor;
bool current_actor_is_guess = false;
std::list<RollbackAction> action_todisk_buffer;
std::list<RollbackAction> action_latest_buffer;
std::string database_path;
sql 62 3d 63 3f fc ff 3f 40 00 00 c0 be 90 c2 75 be 28 cd 13 3f 28 cd 13 3f 28 | ..?.$v?b=c?..?@......u.(..?(..?( |
08a0 | cd 13 bf 7b 24 76 3f 84 24 76 3f fe ff 3f 40 00 00 20 bf 8c c2 75 be 28 cb 13 3f 28 cd 13 bf 28 | ...{$v?.$v?..?@......u.(..?(...( |
08c0 | cd 13 bf dd fc 7f 3f 88 24 76 3f fe ff 3f 40 00 00 20 bf 8c c2 75 be 28 cb 13 3f 28 cd 13 bf 28 | ......?.$v?..?@......u.(..?(...( |
08e0 | cd 13 bf 7c 24 76 3f e5 fc 7f 3f fc ff 3f 40 00 00 c0 be 90 c2 75 be 28 cd 13 3f 28 cd 13 3f 28 | ...|$v?...?..?@......u.(..?(..?( |
sqlite3_stmt * stmt_knownNode_insert;
std::vector<Entity> knownActors;
std::vector<Entity> knownNodes;
};
|