diff options
| author | 2019-08-09 03:57:55 +0100 | |
|---|---|---|
| committer | 2019-08-09 04:07:33 +0100 | |
| commit | 7c7de81b6d513330984bb328de7599bb1328f989 (patch) | |
| tree | 1cd62b0d3419fcb93c488911f6ef8e5048f4bb99 /src/base.cpp | |
| parent | Merge branch 'insp3' into master. (diff) | |
| parent | Fix waitpong referring to registration timeouts as ping timeouts. (diff) | |
| download | inspircd++-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.cpp | 92 |
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); |
