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 | |
| 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')
| -rw-r--r-- | modules/memoserv/cancel.cpp | 5 | ||||
| -rw-r--r-- | modules/memoserv/del.cpp | 9 | ||||
| -rw-r--r-- | modules/memoserv/ignore.cpp | 4 | ||||
| -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 | ||||
| -rw-r--r-- | modules/memoserv/rsend.cpp | 3 | ||||
| -rw-r--r-- | modules/memoserv/set.cpp | 10 |
13 files changed, 67 insertions, 62 deletions
diff --git a/modules/memoserv/cancel.cpp b/modules/memoserv/cancel.cpp index e3da82581..fe61fe18c 100644 --- a/modules/memoserv/cancel.cpp +++ b/modules/memoserv/cancel.cpp @@ -32,7 +32,7 @@ class CommandMSCancel : public Command const Anope::string &nname = params[0]; bool ischan, isregistered; - MemoServ::MemoInfo *mi = MemoServ::service->GetMemoInfo(name, ischan, isregistered, false); + MemoServ::MemoInfo *mi = MemoServ::service->GetMemoInfo(nname, ischan, isregistered, false); if (!isregistered) { @@ -57,8 +57,7 @@ class CommandMSCancel : public Command MemoServ::Memo *m = memos[i]; if (m->GetUnread() && source.nc->GetDisplay().equals_ci(m->GetSender())) { - if (MemoServ::Event::OnMemoDel) - MemoServ::Event::OnMemoDel(&MemoServ::Event::MemoDel::OnMemoDel, ischan ? ci->GetName() : na->GetAccount()->GetDisplay(), mi, m); + EventManager::Get()->Dispatch(&MemoServ::Event::MemoDel::OnMemoDel, ischan ? ci->GetName() : na->GetAccount()->GetDisplay(), mi, m); mi->Del(i); source.Reply(_("Your last memo to \002{0}\002 has been cancelled."), nname); return; diff --git a/modules/memoserv/del.cpp b/modules/memoserv/del.cpp index 79af11adc..dffa3c8cd 100644 --- a/modules/memoserv/del.cpp +++ b/modules/memoserv/del.cpp @@ -81,8 +81,7 @@ class CommandMSDel : public Command if (!number || number > memos.size()) return; - if (MemoServ::Event::OnMemoDel) - MemoServ::Event::OnMemoDel(&MemoServ::Event::MemoDel::OnMemoDel, ci ? ci->GetName() : source.nc->GetDisplay(), mi, mi->GetMemo(number - 1)); + EventManager::Get()->Dispatch(&MemoServ::Event::MemoDel::OnMemoDel, ci ? ci->GetName() : source.nc->GetDisplay(), mi, mi->GetMemo(number - 1)); mi->Del(number - 1); source.Reply(_("Memo \002{0}\002 has been deleted."), number); @@ -92,8 +91,7 @@ class CommandMSDel : public Command else if (numstr.equals_ci("LAST")) { /* Delete last memo. */ - if (MemoServ::Event::OnMemoDel) - MemoServ::Event::OnMemoDel(&MemoServ::Event::MemoDel::OnMemoDel, ci ? ci->GetName() : source.nc->GetDisplay(), mi, mi->GetMemo(memos.size() - 1)); + EventManager::Get()->Dispatch(&MemoServ::Event::MemoDel::OnMemoDel, ci ? ci->GetName() : source.nc->GetDisplay(), mi, mi->GetMemo(memos.size() - 1)); mi->Del(memos.size() - 1); source.Reply(_("Memo \002{0}\002 has been deleted."), memos.size() + 1); } @@ -103,8 +101,7 @@ class CommandMSDel : public Command std::for_each(memos.begin(), memos.end(), [&](MemoServ::Memo *m) { - if (MemoServ::Event::OnMemoDel) - MemoServ::Event::OnMemoDel(&MemoServ::Event::MemoDel::OnMemoDel, ci ? ci->GetName() : source.nc->GetDisplay(), mi, m); + EventManager::Get()->Dispatch(&MemoServ::Event::MemoDel::OnMemoDel, ci ? ci->GetName() : source.nc->GetDisplay(), mi, m); delete m; }); if (!chan.empty()) diff --git a/modules/memoserv/ignore.cpp b/modules/memoserv/ignore.cpp index c454444ea..7dad842cf 100644 --- a/modules/memoserv/ignore.cpp +++ b/modules/memoserv/ignore.cpp @@ -66,7 +66,7 @@ class CommandMSIgnore : public Command if (command.equals_ci("ADD") && !param.empty()) { - if (ignores.size() >= Config->GetModule(this->owner)->Get<unsigned>("max", "32")) + if (ignores.size() >= Config->GetModule(this->GetOwner())->Get<unsigned>("max", "32")) { source.Reply(_("Sorry, the memo ignore list for \002{0}\002 is full."), channel); return; @@ -79,7 +79,7 @@ class CommandMSIgnore : public Command return; } - MemoServ::Ignore *ign = MemoServ::service->CreateIgnore(); + MemoServ::Ignore *ign = Serialize::New<MemoServ::Ignore *>(); ign->SetMemoInfo(mi); ign->SetMask(param); 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) { } diff --git a/modules/memoserv/rsend.cpp b/modules/memoserv/rsend.cpp index 16f6105fa..887c87cc6 100644 --- a/modules/memoserv/rsend.cpp +++ b/modules/memoserv/rsend.cpp @@ -23,6 +23,7 @@ class CommandMSRSend : public Command void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) override { +#warning "this is completely disabled" #if 0 if (!MemoServ::service) return; @@ -44,7 +45,7 @@ class CommandMSRSend : public Command return; } - if (Config->GetModule(this->owner)->Get<bool>("operonly") && !source.IsServicesOper()) + if (Config->GetModule(this->GetOwner())->Get<bool>("operonly") && !source.IsServicesOper()) source.Reply(_("Access denied. This command is for operators only.")); else { diff --git a/modules/memoserv/set.cpp b/modules/memoserv/set.cpp index c924d0ea0..361ebeba3 100644 --- a/modules/memoserv/set.cpp +++ b/modules/memoserv/set.cpp @@ -301,11 +301,11 @@ class MSSet : public Module public: MSSet(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR) , commandmsset(this) - , memo_signon(this, NickServ::account, "MEMO_SIGNON") - , memo_receive(this, NickServ::account, "MEMO_RECEIVE") - , memo_mail(this, NickServ::account, "MEMO_MAIL") - , memo_hardmax_nick(this, NickServ::account, "MEMO_HARDMAX") - , memo_hardmax_channel(this, ChanServ::channel, "MEMO_HARDMAX") + , memo_signon(this, "MEMO_SIGNON") + , memo_receive(this, "MEMO_RECEIVE") + , memo_mail(this, "MEMO_MAIL") + , memo_hardmax_nick(this, "MEMO_HARDMAX") + , memo_hardmax_channel(this, "MEMO_HARDMAX") { } |
