Added precedence to config file types:
authorPhilip Rauwolf <rauwolf@itestra.de>
Wed, 20 Feb 2013 09:57:56 +0000 (10:57 +0100)
committerPhilip Rauwolf <rauwolf@itestra.de>
Wed, 20 Feb 2013 09:57:56 +0000 (10:57 +0100)
highest: <BinaryFQN>_dbus.conf
lower:   /etc/CommonApiDBus/<BinaryName>_dbus.conf
lowest:  /etc/CommonApiDBus/dbusAddresses.conf

src/CommonAPI/DBus/DBusAddressTranslator.cpp
src/CommonAPI/DBus/DBusUtils.h

index dfd61b7..be1bd5e 100644 (file)
@@ -89,12 +89,23 @@ void DBusAddressTranslator::init() {
 
     if(addressConfigFile.is_open()) {
         readConfigFile(addressConfigFile);
-    } else {
-        addressConfigFile.clear();
-        addressConfigFile.open(DBUS_GLOBAL_CONFIG_FQN);
-        if(addressConfigFile.is_open()) {
-            readConfigFile(addressConfigFile);
-        }
+        addressConfigFile.close();
+    }
+
+    addressConfigFile.clear();
+    std::vector<std::string> splittedConfigFQN = split(fqnOfConfigFile, '/');
+    std::string globalConfigFQN = DBUS_GLOBAL_CONFIG_ROOT + splittedConfigFQN.at(splittedConfigFQN.size() - 1);
+    addressConfigFile.open(globalConfigFQN);
+    if(addressConfigFile.is_open()) {
+        readConfigFile(addressConfigFile);
+        addressConfigFile.close();
+    }
+
+    addressConfigFile.clear();
+    addressConfigFile.open(DBUS_GLOBAL_CONFIG_FQN);
+    if(addressConfigFile.is_open()) {
+        readConfigFile(addressConfigFile);
+        addressConfigFile.close();
     }
 }
 
@@ -134,8 +145,6 @@ void DBusAddressTranslator::readConfigFile(std::ifstream& addressConfigFile) {
         knownDBusAddresses.insert( {currentlyParsedCommonApiAddress, dbusServiceAddress});
         knownCommonAddresses.insert( {dbusServiceAddress, currentlyParsedCommonApiAddress});
     }
-
-    addressConfigFile.close();
 }
 
 
index 559484f..af0774d 100644 (file)
@@ -19,6 +19,7 @@ namespace DBus {
 
 static const char* DBUS_CONFIG_SUFFIX = "_dbus.conf";
 static const char* DBUS_GLOBAL_CONFIG_FQN = "/etc/CommonApiDBus/dbusAddresses.conf";
+static const char* DBUS_GLOBAL_CONFIG_ROOT = "/etc/CommonApiDBus/";
 
 inline std::vector<std::string>& split(const std::string& s, char delim, std::vector<std::string>& elems) {
     std::istringstream ss(s);