1 /* 2 Minetest 3 Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com> 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU Lesser General Public License as published by 7 the Free Software Foundation; either version 2.1 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public License along 16 with this program; if not, write to the Free Software Foundation, Inc., 17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 */ 19 20 #pragma once 21 22 #include "config.h" 23 24 #if USE_LEVELDB 25 26 #include <string> 27 #include "database.h" 28 #include "leveldb/db.h" 29 30 class Database_LevelDB : public MapDatabase 31 { 32 public: 33 Database_LevelDB(const std::string &savedir); 34 ~Database_LevelDB(); 35 36 bool saveBlock(const v3s16 &pos, const std::string &data); 37 void loadBlock(const v3s16 &pos, std::string *block); 38 bool deleteBlock(const v3s16 &pos); 39 void listAllLoadableBlocks(std::vector<v3s16> &dst); 40 beginSave()41 void beginSave() {} endSave()42 void endSave() {} 43 44 private: 45 leveldb::DB *m_database; 46 }; 47 48 class PlayerDatabaseLevelDB : public PlayerDatabase 49 { 50 public: 51 PlayerDatabaseLevelDB(const std::string &savedir); 52 ~PlayerDatabaseLevelDB(); 53 54 void savePlayer(RemotePlayer *player); 55 bool loadPlayer(RemotePlayer *player, PlayerSAO *sao); 56 bool removePlayer(const std::string &name); 57 void listPlayers(std::vector<std::string> &res); 58 59 private: 60 leveldb::DB *m_database; 61 }; 62 63 class AuthDatabaseLevelDB : public AuthDatabase 64 { 65 public: 66 AuthDatabaseLevelDB(const std::string &savedir); 67 virtual ~AuthDatabaseLevelDB(); 68 69 virtual bool getAuth(const std::string &name, AuthEntry &res); 70 virtual bool saveAuth(const AuthEntry &authEntry); 71 virtual bool createAuth(AuthEntry &authEntry); 72 virtual bool deleteAuth(const std::string &name); 73 virtual void listNames(std::vector<std::string> &res); 74 virtual void reload(); 75 76 private: 77 leveldb::DB *m_database; 78 }; 79 80 #endif // USE_LEVELDB 81