Remove dynamic exceptions
[anna.git] / source / diameter / codec / EngineManager.cpp
index 68add2b..d45b069 100644 (file)
@@ -8,21 +8,36 @@
 
 // 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;
+}