view audioDBws.h @ 199:72a037f2b1e4

Alter timesTable handling. Instead of inserting N boundary points per track, insert N (start,end) pairs. Since N boundaries define only N-1 intervals, we were losing information on insert -- this means that dump/restore cycles of existing times-enabled databases WILL NOT WORK. The input format for times files is still the same, albeit a little tighter: there must be exactly N+1 floats in the file. - make times table default length twice as big (done!) - ensure exactly n+1 times read in from timesFile (done!) - store (beginning, end) in times table (done!) - update file format version (done!) - ensure dump exactly n+1 times (done!) - adjust uses of timesTable to read at 2k and 2k+1 (done!) - timesdata[x] in sequence query is duration of sequence of appropriate length from point [x] (done!) - dbdurs calculation (done!) - don't decrement j when using times in sequence query (done!) - tests! (NOT DONE)
author mas01cr
date Fri, 23 Nov 2007 15:43:51 +0000
parents f9d16137e704
children d1b8b2dec37e
line wrap: on
line source
// audioDBws.h -- web services interface to audioDB
//
//FIXME: this hard-coding of the service location might be right for
//its internal use at Goldsmiths (for now) but really isn't in
//general.  Find a way to bind this later (at install time?  Or maybe
//just require that the installer edit the resulting wsdl file?)
//
//gsoap adb service location: http://gibbons.doc.gold.ac.uk:20703/

typedef int xsd__int;
typedef double xsd__double;
typedef char* xsd__string;

// Supports result lists of arbitrary length
struct adb__queryResult{
  int __sizeRlist;
  char **Rlist; // Maximum size of result list
  int __sizeDist;  
  double *Dist;
  int __sizeQpos;  
  unsigned int *Qpos;
  int __sizeSpos;
  unsigned int *Spos;
};

struct adb__statusResult {
  unsigned numFiles;
  unsigned dim;
  unsigned length;
  unsigned dudCount;
  unsigned nullCount;
  unsigned flags;
};

struct adb__statusResponse {
  struct adb__statusResult result;
};

struct adb__queryResponse {
  struct adb__queryResult result;
};

// Print the status of an existing adb database
int adb__status(xsd__string dbName, struct adb__statusResponse &adbStatusResponse);

// Query an existing adb database
int adb__query(xsd__string dbName, xsd__string qKey, xsd__string keyList, xsd__string timesFileName, xsd__int qType, xsd__int qPos, xsd__int pointNN, xsd__int segNN, xsd__int segLen, struct adb__queryResponse &adbQueryResponse);

struct adb__sequenceQueryParms {
  xsd__string keyList;
  xsd__string timesFileName;
  xsd__string powerFileName;
  xsd__int qPos;
  xsd__int pointNN;
  xsd__int segNN;
  xsd__int segLen;
  xsd__double relative_threshold;
  xsd__double absolute_threshold;
};

// Perform a sequence query
int adb__sequenceQuery(xsd__string dbName, xsd__string qKey, 
		       struct adb__sequenceQueryParms *parms, 
		       struct adb__queryResponse &adbQueryResponse);