Swarm-NG  1.1
bdb_query.cpp
1 #include "bdb_query.hpp"
2 #include "log/bdb_database.hpp"
3 
4 namespace swarm { namespace query {
5 
6 using namespace log;
7 
8 gpulog::logrecord allocateLogrecord(const int len){
9  char* data = new char[len];
11 
12  hdr->len = len;
13  gpulog::logrecord lr(data);
14  return lr;
15 }
16 
17 void execute_bdb_query(const std::string &dbfile, time_range_t T, sys_range_t sys, body_range_t bod) {
18  DbEnv* env(bdb_database::createDefaultEnv());bdb_database db(env);
19  db.openForReading(dbfile);
20 
21  Pprimary_cursor_t cur = db.primary_cursor();
22 
23  pkey_t key(T.first,0,0);
24  lrw_t lrw(20480);
25 
26  bool has_record = cur->position_at(key,lrw);
27  while(has_record && key.time <= T.last){
28  //std::cerr << key.time << " % " << key.system_id() << " % " << (int)key.event_id() << std::endl;
29 
30  gpulog::logrecord lr = lrw.lr();
31  output_record(std::cout, lr, bod); std::cout << std::endl;
32 
33  has_record = cur->next(key,lrw);
34  }
35 
36  cur->close();
37 
38  db.close();
39  env->close(0);
40 }
41 
42 } } // namespace swarm query