diff options
author | Adam <Adam@anope.org> | 2012-04-23 05:08:26 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2012-04-23 05:08:26 -0400 |
commit | 573e49a7ead331219eb6f0d3ca9cf83e793a5c9c (patch) | |
tree | e145e04fa3d041cf92ce46da4ac790b63231059c /src/nickalias.cpp | |
parent | 63c639e108a00d7dbb0d7ac9891684fc83a3b207 (diff) |
Reworked live SQL support yet again
Diffstat (limited to 'src/nickalias.cpp')
-rw-r--r-- | src/nickalias.cpp | 43 |
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; } |