diff options
author | Adam <Adam@anope.org> | 2012-12-13 06:12:56 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2012-12-13 06:12:56 -0500 |
commit | c1077faa281c5635f85b892e605e23bd6c8fcc3b (patch) | |
tree | 213b5f87a19f182e1efd6110f03ff10d5b10ebf6 /src/access.cpp | |
parent | 76ba147c22944b67e8522cd2bb7b6e1bae498ced (diff) |
Optimize much of the database code and serialize code.
Diffstat (limited to 'src/access.cpp')
-rw-r--r-- | src/access.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/access.cpp b/src/access.cpp index 863e0d41d..c8cd3cf98 100644 --- a/src/access.cpp +++ b/src/access.cpp @@ -99,25 +99,26 @@ ChanAccess::~ChanAccess() { } -Serialize::Data ChanAccess::Serialize() const +void ChanAccess::Serialize(Serialize::Data &data) const { - Serialize::Data data; - data["provider"] << this->provider->name; data["ci"] << this->ci->name; data["mask"] << this->mask; data["creator"] << this->creator; - data["last_seen"].SetType(Serialize::DT_INT) << this->last_seen; - data["created"].SetType(Serialize::DT_INT) << this->created; + data.SetType("last_seen", Serialize::Data::DT_INT); data["last_seen"] << this->last_seen; + data.SetType("created", Serialize::Data::DT_INT); data["created"] << this->created; data["data"] << this->AccessSerialize(); - - return data; } Serializable* ChanAccess::Unserialize(Serializable *obj, Serialize::Data &data) { - ServiceReference<AccessProvider> aprovider("AccessProvider", data["provider"].astr()); - ChannelInfo *ci = ChannelInfo::Find(data["ci"].astr()); + Anope::string provider, chan; + + data["provider"] >> provider; + data["ci"] >>chan; + + ServiceReference<AccessProvider> aprovider("AccessProvider", provider); + ChannelInfo *ci = ChannelInfo::Find(chan); if (!aprovider || !ci) return NULL; @@ -131,7 +132,10 @@ Serializable* ChanAccess::Unserialize(Serializable *obj, Serialize::Data &data) data["creator"] >> access->creator; data["last_seen"] >> access->last_seen; data["created"] >> access->created; - access->AccessUnserialize(data["data"].astr()); + + Anope::string adata; + data["data"] >> adata; + access->AccessUnserialize(adata); if (!obj) ci->AddAccess(access); |