# HG changeset patch # User mas01mc # Date 1225987677 0 # Node ID af3bc78e0f77dcaac19f40eaee85a23d0062b8b6 # Parent 8ff9d4d83222c7acd9e72f04f60c19007a80ff8a completed serialized shingle query, with some initial testing using QueryADB.py -v diff -r 8ff9d4d83222 -r af3bc78e0f77 QueryADB.py --- a/QueryADB.py Thu Nov 06 08:54:40 2008 +0000 +++ b/QueryADB.py Thu Nov 06 16:07:57 2008 +0000 @@ -96,7 +96,8 @@ %s - %s + %s + %s 32 %s @@ -163,13 +164,14 @@ def RunShingleQuery(): global debug, dbName queryVector='1.00.50.25' + featureDim = '3' pointNN = '10' trackNN = '5' queryRadius = '0.5' absoluteThreshold = '-4.5' lshExact = '0' message = SHINGLE_QUERY_TEMPLATE - message = SHINGLE_QUERY_TEMPLATE%(dbName, queryVector, pointNN, trackNN, queryRadius, absoluteThreshold, lshExact); + message = SHINGLE_QUERY_TEMPLATE%(dbName, queryVector, featureDim, pointNN, trackNN, queryRadius, absoluteThreshold, lshExact); # print message print message response = SendXMLCommand(message) diff -r 8ff9d4d83222 -r af3bc78e0f77 soap.cpp --- a/soap.cpp Thu Nov 06 08:54:40 2008 +0000 +++ b/soap.cpp Thu Nov 06 16:07:57 2008 +0000 @@ -364,83 +364,41 @@ cout << "qvector[" << qVector.dim << " x " << qVector.__sizeQvector/qVector.dim << "]: "; for(int k=0; k < qVector.__sizeQvector ; k++) cout << qVector.Qvector[k] << " "; + cout << endl; cout.flush(); // open a tmp file on the server, write shingle, query as a file with query point 0 // and shingle length l/dim - char tmpFileName[] = "adbXXXXXX"; - int fid = mkstemp(tmpFileName); - if(fid==-1){ - cerr << "Cannot open tmpfile on server"; - return SOAP_FAULT; - } - - FILE* tmpFile = fdopen(fid, "r+b"); - - if(fwrite(&qVector.dim, 1, sizeof(int), tmpFile)!=1){ - cerr << "error writing tmp file dim"; + char tmpFileName[] = "/tmp/adb_XXXXXX"; + int tmpFid = mkstemp(tmpFileName); + if(tmpFid==-1){ + cerr << "Cannot make tmpfile <" << tmpFileName << "> on server" << endl; return SOAP_FAULT; } - if(fwrite(qVector.Qvector, qVector.__sizeQvector,sizeof(double), tmpFile)!=(size_t)qVector.__sizeQvector){ - cerr << "error writing tmp file doubles"; + FILE* tmpFile = fdopen(tmpFid, "wb"); + if(!tmpFile){ + cerr << "error opening <" << tmpFileName << "> for write" << endl; + return SOAP_FAULT; + } + + if(fwrite(&qVector.dim, sizeof(int), 1, tmpFile)!=1){ + cerr << "error writing tmp file dim <"<< tmpFileName << ">" << endl; + return SOAP_FAULT; + } + + if(fwrite(qVector.Qvector, sizeof(double), qVector.__sizeQvector, tmpFile)!=(size_t)qVector.__sizeQvector){ + cerr << "error writing tmp file doubles <" << tmpFileName << ">" << endl; return SOAP_FAULT; } - // Call adb query with tmpQueryFile name as a the query file parameter - char qtypeStr[256]; - - fprintf(stderr, "Calling %s query on database %s with %s=%s\n", "FILENAME", dbName, "FILENAME",tmpFileName); - // fix up sequenceLength if it isn't provided, we know what the caller wants by the size of the shingle // and the feature dimensionality if(!sequenceLength) sequenceLength = qVector.__sizeQvector/qVector.dim; - - INTSTRINGIFY(0, qPosStr); // query position is 0 - INTSTRINGIFY(pointNN, pointNNStr); - INTSTRINGIFY(trackNN, trackNNStr); - INTSTRINGIFY(sequenceLength, seqLenStr); - DOUBLESTRINGIFY(absolute_threshold, absolute_thresholdStr); - DOUBLESTRINGIFY(radius, radiusStr); - - snprintf(qtypeStr, 256, "nsequence"); - const char *argv[]={ - "./audioDB", - COM_QUERY, - qtypeStr, - COM_DATABASE, - dbName, - COM_FEATURES, - ENSURE_STRING(tmpFileName), - COM_KEYLIST, - ENSURE_STRING(""), - COM_QPOINT, - qPosStr, - COM_POINTNN, - pointNNStr, - COM_TRACKNN, - trackNNStr, - COM_RADIUS, - radiusStr, - COM_SEQLEN, - seqLenStr, - COM_ABSOLUTE_THRESH, - absolute_thresholdStr, - lsh_exact?COM_LSH_EXACT:"" - }; - - const unsigned argc = 22; - - try { - audioDB(argc, (char* const*)argv, &adbQueryResponse); - fclose(tmpFile); - return SOAP_OK; - } catch (char *err) { - soap_receiver_fault(soap, err, ""); - fclose(tmpFile); - return SOAP_FAULT; - } + int retVal = adb__sequenceQueryByKey(soap, dbName, "", tmpFileName, queryType,"","",0,pointNN,trackNN,sequenceLength,radius,absolute_threshold,1,lsh_exact,adbQueryResponse); + fclose(tmpFile); + return retVal; } /* Server loop */