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());
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;
+}
+