aboutsummaryrefslogtreecommitdiffstats
path: root/src/base.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2019-08-09 03:57:55 +0100
committerGravatar Sadie Powell2019-08-09 04:07:33 +0100
commit7c7de81b6d513330984bb328de7599bb1328f989 (patch)
tree1cd62b0d3419fcb93c488911f6ef8e5048f4bb99 /src/base.cpp
parentMerge branch 'insp3' into master. (diff)
parentFix waitpong referring to registration timeouts as ping timeouts. (diff)
downloadinspircd++-7c7de81b6d513330984bb328de7599bb1328f989.tar.gz
inspircd++-7c7de81b6d513330984bb328de7599bb1328f989.tar.bz2
inspircd++-7c7de81b6d513330984bb328de7599bb1328f989.zip
Merge branch 'insp3' into master.
Diffstat (limited to 'src/base.cpp')
-rw-r--r--src/base.cpp92
1 files changed, 71 insertions, 21 deletions
diff --git a/src/base.cpp b/src/base.cpp
index 12162f7cf..9b4b83691 100644
--- a/src/base.cpp
+++ b/src/base.cpp
@@ -219,21 +219,77 @@ Extensible::~Extensible()
ServerInstance->Logs.Log("CULLLIST", LOG_DEBUG, "Extensible destructor called without cull @%p", (void*)this);
}
-LocalExtItem::LocalExtItem(const std::string& Key, ExtensibleType exttype, Module* mod)
- : ExtensionItem(Key, exttype, mod)
+void ExtensionItem::FromInternal(Extensible* container, const std::string& value)
{
+ FromNetwork(container, value);
}
-LocalExtItem::~LocalExtItem()
+void ExtensionItem::FromNetwork(Extensible* container, const std::string& value)
+{
+}
+
+std::string ExtensionItem::ToHuman(const Extensible* container, void* item) const
{
+ // Try to use the network form by default.
+ std::string ret = ToNetwork(container, item);
+
+ // If there's no network form then fall back to the internal form.
+ if (ret.empty())
+ ret = ToInternal(container, item);
+
+ return ret;
}
-std::string LocalExtItem::serialize(SerializeFormat format, const Extensible* container, void* item) const
+std::string ExtensionItem::ToInternal(const Extensible* container, void* item) const
{
+ return ToNetwork(container, item);
+}
+
+std::string ExtensionItem::ToNetwork(const Extensible* container, void* item) const
+{
+ return std::string();
+}
+
+std::string ExtensionItem::serialize(SerializeFormat format, const Extensible* container, void* item) const
+{
+ // Wrap the deprecated API with the new API.
+ switch (format)
+ {
+ case FORMAT_USER:
+ return ToHuman(container, item);
+ case FORMAT_INTERNAL:
+ case FORMAT_PERSIST:
+ return ToInternal(container, item);
+ case FORMAT_NETWORK:
+ return ToNetwork(container, item);
+ }
return "";
}
-void LocalExtItem::unserialize(SerializeFormat format, Extensible* container, const std::string& value)
+
+void ExtensionItem::unserialize(SerializeFormat format, Extensible* container, const std::string& value)
+{
+ // Wrap the deprecated API with the new API.
+ switch (format)
+ {
+ case FORMAT_USER:
+ break;
+ case FORMAT_INTERNAL:
+ case FORMAT_PERSIST:
+ FromInternal(container, value);
+ break;
+ case FORMAT_NETWORK:
+ FromNetwork(container, value);
+ break;
+ }
+}
+
+LocalExtItem::LocalExtItem(const std::string& Key, ExtensibleType exttype, Module* mod)
+ : ExtensionItem(Key, exttype, mod)
+{
+}
+
+LocalExtItem::~LocalExtItem()
{
}
@@ -246,17 +302,14 @@ LocalStringExt::~LocalStringExt()
{
}
-std::string LocalStringExt::serialize(SerializeFormat format, const Extensible* container, void* item) const
+std::string LocalStringExt::ToInternal(const Extensible* container, void* item) const
{
- if ((item) && (format != FORMAT_NETWORK))
- return *static_cast<std::string*>(item);
- return "";
+ return item ? *static_cast<std::string*>(item) : std::string();
}
-void LocalStringExt::unserialize(SerializeFormat format, Extensible* container, const std::string& value)
+void LocalStringExt::FromInternal(Extensible* container, const std::string& value)
{
- if (format != FORMAT_NETWORK)
- set(container, value);
+ set(container, value);
}
LocalIntExt::LocalIntExt(const std::string& Key, ExtensibleType exttype, Module* mod)
@@ -268,17 +321,14 @@ LocalIntExt::~LocalIntExt()
{
}
-std::string LocalIntExt::serialize(SerializeFormat format, const Extensible* container, void* item) const
+std::string LocalIntExt::ToInternal(const Extensible* container, void* item) const
{
- if (format == FORMAT_NETWORK)
- return "";
return ConvToStr(reinterpret_cast<intptr_t>(item));
}
-void LocalIntExt::unserialize(SerializeFormat format, Extensible* container, const std::string& value)
+void LocalIntExt::FromInternal(Extensible* container, const std::string& value)
{
- if (format != FORMAT_NETWORK)
- set(container, ConvToNum<intptr_t>(value));
+ set(container, ConvToNum<intptr_t>(value));
}
intptr_t LocalIntExt::get(const Extensible* container) const
@@ -312,12 +362,12 @@ std::string* StringExtItem::get(const Extensible* container) const
return static_cast<std::string*>(get_raw(container));
}
-std::string StringExtItem::serialize(SerializeFormat format, const Extensible* container, void* item) const
+std::string StringExtItem::ToNetwork(const Extensible* container, void* item) const
{
- return item ? *static_cast<std::string*>(item) : "";
+ return item ? *static_cast<std::string*>(item) : std::string();
}
-void StringExtItem::unserialize(SerializeFormat format, Extensible* container, const std::string& value)
+void StringExtItem::FromNetwork(Extensible* container, const std::string& value)
{
if (value.empty())
unset(container);