summaryrefslogtreecommitdiff
path: root/src/operserv.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-09-25 04:19:15 -0400
committerAdam <Adam@anope.org>2011-09-25 04:19:15 -0400
commit1f2399de364c09adcce4193895cd362d80ffdfc5 (patch)
tree5f40fc531f22c174b6e10bb7bc12842a4a21d30b /src/operserv.cpp
parent43201ead9575a74e350710bc191f4ac67366aca7 (diff)
Added a new database format and sqlite support. Also moved db-convert to a module.
Diffstat (limited to 'src/operserv.cpp')
-rw-r--r--src/operserv.cpp41
1 files changed, 39 insertions, 2 deletions
diff --git a/src/operserv.cpp b/src/operserv.cpp
index b17f9e0ad..b0db3aee1 100644
--- a/src/operserv.cpp
+++ b/src/operserv.cpp
@@ -16,6 +16,10 @@
/* List of XLine managers we check users against in XLineManager::CheckAll */
std::list<XLineManager *> XLineManager::XLineManagers;
+XLine::XLine()
+{
+}
+
XLine::XLine(const Anope::string &mask, const Anope::string &reason) : Mask(mask), Created(0), Expires(0), Reason(reason)
{
}
@@ -66,6 +70,37 @@ sockaddrs XLine::GetIP() const
return addr;
}
+SerializableBase::serialized_data XLine::serialize()
+{
+ serialized_data data;
+
+ data["mask"] << this->Mask;
+ data["by"] << this->By;
+ data["created"] << this->Created;
+ data["expires"] << this->Expires;
+ data["reason"] << this->Reason;
+ data["manager"] << this->Manager;
+
+ return data;
+}
+
+void XLine::unserialize(SerializableBase::serialized_data &data)
+{
+ service_reference<XLineManager> xlm(data["manager"].astr());
+ if (!xlm)
+ return;
+
+ XLine *xl = new XLine();
+
+ data["mask"] >> xl->Mask;
+ data["by"] >> xl->By;
+ data["created"] >> xl->Created;
+ data["expires"] >> xl->Expires;
+ data["reason"] >> xl->Reason;
+
+ xlm->AddXLine(xl);
+}
+
/** Constructor
*/
XLineManager::XLineManager(Module *creator, const Anope::string &xname, char t) : Service<XLineManager>(creator, xname), type(t)
@@ -159,6 +194,7 @@ const std::vector<XLine *> &XLineManager::GetList() const
*/
void XLineManager::AddXLine(XLine *x)
{
+ x->Manager = this->name;
this->XLines.push_back(x);
}
@@ -199,8 +235,9 @@ XLine *XLineManager::GetEntry(unsigned index)
*/
void XLineManager::Clear()
{
- while (!this->XLines.empty())
- this->DelXLine(this->XLines.front());
+ for (unsigned i = 0; i < this->XLines.size(); ++i)
+ delete this->XLines[i];
+ this->XLines.clear();
}
/** Add an entry to this XLine Manager