mirror of
https://github.com/anope/anope.git
synced 2026-07-07 05:53:13 +02:00
Allow modules to store data in their own databases.
This commit is contained in:
@@ -73,7 +73,6 @@ class CoreExport ChanAccess : public Serializable
|
||||
ChanAccess(AccessProvider *p);
|
||||
virtual ~ChanAccess();
|
||||
|
||||
const Anope::string serialize_name() const anope_override;
|
||||
Serialize::Data serialize() const anope_override;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
|
||||
|
||||
|
||||
@@ -134,7 +134,6 @@ class CoreExport NickAlias : public Extensible, public Flags<NickNameFlag, NS_EN
|
||||
time_t last_seen; /* When it was seen online for the last time */
|
||||
serialize_obj<NickCore> nc; /* I'm an alias of this */
|
||||
|
||||
const Anope::string serialize_name() const anope_override;
|
||||
Serialize::Data serialize() const anope_override;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
|
||||
|
||||
@@ -218,7 +217,6 @@ class CoreExport NickCore : public Extensible, public Flags<NickCoreFlag, NI_END
|
||||
time_t lastmail; /* Last time this nick record got a mail */
|
||||
std::list<serialize_obj<NickAlias> > aliases; /* List of aliases */
|
||||
|
||||
const Anope::string serialize_name() const anope_override;
|
||||
Serialize::Data serialize() const anope_override;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
|
||||
|
||||
|
||||
@@ -62,7 +62,6 @@ class CoreExport BotInfo : public User, public Flags<BotFlag, BI_END>, public Se
|
||||
*/
|
||||
virtual ~BotInfo();
|
||||
|
||||
const Anope::string serialize_name() const;
|
||||
Serialize::Data serialize() const;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
|
||||
|
||||
|
||||
@@ -38,7 +38,6 @@ class CoreExport Memo : public Flags<MemoFlag>, public Serializable
|
||||
public:
|
||||
Memo();
|
||||
|
||||
const Anope::string serialize_name() const anope_override;
|
||||
Serialize::Data serialize() const anope_override;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
|
||||
|
||||
|
||||
@@ -40,7 +40,6 @@ class CoreExport XLine : public Serializable
|
||||
bool HasNickOrReal() const;
|
||||
bool IsRegex() const;
|
||||
|
||||
const Anope::string serialize_name() const anope_override;
|
||||
Serialize::Data serialize() const anope_override;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &data);
|
||||
};
|
||||
|
||||
@@ -95,7 +95,7 @@ struct CoreExport BadWord : Serializable
|
||||
Anope::string word;
|
||||
BadWordType type;
|
||||
|
||||
const Anope::string serialize_name() const anope_override;
|
||||
BadWord() : Serializable("BadWord") { }
|
||||
Serialize::Data serialize() const anope_override;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
|
||||
};
|
||||
@@ -125,7 +125,6 @@ class CoreExport AutoKick : public Flags<AutoKickFlag>, public Serializable
|
||||
time_t addtime;
|
||||
time_t last_used;
|
||||
|
||||
const Anope::string serialize_name() const anope_override;
|
||||
Serialize::Data serialize() const anope_override;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
|
||||
};
|
||||
@@ -142,7 +141,6 @@ struct CoreExport ModeLock : Serializable
|
||||
|
||||
ModeLock(ChannelInfo *ch, bool s, ChannelModeName n, const Anope::string &p, const Anope::string &se = "", time_t c = Anope::CurTime);
|
||||
|
||||
const Anope::string serialize_name() const anope_override;
|
||||
Serialize::Data serialize() const anope_override;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
|
||||
};
|
||||
@@ -160,7 +158,7 @@ struct CoreExport LogSetting : Serializable
|
||||
Anope::string creator;
|
||||
time_t created;
|
||||
|
||||
const Anope::string serialize_name() const anope_override;
|
||||
LogSetting() : Serializable("LogSetting") { }
|
||||
Serialize::Data serialize() const anope_override;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
|
||||
};
|
||||
@@ -219,7 +217,6 @@ class CoreExport ChannelInfo : public Extensible, public Flags<ChannelInfoFlag,
|
||||
int16_t floodlines, floodsecs; /* For FLOOD kicker */
|
||||
int16_t repeattimes; /* For REPEAT kicker */
|
||||
|
||||
const Anope::string serialize_name() const anope_override;
|
||||
Serialize::Data serialize() const anope_override;
|
||||
static Serializable* unserialize(Serializable *obj, Serialize::Data &);
|
||||
|
||||
|
||||
+19
-5
@@ -62,18 +62,22 @@ namespace Serialize
|
||||
|
||||
extern void RegisterTypes();
|
||||
|
||||
class SerializeType;
|
||||
|
||||
class CoreExport Serializable : public virtual Base
|
||||
{
|
||||
private:
|
||||
static std::list<Serializable *> *serializable_items;
|
||||
|
||||
SerializeType *s_type;
|
||||
private:
|
||||
std::list<Serializable *>::iterator s_iter;
|
||||
std::list<Serializable *>::iterator s_iter; // Iterator into serializable_items
|
||||
|
||||
Serialize::Data last_commit;
|
||||
time_t last_commit_time;
|
||||
|
||||
protected:
|
||||
Serializable();
|
||||
protected:
|
||||
Serializable(const Anope::string &serialize_type);
|
||||
Serializable(const Serializable &);
|
||||
|
||||
virtual ~Serializable();
|
||||
@@ -93,7 +97,8 @@ class CoreExport Serializable : public virtual Base
|
||||
bool IsTSCached();
|
||||
void UpdateTS();
|
||||
|
||||
virtual const Anope::string serialize_name() const = 0;
|
||||
SerializeType* GetSerializableType() const;
|
||||
|
||||
virtual Serialize::Data serialize() const = 0;
|
||||
|
||||
static const std::list<Serializable *> &GetItems();
|
||||
@@ -108,12 +113,19 @@ class CoreExport SerializeType
|
||||
|
||||
Anope::string name;
|
||||
unserialize_func unserialize;
|
||||
Module *owner;
|
||||
|
||||
time_t timestamp;
|
||||
|
||||
public:
|
||||
std::map<unsigned int, Serializable *> objects;
|
||||
|
||||
SerializeType(const Anope::string &n, unserialize_func f);
|
||||
/** Creates a new serializable type
|
||||
* @param n Type name
|
||||
* @param f Func to unserialize objects
|
||||
* @param owner Owner of this type. Leave NULL for the core.
|
||||
*/
|
||||
SerializeType(const Anope::string &n, unserialize_func f, Module *owner = NULL);
|
||||
~SerializeType();
|
||||
|
||||
const Anope::string &GetName();
|
||||
@@ -125,6 +137,8 @@ class CoreExport SerializeType
|
||||
time_t GetTimestamp() const;
|
||||
void UpdateTimestamp();
|
||||
|
||||
Module* GetOwner() const;
|
||||
|
||||
static SerializeType *Find(const Anope::string &name);
|
||||
|
||||
static const std::vector<Anope::string> &GetTypeOrder();
|
||||
|
||||
Reference in New Issue
Block a user