summaryrefslogtreecommitdiff
path: root/modules/commands/os_forbid.h
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2012-04-23 05:08:26 -0400
committerAdam <Adam@anope.org>2012-04-23 05:08:26 -0400
commit573e49a7ead331219eb6f0d3ca9cf83e793a5c9c (patch)
treee145e04fa3d041cf92ce46da4ac790b63231059c /modules/commands/os_forbid.h
parent63c639e108a00d7dbb0d7ac9891684fc83a3b207 (diff)
Reworked live SQL support yet again
Diffstat (limited to 'modules/commands/os_forbid.h')
-rw-r--r--modules/commands/os_forbid.h24
1 files changed, 15 insertions, 9 deletions
diff --git a/modules/commands/os_forbid.h b/modules/commands/os_forbid.h
index fec721420..30fdb9611 100644
--- a/modules/commands/os_forbid.h
+++ b/modules/commands/os_forbid.h
@@ -18,9 +18,9 @@ struct ForbidData : Serializable
time_t expires;
ForbidType type;
- Anope::string serialize_name() const anope_override { return "ForbidData"; }
- serialized_data serialize() anope_override;
- static void unserialize(serialized_data &data);
+ const Anope::string serialize_name() const anope_override { return "ForbidData"; }
+ Serialize::Data serialize() const anope_override;
+ static Serializable* unserialize(Serializable *obj, Serialize::Data &data);
};
class ForbidService : public Service
@@ -39,9 +39,9 @@ class ForbidService : public Service
static service_reference<ForbidService> forbid_service("ForbidService", "forbid");
-Serializable::serialized_data ForbidData::serialize()
+Serialize::Data ForbidData::serialize() const
{
- serialized_data data;
+ Serialize::Data data;
data["mask"] << this->mask;
data["creator"] << this->creator;
@@ -53,12 +53,16 @@ Serializable::serialized_data ForbidData::serialize()
return data;
}
-void ForbidData::unserialize(serialized_data &data)
+Serializable* ForbidData::unserialize(Serializable *obj, Serialize::Data &data)
{
if (!forbid_service)
- return;
+ return NULL;
- ForbidData *fb = new ForbidData;
+ ForbidData *fb;
+ if (obj)
+ fb = debug_cast<ForbidData *>(obj);
+ else
+ fb = new ForbidData;
data["mask"] >> fb->mask;
data["creator"] >> fb->creator;
@@ -69,7 +73,9 @@ void ForbidData::unserialize(serialized_data &data)
data["type"] >> t;
fb->type = static_cast<ForbidType>(t);
- forbid_service->AddForbid(fb);
+ if (!obj)
+ forbid_service->AddForbid(fb);
+ return fb;
}
#endif