void _parseFieldList (const char *str, StringPool &props, StringPool &columns) { QS_DEF(Array<char>, prop); QS_DEF(Array<char>, column); BufferScanner scanner(str); props.clear(); columns.clear(); scanner.skipSpace(); while (!scanner.isEOF()) { scanner.readWord(prop, " ,"); scanner.skipSpace(); scanner.readWord(column, " ,"); scanner.skipSpace(); props.add(prop.ptr()); columns.add(column.ptr()); if (scanner.isEOF()) break; if (scanner.readChar() != ',') throw BingoError("_parseFieldList(): comma expected"); scanner.skipSpace(); } }
//deallocate resources after a request has been completed void cleanup() { server->performanceCounters.totalRequestsFinished++; thr.performanceCounters.totalRequestsFinished++; req.reset(); resp->reset(); thr._responsePool.put(resp); resp=nullptr; sp.clear(); }
void finalize() { thr.performanceCounters.totalRequestsFinished++; if(resp->closed) { destruct(); return; } req.reset(); resp->reset(); thr._responsePool.put(resp); resp=nullptr; sp.clear(); if(keepAlive) { req.init(s,&sp); if(req.readRequest({&handler::readCB,this})) readCB(true); } else { s.shutdown(SHUT_WR); buf=(uint8_t*)malloc(4096); s.repeatRead(buf,4096,{&handler::sockReadCB,this}); } }