typedef void(*t_sql_callback)(ResultSet rs, void* cbdata);
bool addQuery(const dbi_char* sql, t_sql_callback cb, void* cbdata);
typedef Future< ResultSet > FutureResultSet;
FutureResultSet addQuery(const dbi_char* sql);
コールバック関数と Future で QueryWork を受け取っていた部分が、ResultSet を受け取るようになっている。これは sql を実行した際の結果である。
void Callback(ResultSet rs, void* cbdata) {
int32_t result;
rs->next();
rs->getInt32(1, &result);
printf("%d\n", result);
}
void callback_sample() {
QueryParallelizer para;
para.start(...);
para.addQuery("select * from tbl", NULL, &Callback, NULL);
}
void future_sample() {
QueryParallelizer para;
para.start(...);
FutureResultSet f = para.addQuery("select * from tbl", NULL);
ResultSet rs = f->get();
int32_t result;
rs->next();
rs->getInt32(1, &result);
printf("%d\n", result);
}