inital commit
[c11concurrency-benchmarks.git] / mabain / examples / mb_iterator_test.cpp
1 /**
2  * Copyright (C) 2017 Cisco Inc.
3  *
4  * This program is free software: you can redistribute it and/or  modify
5  * it under the terms of the GNU General Public License, version 2,
6  * as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  */
16
17 // @author Changxue Deng <chadeng@cisco.com>
18
19 #include <mabain/db.h>
20
21 using namespace mabain;
22
23 #define ONE_MILLION 1000000
24
25 const char *db_dir = "/var/tmp/mabain_test";
26
27 // mabain db iterator
28 int main(int argc, char *argv[])
29 {
30     if(argc == 2) {
31         db_dir = argv[1];
32     }
33
34     DB db(db_dir, CONSTS::ReaderOptions());
35     if(!db.is_open()) {
36         std::cerr << "failed to open mabain db: " << db.StatusStr() << "\n";
37         exit(1);
38     }
39
40     std::string key, value;
41     int64_t count=0;
42     for(DB::iterator iter = db.begin(); iter != db.end(); ++iter) {
43         std::cout << iter.key << ": " << std::string((char*)iter.value.buff, iter.value.data_len) << "\n";
44         count++;
45         if(count % ONE_MILLION == 0) std::cout << "COUNT: " << count<< "\n";
46     }
47
48     db.Close();
49     return 0;
50 }