File: cdb.hh

package info (click to toggle)
pdns 3.4.1-4
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 9,084 kB
  • sloc: cpp: 56,420; ansic: 37,838; sh: 12,762; sql: 1,081; makefile: 734; ruby: 560; yacc: 222; lex: 120; perl: 52; python: 15
file content (34 lines) | stat: -rw-r--r-- 738 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#ifndef CDB_HH
#define CDB_HH

#include <pdns/logger.hh>
#include <cdb.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

// This class is responsible for the reading of a CDB file.
// The constructor opens the CDB file, the destructor closes it, so make sure you call that.
class CDB
{
public:
	CDB(const string &cdbfile);
	~CDB();

	int searchKey(const string &key);
	bool searchSuffix(const string &key);
	void searchAll();
	bool readNext(pair<string, string> &value);
	vector<string> findall(string &key);

private:
	int d_fd;
	bool moveToNext();
	struct cdb d_cdb;
	struct cdb_find d_cdbf;
	char *d_key;
	unsigned d_seqPtr;
	enum SearchType { SearchSuffix, SearchKey, SearchAll } d_searchType;
};

#endif // CDB_HH