Mercurial > hg > audiodb
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++) {