From f29e1cf383529a1a29f02b0669d973f5ee0b7a66 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 28 May 2014 12:07:29 -0400 Subject: Move most of the core pseudoclient logic to modules --- modules/pseudoclients/memoserv/memo.cpp | 58 +++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 modules/pseudoclients/memoserv/memo.cpp (limited to 'modules/pseudoclients/memoserv/memo.cpp') diff --git a/modules/pseudoclients/memoserv/memo.cpp b/modules/pseudoclients/memoserv/memo.cpp new file mode 100644 index 000000000..9383e3b8b --- /dev/null +++ b/modules/pseudoclients/memoserv/memo.cpp @@ -0,0 +1,58 @@ +#include "memo.h" + +MemoImpl::MemoImpl() +{ + unread = receipt = false; +} + +MemoImpl::~MemoImpl() +{ + bool ischan, isregistered; + MemoServ::MemoInfo *mi = MemoServ::service->GetMemoInfo(this->owner, ischan, isregistered, false); + if (mi) + { + std::vector::iterator it = std::find(mi->memos->begin(), mi->memos->end(), this); + + if (it != mi->memos->end()) + mi->memos->erase(it); + } +} + +void MemoImpl::Serialize(Serialize::Data &data) const +{ + data["owner"] << this->owner; + data.SetType("time", Serialize::Data::DT_INT); data["time"] << this->time; + data["sender"] << this->sender; + data["text"] << this->text; + data["unread"] << this->unread; + data["receipt"] << this->receipt; +} + +Serializable* MemoImpl::Unserialize(Serializable *obj, Serialize::Data &data) +{ + Anope::string owner; + + data["owner"] >> owner; + + bool ischan, isregistered; + MemoServ::MemoInfo *mi = MemoServ::service->GetMemoInfo(owner, ischan, isregistered, true); + if (!mi) + return NULL; + + Memo *m; + if (obj) + m = anope_dynamic_static_cast(obj); + else + m = new MemoImpl(); + + m->owner = owner; + data["time"] >> m->time; + data["sender"] >> m->sender; + data["text"] >> m->text; + data["unread"] >> m->unread; + data["receipt"] >> m->receipt; + + if (obj == NULL) + mi->memos->push_back(m); + return m; +} -- cgit