// Project
#include <anna/diameter/codec/EngineManager.hpp>
+#include <anna/diameter/codec/Engine.hpp>
#include <anna/diameter/stack/Engine.hpp>
#include <anna/diameter/stack/Dictionary.hpp>
#include <anna/core/tracing/Logger.hpp>
+#include <anna/xml/Node.hpp>
+
using namespace anna::diameter::codec;
-Engine *EngineManager::getCodecEngine(const ApplicationId &appid) const throw() {
+Engine *EngineManager::getCodecEngine(const ApplicationId &appid) const {
appid_codec_engines_it it = a_appid_codec_engines.find(appid);
if (it != a_appid_codec_engines.end())
return it->second;
- return NULL;
+ // Just in case:
+ return getMonoStackCodecEngine();
}
-void EngineManager::registerCodecEngine(const ApplicationId &appid, Engine* engine) throw() {
+void EngineManager::registerCodecEngine(const ApplicationId &appid, Engine* engine) {
if (!engine) return; // nothing done
a_appid_codec_engines[appid] = engine;
}
+
+anna::xml::Node* EngineManager::asXML(anna::xml::Node* parent) const
+{
+ anna::xml::Node* result = parent->createChild("EngineManager");
+ appid_codec_engines_it it_min(a_appid_codec_engines.begin());
+ appid_codec_engines_it it_max(a_appid_codec_engines.end());
+ for (appid_codec_engines_it it = it_min; it != it_max; it++)
+ it->second->asXML(result);
+
+ return result;
+}