diff options
| author | Adam <Adam@anope.org> | 2016-07-28 21:29:35 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2016-07-28 21:29:35 -0400 |
| commit | 0e758a2ac23dc4a001e8e126cec14588da9a9769 (patch) | |
| tree | 45df813323e023c5c89db7279426c4ad0943b4a9 /modules/memoserv/main | |
| parent | a3c8afae00c54d5b95c620248b51f90679d7d53f (diff) | |
Allow serializable fields to use storage in the respective objects.
Split service management code nito a proper servicemanager. Make service
references managed instead of lazy lookup. Also made events and
serializable use service manager instead of their respective systems for
management
Diffstat (limited to 'modules/memoserv/main')
| -rw-r--r-- | modules/memoserv/main/ignore.h | 5 | ||||
| -rw-r--r-- | modules/memoserv/main/ignoretype.cpp | 6 | ||||
| -rw-r--r-- | modules/memoserv/main/memo.h | 9 | ||||
| -rw-r--r-- | modules/memoserv/main/memoinfo.cpp | 4 | ||||
| -rw-r--r-- | modules/memoserv/main/memoinfo.h | 5 | ||||
| -rw-r--r-- | modules/memoserv/main/memoinfotype.cpp | 6 | ||||
| -rw-r--r-- | modules/memoserv/main/memoserv.cpp | 49 | ||||
| -rw-r--r-- | modules/memoserv/main/memotype.cpp | 14 |
8 files changed, 53 insertions, 45 deletions
diff --git a/modules/memoserv/main/ignore.h b/modules/memoserv/main/ignore.h index c98b44adf..0147cc2be 100644 --- a/modules/memoserv/main/ignore.h +++ b/modules/memoserv/main/ignore.h @@ -2,6 +2,11 @@ class IgnoreImpl : public MemoServ::Ignore { + friend class IgnoreType; + + MemoServ::MemoInfo *memoinfo = nullptr; + Anope::string mask; + public: IgnoreImpl(Serialize::TypeBase *type) : MemoServ::Ignore(type) { } IgnoreImpl(Serialize::TypeBase *type, Serialize::ID id) : MemoServ::Ignore(type, id) { } diff --git a/modules/memoserv/main/ignoretype.cpp b/modules/memoserv/main/ignoretype.cpp index 375f83272..015925b5f 100644 --- a/modules/memoserv/main/ignoretype.cpp +++ b/modules/memoserv/main/ignoretype.cpp @@ -1,9 +1,9 @@ #include "module.h" #include "ignoretype.h" -IgnoreType::IgnoreType(Module *me) : Serialize::Type<IgnoreImpl>(me, "MemoIgnore") - , mi(this, "mi", true) - , mask(this, "mask") +IgnoreType::IgnoreType(Module *me) : Serialize::Type<IgnoreImpl>(me) + , mi(this, "mi", &IgnoreImpl::memoinfo, true) + , mask(this, "mask", &IgnoreImpl::mask) { } diff --git a/modules/memoserv/main/memo.h b/modules/memoserv/main/memo.h index 1a230c1e9..c0000259a 100644 --- a/modules/memoserv/main/memo.h +++ b/modules/memoserv/main/memo.h @@ -2,11 +2,16 @@ class MemoImpl : public MemoServ::Memo { + friend class MemoType; + + MemoServ::MemoInfo *memoinfo = nullptr; + Anope::string text, sender; + time_t time = 0; + bool unread = false, receipt = false; + public: MemoImpl(Serialize::TypeBase *type) : MemoServ::Memo(type) { } MemoImpl(Serialize::TypeBase *type, Serialize::ID id) : MemoServ::Memo(type, id) { } - //using MemoServ::Memo::Memo; -// MemoImpl(); ~MemoImpl(); MemoServ::MemoInfo *GetMemoInfo() override; diff --git a/modules/memoserv/main/memoinfo.cpp b/modules/memoserv/main/memoinfo.cpp index 45d95533e..5f3b4cccc 100644 --- a/modules/memoserv/main/memoinfo.cpp +++ b/modules/memoserv/main/memoinfo.cpp @@ -53,11 +53,11 @@ void MemoInfoImpl::SetMemoMax(const int16_t &i) std::vector<MemoServ::Memo *> MemoInfoImpl::GetMemos() { - return GetRefs<MemoServ::Memo *>(MemoServ::memo); + return GetRefs<MemoServ::Memo *>(); } std::vector<MemoServ::Ignore *> MemoInfoImpl::GetIgnores() { - return GetRefs<MemoServ::Ignore *>(MemoServ::ignore); + return GetRefs<MemoServ::Ignore *>(); } diff --git a/modules/memoserv/main/memoinfo.h b/modules/memoserv/main/memoinfo.h index 22ea0734f..42f5483ac 100644 --- a/modules/memoserv/main/memoinfo.h +++ b/modules/memoserv/main/memoinfo.h @@ -2,6 +2,11 @@ class MemoInfoImpl : public MemoServ::MemoInfo { + friend class MemoInfoType; + + Serialize::Object *owner = nullptr; + int16_t memomax = 0; + public: MemoInfoImpl(Serialize::TypeBase *type) : MemoServ::MemoInfo(type) { } MemoInfoImpl(Serialize::TypeBase *type, Serialize::ID id) : MemoServ::MemoInfo(type, id) { } diff --git a/modules/memoserv/main/memoinfotype.cpp b/modules/memoserv/main/memoinfotype.cpp index 7eb3af72c..ff387e883 100644 --- a/modules/memoserv/main/memoinfotype.cpp +++ b/modules/memoserv/main/memoinfotype.cpp @@ -1,9 +1,9 @@ #include "module.h" #include "memoinfotype.h" -MemoInfoType::MemoInfoType(Module *me) : Serialize::Type<MemoInfoImpl>(me, "MemoInfo") - , owner(this, "owner", true) - , memomax(this, "memomax") +MemoInfoType::MemoInfoType(Module *me) : Serialize::Type<MemoInfoImpl>(me) + , owner(this, "owner", &MemoInfoImpl::owner, true) + , memomax(this, "memomax", &MemoInfoImpl::memomax) { } diff --git a/modules/memoserv/main/memoserv.cpp b/modules/memoserv/main/memoserv.cpp index ed3939ef7..79344b25e 100644 --- a/modules/memoserv/main/memoserv.cpp +++ b/modules/memoserv/main/memoserv.cpp @@ -14,16 +14,13 @@ #include "modules/help.h" #include "modules/botserv/bot.h" #include "modules/memoserv.h" -//#include "memoinfo.h" -//#include "memo.h" -//#include "ignore.h" #include "memotype.h" #include "memoinfotype.h" #include "ignoretype.h" class MemoServCore : public Module, public MemoServ::MemoServService - , public EventHook<Event::NickCoreCreate> - , public EventHook<Event::CreateChan> + , public EventHook<NickServ::Event::NickRegister> + , public EventHook<Event::ChanRegistered> , public EventHook<Event::BotDelete> , public EventHook<Event::NickIdentify> , public EventHook<Event::JoinChannel> @@ -32,8 +29,6 @@ class MemoServCore : public Module, public MemoServ::MemoServService , public EventHook<Event::Help> { Reference<ServiceBot> MemoServ; - EventHandlers<MemoServ::Event::MemoSend> onmemosend; - EventHandlers<MemoServ::Event::MemoDel> onmemodel; MemoInfoType memoinfo_type; MemoType memo_type; @@ -62,8 +57,16 @@ class MemoServCore : public Module, public MemoServ::MemoServService public: MemoServCore(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, PSEUDOCLIENT | VENDOR) , MemoServ::MemoServService(this) - , onmemosend(this) - , onmemodel(this) + + , EventHook<NickServ::Event::NickRegister>(this) + , EventHook<Event::ChanRegistered>(this) + , EventHook<Event::BotDelete>(this) + , EventHook<Event::NickIdentify>(this) + , EventHook<Event::JoinChannel>(this) + , EventHook<Event::UserAway>(this) + , EventHook<Event::NickUpdate>(this) + , EventHook<Event::Help>(this) + , memoinfo_type(this) , memo_type(this) , ignore_type(this) @@ -95,14 +98,14 @@ class MemoServCore : public Module, public MemoServ::MemoServService if (sender != NULL) sender->lastmemosend = Anope::CurTime; - MemoServ::Memo *m = new MemoImpl(&memo_type); + MemoServ::Memo *m = Serialize::New<MemoServ::Memo *>(); m->SetMemoInfo(mi); m->SetSender(source); m->SetTime(Anope::CurTime); m->SetText(message); m->SetUnread(true); - this->onmemosend(&MemoServ::Event::MemoSend::OnMemoSend, source, target, mi, m); + EventManager::Get()->Dispatch(&MemoServ::Event::MemoSend::OnMemoSend, source, target, mi, m); if (ischan) { @@ -160,16 +163,6 @@ class MemoServCore : public Module, public MemoServ::MemoServService } } - MemoServ::Memo *CreateMemo() override - { - return new MemoImpl(&memo_type); - } - - MemoServ::Ignore *CreateIgnore() override - { - return new IgnoreImpl(&ignore_type); - } - MemoServ::MemoInfo *GetMemoInfo(const Anope::string &target, bool &is_registered, bool &ischan, bool create) override { if (!target.empty() && target[0] == '#') @@ -181,7 +174,7 @@ class MemoServCore : public Module, public MemoServ::MemoServService is_registered = true; if (create && !ci->GetMemos()) { - MemoServ::MemoInfo *mi = new MemoInfoImpl(&memoinfo_type); + MemoServ::MemoInfo *mi = Serialize::New<MemoServ::MemoInfo *>(); mi->SetOwner(ci); } return ci->GetMemos(); @@ -198,7 +191,7 @@ class MemoServCore : public Module, public MemoServ::MemoServService is_registered = true; if (create && !na->GetAccount()->GetMemos()) { - MemoServ::MemoInfo *mi = new MemoInfoImpl(&memoinfo_type); + MemoServ::MemoInfo *mi = Serialize::New<MemoServ::MemoInfo *>(); mi->SetOwner(na->GetAccount()); } return na->GetAccount()->GetMemos(); @@ -224,16 +217,16 @@ class MemoServCore : public Module, public MemoServ::MemoServService MemoServ = bi; } - void OnNickCoreCreate(NickServ::Account *nc) override + void OnNickRegister(User *, NickServ::Nick *na, const Anope::string &) override { - MemoServ::MemoInfo *mi = new MemoInfoImpl(&memoinfo_type); - mi->SetOwner(mi); + MemoServ::MemoInfo *mi = Serialize::New<MemoServ::MemoInfo *>(); + mi->SetOwner(na->GetAccount()); mi->SetMemoMax(Config->GetModule(this)->Get<int>("maxmemos")); } - void OnCreateChan(ChanServ::Channel *ci) override + void OnChanRegistered(ChanServ::Channel *ci) override { - MemoServ::MemoInfo *mi = new MemoInfoImpl(&memoinfo_type); + MemoServ::MemoInfo *mi = Serialize::New<MemoServ::MemoInfo *>(); mi->SetOwner(ci); mi->SetMemoMax(Config->GetModule(this)->Get<int>("maxmemos")); } diff --git a/modules/memoserv/main/memotype.cpp b/modules/memoserv/main/memotype.cpp index c9144bbaa..57cf3ba31 100644 --- a/modules/memoserv/main/memotype.cpp +++ b/modules/memoserv/main/memotype.cpp @@ -1,13 +1,13 @@ #include "module.h" #include "memotype.h" -MemoType::MemoType(Module *me) : Serialize::Type<MemoImpl>(me, "Memo") - , mi(this, "mi", true) - , time(this, "time") - , sender(this, "sender") - , text(this, "text") - , unread(this, "unread") - , receipt(this, "receipt") +MemoType::MemoType(Module *me) : Serialize::Type<MemoImpl>(me) + , mi(this, "mi", &MemoImpl::memoinfo, true) + , time(this, "time", &MemoImpl::time) + , sender(this, "sender", &MemoImpl::sender) + , text(this, "text", &MemoImpl::text) + , unread(this, "unread", &MemoImpl::unread) + , receipt(this, "receipt", &MemoImpl::receipt) { } |
