mirror of
https://github.com/QuasarApp/Heart.git
synced 2025-05-11 08:59:41 +00:00
added headers sqlcache
This commit is contained in:
parent
2bf7ba5753
commit
908c442126
ClientProtocol
@ -13,7 +13,7 @@ class IDbTable;
|
||||
/**
|
||||
* @brief The DBObject class
|
||||
*/
|
||||
class CLIENTPROTOCOLSHARED_EXPORT DBObject : StreamBase
|
||||
class CLIENTPROTOCOLSHARED_EXPORT DBObject : public StreamBase
|
||||
{
|
||||
public:
|
||||
/**
|
||||
|
@ -1,11 +1,12 @@
|
||||
#include "sqldbcache.h"
|
||||
#include "quasarapp.h"
|
||||
#include "playerdbdata.h"
|
||||
#include <qtconcurrentrun.h>
|
||||
|
||||
#include <clientprotocol.h>
|
||||
|
||||
#include <QDateTime>
|
||||
#include <basenetworkobject.h>
|
||||
|
||||
namespace ClientProtocol {
|
||||
|
||||
|
||||
int SqlDBCache::generateIdForItem() const {
|
||||
if (items.isEmpty()) {
|
||||
@ -147,6 +148,16 @@ SqlDBCache::~SqlDBCache() {
|
||||
globalUpdateDataBase(SqlDBCasheWriteMode::Force);
|
||||
}
|
||||
|
||||
SqlDBWriter *SqlDBCache::writer() const
|
||||
{
|
||||
return _writer;
|
||||
}
|
||||
|
||||
void SqlDBCache::setWriter(SqlDBWriter *writer)
|
||||
{
|
||||
_writer = writer;
|
||||
}
|
||||
|
||||
bool SqlDBCache::initDb(const QString &pdbath) {
|
||||
if (!SqlDBWriter::initDb(pdbath)) {
|
||||
return false;
|
||||
@ -381,3 +392,5 @@ bool SqlDBCache::getAllItemsOfPalyer(int player, QSet<int> &items) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,74 +1,56 @@
|
||||
#ifndef SQLDBCASHE_H
|
||||
#define SQLDBCASHE_H
|
||||
#include "sqldbwriter.h"
|
||||
|
||||
#include <QMap>
|
||||
#include <QHash>
|
||||
#include <QSet>
|
||||
#include <QVariantMap>
|
||||
#include <player.h>
|
||||
#include "item.h"
|
||||
#include <clientprotocol.h>
|
||||
|
||||
namespace ClientProtocol {
|
||||
|
||||
class SqlDBWriter;
|
||||
class DBObject;
|
||||
|
||||
enum class SqlDBCasheWriteMode: int {
|
||||
Default = 0x0,
|
||||
On_New_Thread = 0x1,
|
||||
Force = 0x2,
|
||||
} ;
|
||||
|
||||
namespace ClientProtocol {
|
||||
class BaseNetworkObject;
|
||||
}
|
||||
|
||||
class SERVERSHARED_EXPORT SqlDBCache: public QObject , private SqlDBWriter
|
||||
class CLIENTPROTOCOLSHARED_EXPORT SqlDBCache: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
qint64 lastUpdateTime = 0;
|
||||
qint64 updateInterval = DEFAULT_UPDATE_INTERVAL;
|
||||
|
||||
QMap <int, Item> items;
|
||||
QMap <int, PlayerDBData> players;
|
||||
QHash <int, QSet<int>> owners;
|
||||
QHash <QString, int> playersIds;
|
||||
|
||||
int generateIdForItem() const;
|
||||
int generateIdForPalyer() const;
|
||||
|
||||
bool checkPlayer(int id) override;
|
||||
bool checkItem(int idItem, int idOwner = -1) override;
|
||||
|
||||
void globalUpdateDataBasePrivate(qint64 currentTime);
|
||||
void globalUpdateDataBase(SqlDBCasheWriteMode mode = SqlDBCasheWriteMode::Default);
|
||||
|
||||
bool itemIsFreeFrom(int item) const override ;
|
||||
|
||||
public:
|
||||
SqlDBCache(qint64 updateInterval = DEFAULT_UPDATE_INTERVAL);
|
||||
~SqlDBCache() override;
|
||||
|
||||
bool initDb(const QString &pdbath = DEFAULT_DB_PATH) override;
|
||||
SqlDBWriter *writer() const;
|
||||
void setWriter(SqlDBWriter *writer);
|
||||
|
||||
Item getItem(int id) override;
|
||||
int saveItem(const Item& saveData) override;
|
||||
PlayerDBData getPlayer(int id) override;
|
||||
int savePlayer(const PlayerDBData &player) override;
|
||||
protected:
|
||||
virtual bool init();
|
||||
|
||||
bool login(const QString& gmail, const QString& pass);
|
||||
private:
|
||||
qint64 lastUpdateTime = 0;
|
||||
qint64 updateInterval = DEFAULT_UPDATE_INTERVAL;
|
||||
|
||||
bool giveAwayItem(int player, int item);
|
||||
bool getItem(int player, int item, bool check = true);
|
||||
bool moveItem(int owner, int receiver, int item);
|
||||
int getPlayerId(const QString &gmail) override;
|
||||
SqlDBWriter *_writer = nullptr;
|
||||
|
||||
bool getAllItemsOfPalyer(int player, QSet<int>& items) override;
|
||||
QHash<QString, QHash <int, DBObject*>> _cache;
|
||||
|
||||
friend class testSankeServer;
|
||||
int generateIdForItem() const;
|
||||
int generateIdForPalyer() const;
|
||||
|
||||
void globalUpdateDataBasePrivate(qint64 currentTime);
|
||||
void globalUpdateDataBase(SqlDBCasheWriteMode mode = SqlDBCasheWriteMode::Default);
|
||||
|
||||
signals:
|
||||
void sigItemChanged(int id, const Item& newData);
|
||||
void sigPlayerChanged(int id, const PlayerDBData& newData);
|
||||
void sigItemChanged(int id);
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
#endif // SQLDBCASHE_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user