Fix local server for multiple applications
[anna.git] / source / diameter.comm / OriginHostManager.cpp
index ff929bf..d5482c1 100644 (file)
@@ -28,6 +28,10 @@ void OriginHostManager::registerOriginHost(const std::string &name, OriginHost*
   a_origin_hosts[name] = originHost;
 }
 
+void OriginHostManager::registerRemoteOriginHost(const std::string &remoteName, const std::string &ownName) {
+  a_remote_to_own_origin_hosts[remoteName] = ownName;
+}
+
 anna::xml::Node* OriginHostManager::asXML(anna::xml::Node* parent) const
 {
   anna::xml::Node* result = parent->createChild("OriginHostManager");
@@ -39,3 +43,25 @@ anna::xml::Node* OriginHostManager::asXML(anna::xml::Node* parent) const
   return result;
 }
 
+
+OriginHost *OriginHostManager::getOriginHost(const anna::U32 &applicationId) const {
+
+  OriginHost *result{};
+
+  for (auto it: a_origin_hosts) {
+    result = it.second;
+    if (result->getApplicationId() == applicationId) return result;
+  }
+
+  return NULL;
+}
+
+OriginHost *OriginHostManager::getOriginHostForRemoteOriginHost(const std::string &name) const {
+   auto it = a_remote_to_own_origin_hosts.find(name);
+
+   if (it != a_remote_to_own_origin_hosts.end())
+     return getOriginHost(it->second);
+
+  return NULL;
+}
+