changeset 322:634959ef98f2 large_adb

Added --adb_root and --adb_feature_root support to server-side Web Services instance. Client does not have to know location of database and features on the server when server performs path substitutions with these arguments.
author mas01mc
date Thu, 21 Aug 2008 19:58:55 +0000
parents da2272e029b3
children 64c844de82d0
files audioDB.cpp audioDB.h soap.cpp
diffstat 3 files changed, 26 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/audioDB.cpp	Thu Aug 21 19:16:21 2008 +0000
+++ b/audioDB.cpp	Thu Aug 21 19:58:55 2008 +0000
@@ -1,6 +1,8 @@
 #include "audioDB.h"
 
 LSH* SERVER_LSH_INDEX_SINGLETON;
+char* SERVER_ADB_ROOT;
+char* SERVER_ADB_FEATURE_ROOT;
 
 PointPair::PointPair(Uns32T a, Uns32T b, Uns32T c):trackID(a),qpos(b),spos(c){};
 
@@ -34,7 +36,7 @@
     error("No command found");
   }
 
-  // perform dbName path prefix subbsitution
+  // Perform database prefix substitution
   if(adb_root)
     prefix_name((char** const)&dbName, adb_root);
 
@@ -90,6 +92,9 @@
   try {
     isServer = 1; // FIXME: Hack
     processArgs(argc, argv);
+    // Perform database prefix substitution
+    if(adb_root)
+      prefix_name((char** const)&dbName, adb_root);
     assert(O2_ACTION(COM_QUERY));
     query(dbName, inFile, adbQueryResponse);
   } catch(char *err) {
@@ -103,6 +108,9 @@
   try {
     isServer = 1; // FIXME: Hack
     processArgs(argc, argv);
+    // Perform database prefix substitution
+    if(adb_root)
+      prefix_name((char** const)&dbName, adb_root);
     assert(O2_ACTION(COM_STATUS));
     status(dbName, adbStatusResponse);
   } catch(char *err) {
@@ -254,7 +262,13 @@
   if (args_info.adb_feature_root_given){
     adb_feature_root = args_info.adb_feature_root_arg;
   }
-    
+
+  // perform dbName path prefix SERVER-side subsitution
+  if(SERVER_ADB_ROOT && !adb_root)
+    adb_root = SERVER_ADB_ROOT;
+  if(SERVER_ADB_FEATURE_ROOT && !adb_feature_root)
+    adb_feature_root = SERVER_ADB_FEATURE_ROOT;
+  
   if(args_info.SERVER_given){
     command=COM_SERVER;
     port=args_info.SERVER_arg;
@@ -650,5 +664,7 @@
 // so it is a good place to set any global state variables
 int main(const unsigned argc, char* const argv[]){
   SERVER_LSH_INDEX_SINGLETON = 0; // Initialize global variables
+  SERVER_ADB_ROOT = 0;            // Server-side database root prefix
+  SERVER_ADB_FEATURE_ROOT = 0;    // Server-side features root prefix
   audioDB(argc, argv);
 }
--- a/audioDB.h	Thu Aug 21 19:16:21 2008 +0000
+++ b/audioDB.h	Thu Aug 21 19:58:55 2008 +0000
@@ -163,6 +163,8 @@
 #define SAFE_DELETE_ARRAY(PTR) delete[] PTR; PTR=0;
 
 extern LSH* SERVER_LSH_INDEX_SINGLETON;
+extern char* SERVER_ADB_ROOT;
+extern char* SERVER_ADB_FEATURE_ROOT;
 
 typedef struct dbTableHeader {
   uint32_t magic;
--- a/soap.cpp	Thu Aug 21 19:16:21 2008 +0000
+++ b/soap.cpp	Thu Aug 21 19:58:55 2008 +0000
@@ -285,6 +285,12 @@
 	fflush(stderr);
 	delete[] indexName;
       }
+      
+      // Server-side path prefix to databases and features
+      if(adb_root)
+	SERVER_ADB_ROOT = (char*)adb_root; // Server-side database root
+      if(adb_feature_root)
+	SERVER_ADB_FEATURE_ROOT = (char*)adb_feature_root; // Server-side features root
 
       for (int i = 1; ; i++)
 	{