1
2#ifndef _TPCBEXAMPLE_H_INCLUDE__
3#define	_TPCBEXAMPLE_H_INCLUDE__
4
5#include <windows.h>
6#include "db.h"
7
8#define	ACCOUNTS	    1000
9#define	BRANCHES	      10
10#define	TELLERS		     100
11#define	HISTORY		   10000
12#define	TRANSACTIONS	1000
13#define	TESTDIR		"TESTDIR"
14
15typedef enum { ACCOUNT, BRANCH, TELLER } FTYPE;
16
17extern "C" {
18void tpcb_errcallback(const DB_ENV *, const char *, const char *);
19}
20
21class TpcbExample
22{
23public:
24	int createEnv(int);
25	void closeEnv();
26	int populate();
27	int run(int);
28	int txn(DB *, DB *, DB *, DB *,	int, int, int);
29	int populateHistory(DB *, int, u_int32_t, u_int32_t, u_int32_t);
30	int populateTable(DB *, u_int32_t, u_int32_t, int, const char *);
31
32	TpcbExample();
33
34	char *getHomeDir(char *, int);
35	wchar_t *getHomeDirW(wchar_t *, int);
36	void setHomeDir(char *);
37	void setHomeDirW(wchar_t *);
38
39#define	ERR_STRING_MAX 1024
40	char msgString[ERR_STRING_MAX];
41	int accounts;
42	int branches;
43	int history;
44	int tellers;
45
46	// options configured through the advanced dialog.
47	int fast_mode;
48	int verbose;
49	int cachesize;
50	int rand_seed;
51private:
52	DB_ENV *dbenv;
53	char homeDirName[MAX_PATH];
54	wchar_t wHomeDirName[MAX_PATH];
55
56	u_int32_t randomId(FTYPE, u_int32_t, u_int32_t, u_int32_t);
57	u_int32_t randomInt(u_int32_t, u_int32_t);
58	// no need for copy and assignment
59	TpcbExample(const TpcbExample &);
60	void operator = (const TpcbExample &);
61};
62
63#endif
64