more TDB
This commit is contained in:
parent
5dca9744df
commit
b34752fb07
|
@ -16,23 +16,53 @@
|
||||||
#include "tdbInt.h"
|
#include "tdbInt.h"
|
||||||
|
|
||||||
struct STDbEnv {
|
struct STDbEnv {
|
||||||
TDB * dbList; // TDB list
|
pgsize_t pgSize; // Page size
|
||||||
SPgFile *pgFileList; // SPgFile list
|
cachesz_t cacheSize; // Total cache size
|
||||||
|
STDbList dbList; // TDB List
|
||||||
|
SPgFileList pgfList; // SPgFile List
|
||||||
|
SPgCache * pPgCache; // page cache
|
||||||
struct {
|
struct {
|
||||||
} pgfht; // page file hash table;
|
} pgfht; // page file hash table;
|
||||||
SPgCache pgc; // page cache
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int tdbEnvDestroy(TENV *pEnv);
|
static int tdbEnvDestroy(TENV *pEnv);
|
||||||
|
|
||||||
int tdbEnvCreate(TENV **ppEnv) {
|
int tdbEnvCreate(TENV **ppEnv) {
|
||||||
|
TENV *pEnv;
|
||||||
|
|
||||||
|
pEnv = (TENV *)calloc(1, sizeof(*pEnv));
|
||||||
|
if (pEnv == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pEnv->pgSize = TDB_DEFAULT_PGSIZE;
|
||||||
|
pEnv->cacheSize = TDB_DEFAULT_CACHE_SIZE;
|
||||||
|
|
||||||
|
TD_DLIST_INIT(&(pEnv->dbList));
|
||||||
|
TD_DLIST_INIT(&(pEnv->pgfList));
|
||||||
// TODO
|
// TODO
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbEnvOpen(TENV **ppEnv) {
|
int tdbEnvOpen(TENV **ppEnv) {
|
||||||
// TODO
|
TENV * pEnv;
|
||||||
|
SPgCache *pPgCache;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
// Create the ENV with default setting
|
||||||
|
if (ppEnv == NULL) {
|
||||||
|
TERR_A(ret, tdbEnvCreate(&pEnv), _err);
|
||||||
|
}
|
||||||
|
|
||||||
|
pEnv = *ppEnv;
|
||||||
|
|
||||||
|
TERR_A(ret, pgCacheCreate(&pPgCache, pEnv->pgSize, pEnv->cacheSize / pEnv->pgSize), _err);
|
||||||
|
pEnv->pPgCache = pPgCache;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
_err:
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbEnvClose(TENV *pEnv) {
|
int tdbEnvClose(TENV *pEnv) {
|
||||||
|
@ -47,7 +77,7 @@ SPgFile *tdbEnvGetPageFile(TENV *pEnv, const uint8_t fileid[]) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
SPgCache *tdbEnvGetPgCache(TENV *pEnv) { return &(pEnv->pgc); }
|
SPgCache *tdbEnvGetPgCache(TENV *pEnv) { return pEnv->pPgCache; }
|
||||||
|
|
||||||
static int tdbEnvDestroy(TENV *pEnv) {
|
static int tdbEnvDestroy(TENV *pEnv) {
|
||||||
// TODO
|
// TODO
|
||||||
|
|
|
@ -71,11 +71,29 @@ typedef int32_t pgsize_t;
|
||||||
#define TDB_IS_PGSIZE_VLD(s) (((s) >= TDB_MIN_PGSIZE) && ((s) <= TDB_MAX_PGSIZE))
|
#define TDB_IS_PGSIZE_VLD(s) (((s) >= TDB_MIN_PGSIZE) && ((s) <= TDB_MAX_PGSIZE))
|
||||||
|
|
||||||
// cache
|
// cache
|
||||||
|
typedef int32_t cachesz_t;
|
||||||
#define TDB_DEFAULT_CACHE_SIZE (256 * 1024) // 256K
|
#define TDB_DEFAULT_CACHE_SIZE (256 * 1024) // 256K
|
||||||
|
|
||||||
// tdb_log
|
// tdb_log
|
||||||
#define tdbError(var)
|
#define tdbError(var)
|
||||||
|
|
||||||
|
typedef TD_DLIST(STDb) STDbList;
|
||||||
|
typedef TD_DLIST(SPgFile) SPgFileList;
|
||||||
|
|
||||||
|
#define TERR_A(val, op, flag) \
|
||||||
|
do { \
|
||||||
|
if (((val) = (op)) != 0) { \
|
||||||
|
goto flag; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
#define TERR_B(val, op, flag) \
|
||||||
|
do { \
|
||||||
|
if (((val) = (op)) == NULL) { \
|
||||||
|
goto flag; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#include "btree.h"
|
#include "btree.h"
|
||||||
#include "pgcache.h"
|
#include "pgcache.h"
|
||||||
#include "pgfile.h"
|
#include "pgfile.h"
|
||||||
|
|
Loading…
Reference in New Issue