X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fdiameter.comm%2FOriginHostManager.cpp;h=d5482c1441d9ab66f565352b4a4b8b21c139c222;hb=refs%2Fheads%2Fmaster;hp=067444d83849ba7de1b13d0ba52072b8cb8883d3;hpb=a4a2ff4e20ddc4c6de7f2d3efd3acfb16c0d91c1;p=anna.git diff --git a/source/diameter.comm/OriginHostManager.cpp b/source/diameter.comm/OriginHostManager.cpp index 067444d..d5482c1 100644 --- a/source/diameter.comm/OriginHostManager.cpp +++ b/source/diameter.comm/OriginHostManager.cpp @@ -15,26 +15,25 @@ using namespace anna::diameter::comm; -OriginHost *OriginHostManager::getOriginHost(const std::string &name) const throw() { +OriginHost *OriginHostManager::getOriginHost(const std::string &name) const { origin_hosts_it it = a_origin_hosts.find(name); if (it != a_origin_hosts.end()) return it->second; - LOGWARNING( - std::string msg = "Unknown origin host node with name '"; msg += name; msg += "'"; - anna::Logger::warning(msg, ANNA_FILE_LOCATION); - ); - return NULL; } -void OriginHostManager::registerOriginHost(const std::string &name, OriginHost* originHost) throw() { +void OriginHostManager::registerOriginHost(const std::string &name, OriginHost* originHost) { if (!originHost) return; // nothing done 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 -throw() { +{ anna::xml::Node* result = parent->createChild("OriginHostManager"); origin_hosts_it it_min(a_origin_hosts.begin()); origin_hosts_it it_max(a_origin_hosts.end()); @@ -44,3 +43,25 @@ throw() { 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; +} +