annotate liszt.cpp @ 498:342822c2d49a
Merge api-inversion branch (-r656:771, but I don't expect to return to
that branch) into the trunk.
I expect there to be minor performance regressions (e.g. in the SOAP
server index cacheing, which I have forcibly removed) and minor
unplugged memory leaks (e.g. in audioDB::query(), where I don't free up
the datum). I hope that these leaks and performance regressions can be
plugged in short order. I also expect that some (but maybe not all) of
the issues currently addressed in the memory-leaks branch are superseded
or fixed by this merge.
There remains much work to be done; go forth and do it.
author |
mas01cr |
date |
Sat, 10 Jan 2009 16:47:57 +0000 |
parents |
|
children |
e18843dc0aea |
rev |
line source |
mas01cr@498
|
1 #include "audioDB.h"
|
mas01cr@498
|
2
|
mas01cr@498
|
3 void audioDB::liszt(const char* dbName, unsigned offset, unsigned numLines, adb__lisztResponse* adbLisztResponse){
|
mas01cr@498
|
4 if(!dbH) {
|
mas01cr@498
|
5 initTables(dbName, 0);
|
mas01cr@498
|
6 }
|
mas01cr@498
|
7
|
mas01cr@498
|
8 assert(trackTable && fileTable);
|
mas01cr@498
|
9
|
mas01cr@498
|
10 if(offset>dbH->numFiles){
|
mas01cr@498
|
11 char tmpStr[MAXSTR];
|
mas01cr@498
|
12 sprintf(tmpStr, "numFiles=%u, lisztOffset=%u", dbH->numFiles, offset);
|
mas01cr@498
|
13 error("listKeys offset out of range", tmpStr);
|
mas01cr@498
|
14 }
|
mas01cr@498
|
15
|
mas01cr@498
|
16 if(!adbLisztResponse){
|
mas01cr@498
|
17 for(Uns32T k=0; k<numLines && offset+k<dbH->numFiles; k++){
|
mas01cr@498
|
18 fprintf(stdout, "[%d] %s (%d)\n", offset+k, fileTable+(offset+k)*O2_FILETABLE_ENTRY_SIZE, trackTable[offset+k]);
|
mas01cr@498
|
19 }
|
mas01cr@498
|
20 }
|
mas01cr@498
|
21 else{
|
mas01cr@498
|
22 adbLisztResponse->result.Rkey = new char*[numLines];
|
mas01cr@498
|
23 adbLisztResponse->result.Rlen = new unsigned int[numLines];
|
mas01cr@498
|
24 Uns32T k = 0;
|
mas01cr@498
|
25 for( ; k<numLines && offset+k<dbH->numFiles; k++){
|
mas01cr@498
|
26 adbLisztResponse->result.Rkey[k] = new char[MAXSTR];
|
mas01cr@498
|
27 snprintf(adbLisztResponse->result.Rkey[k], O2_MAXFILESTR, "%s", fileTable+(offset+k)*O2_FILETABLE_ENTRY_SIZE);
|
mas01cr@498
|
28 adbLisztResponse->result.Rlen[k] = trackTable[offset+k];
|
mas01cr@498
|
29 }
|
mas01cr@498
|
30 adbLisztResponse->result.__sizeRkey = k;
|
mas01cr@498
|
31 adbLisztResponse->result.__sizeRlen = k;
|
mas01cr@498
|
32 }
|
mas01cr@498
|
33
|
mas01cr@498
|
34 }
|