From a434baed9154d90ad0dfd31c71a463fb8300bfd8 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 1 Oct 2012 18:50:29 -0400 Subject: Allow modules to store data in their own databases. --- include/access.h | 1 - include/account.h | 2 -- include/bots.h | 1 - include/memo.h | 1 - include/oper.h | 1 - include/regchannel.h | 7 ++----- include/serialize.h | 24 +++++++++++++++++++----- 7 files changed, 21 insertions(+), 16 deletions(-) (limited to 'include') diff --git a/include/access.h b/include/access.h index b29572dfc..558dbeb5c 100644 --- a/include/access.h +++ b/include/access.h @@ -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 &); diff --git a/include/account.h b/include/account.h index ff9c70727..8b4920fe4 100644 --- a/include/account.h +++ b/include/account.h @@ -134,7 +134,6 @@ class CoreExport NickAlias : public Extensible, public Flags 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 > 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 &); diff --git a/include/bots.h b/include/bots.h index 521ab8c03..fa3053b57 100644 --- a/include/bots.h +++ b/include/bots.h @@ -62,7 +62,6 @@ class CoreExport BotInfo : public User, public Flags, public Se */ virtual ~BotInfo(); - const Anope::string serialize_name() const; Serialize::Data serialize() const; static Serializable* unserialize(Serializable *obj, Serialize::Data &); diff --git a/include/memo.h b/include/memo.h index 8ece00d6a..1879f89b3 100644 --- a/include/memo.h +++ b/include/memo.h @@ -38,7 +38,6 @@ class CoreExport Memo : public Flags, 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 &); diff --git a/include/oper.h b/include/oper.h index d388c4339..6a18d3e2b 100644 --- a/include/oper.h +++ b/include/oper.h @@ -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); }; diff --git a/include/regchannel.h b/include/regchannel.h index b22ebf677..0f5bb022a 100644 --- a/include/regchannel.h +++ b/include/regchannel.h @@ -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, 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 *serializable_items; - + SerializeType *s_type; private: - std::list::iterator s_iter; + std::list::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 &GetItems(); @@ -108,12 +113,19 @@ class CoreExport SerializeType Anope::string name; unserialize_func unserialize; + Module *owner; + time_t timestamp; public: std::map 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 &GetTypeOrder(); -- cgit