summaryrefslogtreecommitdiff
path: root/src/nickalias.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2012-12-13 06:12:56 -0500
committerAdam <Adam@anope.org>2012-12-13 06:12:56 -0500
commitc1077faa281c5635f85b892e605e23bd6c8fcc3b (patch)
tree213b5f87a19f182e1efd6110f03ff10d5b10ebf6 /src/nickalias.cpp
parent76ba147c22944b67e8522cd2bb7b6e1bae498ced (diff)
Optimize much of the database code and serialize code.
Diffstat (limited to 'src/nickalias.cpp')
-rw-r--r--src/nickalias.cpp34
1 files changed, 22 insertions, 12 deletions
diff --git a/src/nickalias.cpp b/src/nickalias.cpp
index f163c145f..4ce861943 100644
--- a/src/nickalias.cpp
+++ b/src/nickalias.cpp
@@ -238,17 +238,15 @@ NickAlias *NickAlias::Find(const Anope::string &nick)
return NULL;
}
-Serialize::Data NickAlias::Serialize() const
+void NickAlias::Serialize(Serialize::Data &data) const
{
- Serialize::Data data;
-
- data["nick"].SetMax(Config->NickLen) << this->nick;
+ data["nick"] << this->nick;
data["last_quit"] << this->last_quit;
data["last_realname"] << this->last_realname;
data["last_usermask"] << this->last_usermask;
data["last_realhost"] << this->last_realhost;
- data["time_registered"].SetType(Serialize::DT_INT) << this->time_registered;
- data["last_seen"].SetType(Serialize::DT_INT) << this->last_seen;
+ data.SetType("time_registered", Serialize::Data::DT_INT); data["time_registered"] << this->time_registered;
+ data.SetType("time_registered", Serialize::Data::DT_INT); data["last_seen"] << this->last_seen;
data["nc"] << this->nc->display;
data["flags"] << this->ToString();
@@ -259,13 +257,16 @@ Serialize::Data NickAlias::Serialize() const
data["vhost_creator"] << this->GetVhostCreator();
data["vhost_time"] << this->GetVhostCreated();
}
-
- return data;
}
Serializable* NickAlias::Unserialize(Serializable *obj, Serialize::Data &data)
{
- NickCore *core = NickCore::Find(data["nc"].astr());
+ Anope::string snc, snick;
+
+ data["nc"] >> snc;
+ data["nick"] >> snick;
+
+ NickCore *core = NickCore::Find(snc);
if (core == NULL)
return NULL;
@@ -273,7 +274,7 @@ Serializable* NickAlias::Unserialize(Serializable *obj, Serialize::Data &data)
if (obj)
na = anope_dynamic_static_cast<NickAlias *>(obj);
else
- na = new NickAlias(data["nick"].astr(), core);
+ na = new NickAlias(snick, core);
if (na->nc != core)
{
@@ -296,11 +297,20 @@ Serializable* NickAlias::Unserialize(Serializable *obj, Serialize::Data &data)
data["last_realhost"] >> na->last_realhost;
data["time_registered"] >> na->time_registered;
data["last_seen"] >> na->last_seen;
- na->FromString(data["flags"].astr());
+ Anope::string flags;
+ data["flags"] >> flags;
+ na->FromString(flags);
+
+ Anope::string vhost_ident, vhost_host, vhost_creator;
time_t vhost_time;
+
+ data["vhost_ident"] >> vhost_ident;
+ data["vhost_host"] >> vhost_host;
+ data["vhost_creator"] >> vhost_creator;
data["vhost_time"] >> vhost_time;
- na->SetVhost(data["vhost_ident"].astr(), data["vhost_host"].astr(), data["vhost_creator"].astr(), vhost_time);
+
+ na->SetVhost(vhost_ident, vhost_host, vhost_creator, vhost_time);
return na;
}