summaryrefslogtreecommitdiff
path: root/src/nickalias.cpp
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 /src/nickalias.cpp
parent63c639e108a00d7dbb0d7ac9891684fc83a3b207 (diff)
Reworked live SQL support yet again
Diffstat (limited to 'src/nickalias.cpp')
-rw-r--r--src/nickalias.cpp43
1 files changed, 24 insertions, 19 deletions
diff --git a/src/nickalias.cpp b/src/nickalias.cpp
index 586add90e..18e581714 100644
--- a/src/nickalias.cpp
+++ b/src/nickalias.cpp
@@ -19,16 +19,17 @@
#include "servers.h"
#include "config.h"
-class NickServHeld;
+serialize_checker<nickalias_map> NickAliasList("NickAlias");
+class NickServHeld;
typedef std::map<Anope::string, NickServHeld *> nickservheld_map;
static nickservheld_map NickServHelds;
/** Default constructor
* @param nick The nick
- * @param nickcore The nickcofe for this nick
+ * @param nickcore The nickcore for this nick
*/
-NickAlias::NickAlias(const Anope::string &nickname, NickCore *nickcore) : Flags<NickNameFlag, NS_END>(NickNameFlagStrings)
+NickAlias::NickAlias(const Anope::string &nickname, NickCore* nickcore) : Flags<NickNameFlag, NS_END>(NickNameFlagStrings)
{
if (nickname.empty())
throw CoreException("Empty nick passed to NickAlias constructor");
@@ -38,16 +39,16 @@ NickAlias::NickAlias(const Anope::string &nickname, NickCore *nickcore) : Flags<
this->time_registered = this->last_seen = Anope::CurTime;
this->nick = nickname;
this->nc = nickcore;
- this->nc->aliases.push_back(this);
+ nickcore->aliases.push_back(this);
- NickAliasList[this->nick] = this;
+ (*NickAliasList)[this->nick] = this;
if (this->nc->o == NULL)
{
Oper *o = Oper::Find(this->nick);
if (o == NULL)
o = Oper::Find(this->nc->display);
- this->nc->o = o;
+ nickcore->o = o;
if (this->nc->o != NULL)
Log() << "Tied oper " << this->nc->display << " to type " << this->nc->o->ot->GetName();
}
@@ -63,7 +64,7 @@ NickAlias::~NickAlias()
if (this->nc)
{
/* Next: see if our core is still useful. */
- std::list<NickAlias *>::iterator it = std::find(this->nc->aliases.begin(), this->nc->aliases.end(), this);
+ std::list<serialize_obj<NickAlias> >::iterator it = std::find(this->nc->aliases.begin(), this->nc->aliases.end(), this);
if (it != this->nc->aliases.end())
this->nc->aliases.erase(it);
if (this->nc->aliases.empty())
@@ -80,7 +81,7 @@ NickAlias::~NickAlias()
}
/* Remove us from the aliases list */
- NickAliasList.erase(this->nick);
+ NickAliasList->erase(this->nick);
}
/** Release a nick from being held. This can be called from the core (ns_release)
@@ -242,16 +243,16 @@ time_t NickAlias::GetVhostCreated() const
return this->vhost_created;
}
-Anope::string NickAlias::serialize_name() const
+const Anope::string NickAlias::serialize_name() const
{
return "NickAlias";
}
-Serializable::serialized_data NickAlias::serialize()
+Serialize::Data NickAlias::serialize() const
{
- serialized_data data;
+ Serialize::Data data;
- data["nick"].setKey().setMax(Config->NickLen) << this->nick;
+ data["nick"].setMax(Config->NickLen) << this->nick;
data["last_quit"] << this->last_quit;
data["last_realname"] << this->last_realname;
data["last_usermask"] << this->last_usermask;
@@ -272,18 +273,21 @@ Serializable::serialized_data NickAlias::serialize()
return data;
}
-void NickAlias::unserialize(serialized_data &data)
+Serializable* NickAlias::unserialize(Serializable *obj, Serialize::Data &data)
{
NickCore *core = findcore(data["nc"].astr());
if (core == NULL)
- return;
+ return NULL;
- NickAlias *na = findnick(data["nick"].astr());
- if (na == NULL)
+ NickAlias *na;
+ if (obj)
+ na = debug_cast<NickAlias *>(obj);
+ else
na = new NickAlias(data["nick"].astr(), core);
- else if (na->nc != core)
+
+ if (na->nc != core)
{
- std::list<NickAlias *>::iterator it = std::find(na->nc->aliases.begin(), na->nc->aliases.end(), na);
+ std::list<serialize_obj<NickAlias> >::iterator it = std::find(na->nc->aliases.begin(), na->nc->aliases.end(), na);
if (it != na->nc->aliases.end())
na->nc->aliases.erase(it);
@@ -293,7 +297,7 @@ void NickAlias::unserialize(serialized_data &data)
change_core_display(na->nc);
na->nc = core;
- na->nc->aliases.push_back(na);
+ core->aliases.push_back(na);
}
data["last_quit"] >> na->last_quit;
@@ -307,5 +311,6 @@ void NickAlias::unserialize(serialized_data &data)
time_t vhost_time;
data["vhost_time"] >> vhost_time;
na->SetVhost(data["vhost_ident"].astr(), data["vhost_host"].astr(), data["vhost_creator"].astr(), vhost_time);
+ return na;
}