refact
This commit is contained in:
parent
628c989ee9
commit
072a30bd39
|
@ -19,7 +19,7 @@ struct SBTree {
|
||||||
SPgno root;
|
SPgno root;
|
||||||
int keyLen;
|
int keyLen;
|
||||||
int valLen;
|
int valLen;
|
||||||
SPFile * pFile;
|
SPager * pFile;
|
||||||
FKeyComparator kcmpr;
|
FKeyComparator kcmpr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ static int tdbInitBtPage(SPage *pPage, SBtPage **ppBtPage);
|
||||||
static int tdbCompareKeyAndCell(const void *pKey, int kLen, const void *pCell);
|
static int tdbCompareKeyAndCell(const void *pKey, int kLen, const void *pCell);
|
||||||
static int tdbDefaultKeyCmprFn(const void *pKey1, int keyLen1, const void *pKey2, int keyLen2);
|
static int tdbDefaultKeyCmprFn(const void *pKey1, int keyLen1, const void *pKey2, int keyLen2);
|
||||||
|
|
||||||
int tdbBtreeOpen(SPgno rtPgno, int keyLen, int valLen, SPFile *pFile, FKeyComparator kcmpr, SBTree **ppBt) {
|
int tdbBtreeOpen(SPgno rtPgno, int keyLen, int valLen, SPager *pFile, FKeyComparator kcmpr, SBTree **ppBt) {
|
||||||
SBTree *pBt;
|
SBTree *pBt;
|
||||||
|
|
||||||
*ppBt = NULL;
|
*ppBt = NULL;
|
||||||
|
@ -93,7 +93,7 @@ int tdbBtreeCursor(SBtCursor *pCur, SBTree *pBt) {
|
||||||
|
|
||||||
int tdbBtCursorInsert(SBtCursor *pCur, const void *pKey, int kLen, const void *pVal, int vLen) {
|
int tdbBtCursorInsert(SBtCursor *pCur, const void *pKey, int kLen, const void *pVal, int vLen) {
|
||||||
int ret;
|
int ret;
|
||||||
SPFile * pFile;
|
SPager * pFile;
|
||||||
SBtPage *pPage;
|
SBtPage *pPage;
|
||||||
|
|
||||||
ret = tdbBtCursorMoveTo(pCur, pKey, kLen);
|
ret = tdbBtCursorMoveTo(pCur, pKey, kLen);
|
||||||
|
@ -199,7 +199,7 @@ static int tdbEncodeLength(u8 *pBuf, uint len) {
|
||||||
|
|
||||||
static int tdbBtCursorMoveToRoot(SBtCursor *pCur) {
|
static int tdbBtCursorMoveToRoot(SBtCursor *pCur) {
|
||||||
SBTree * pBt;
|
SBTree * pBt;
|
||||||
SPFile * pFile;
|
SPager * pFile;
|
||||||
SPage * pPage;
|
SPage * pPage;
|
||||||
SBtPage *pBtPage;
|
SBtPage *pBtPage;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -207,7 +207,7 @@ static int tdbBtCursorMoveToRoot(SBtCursor *pCur) {
|
||||||
pBt = pCur->pBt;
|
pBt = pCur->pBt;
|
||||||
pFile = pBt->pFile;
|
pFile = pBt->pFile;
|
||||||
|
|
||||||
pPage = tdbPFileGet(pFile, pBt->root);
|
pPage = tdbPagerGet(pFile, pBt->root);
|
||||||
if (pPage == NULL) {
|
if (pPage == NULL) {
|
||||||
// TODO: handle error
|
// TODO: handle error
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ struct STDb {
|
||||||
|
|
||||||
int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprFn, STEnv *pEnv, STDb **ppDb) {
|
int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprFn, STEnv *pEnv, STDb **ppDb) {
|
||||||
STDb * pDb;
|
STDb * pDb;
|
||||||
SPFile *pFile;
|
SPager *pFile;
|
||||||
int ret;
|
int ret;
|
||||||
char fFullName[TDB_FILENAME_LEN];
|
char fFullName[TDB_FILENAME_LEN];
|
||||||
SPage * pPage;
|
SPage * pPage;
|
||||||
|
@ -41,7 +41,7 @@ int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprF
|
||||||
pFile = tdbEnvGetPFile(pEnv, fname);
|
pFile = tdbEnvGetPFile(pEnv, fname);
|
||||||
if (pFile == NULL) {
|
if (pFile == NULL) {
|
||||||
snprintf(fFullName, TDB_FILENAME_LEN, "%s/%s", pEnv->rootDir, fname);
|
snprintf(fFullName, TDB_FILENAME_LEN, "%s/%s", pEnv->rootDir, fname);
|
||||||
ret = tdbPFileOpen(pEnv->pCache, fFullName, &pFile);
|
ret = tdbPagerOpen(pEnv->pCache, fFullName, &pFile);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ int tdbDbOpen(const char *fname, int keyLen, int valLen, FKeyComparator keyCmprF
|
||||||
|
|
||||||
ASSERT(pFile != NULL);
|
ASSERT(pFile != NULL);
|
||||||
|
|
||||||
ret = tdbPFileOpenDB(pFile, &pgno, true);
|
ret = tdbPagerOpenDB(pFile, &pgno, true);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@ int tdbEnvClose(STEnv *pEnv) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
SPFile *tdbEnvGetPFile(STEnv *pEnv, const char *fname) {
|
SPager *tdbEnvGetPFile(STEnv *pEnv, const char *fname) {
|
||||||
// TODO
|
// TODO
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
#include "tdbInt.h"
|
#include "tdbInt.h"
|
||||||
|
|
||||||
struct SPFile {
|
struct SPager {
|
||||||
char * dbFileName;
|
char * dbFileName;
|
||||||
char * jFileName;
|
char * jFileName;
|
||||||
int pageSize;
|
int pageSize;
|
||||||
|
@ -41,11 +41,11 @@ typedef struct __attribute__((__packed__)) {
|
||||||
|
|
||||||
TDB_STATIC_ASSERT(sizeof(SFileHdr) == 128, "Size of file header is not correct");
|
TDB_STATIC_ASSERT(sizeof(SFileHdr) == 128, "Size of file header is not correct");
|
||||||
|
|
||||||
static int tdbPFileReadPage(SPFile *pFile, SPage *pPage);
|
static int tdbPagerReadPage(SPager *pFile, SPage *pPage);
|
||||||
|
|
||||||
int tdbPFileOpen(SPCache *pCache, const char *fileName, SPFile **ppFile) {
|
int tdbPagerOpen(SPCache *pCache, const char *fileName, SPager **ppFile) {
|
||||||
uint8_t *pPtr;
|
uint8_t *pPtr;
|
||||||
SPFile * pFile;
|
SPager * pFile;
|
||||||
int fsize;
|
int fsize;
|
||||||
int zsize;
|
int zsize;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -53,7 +53,7 @@ int tdbPFileOpen(SPCache *pCache, const char *fileName, SPFile **ppFile) {
|
||||||
*ppFile = NULL;
|
*ppFile = NULL;
|
||||||
|
|
||||||
fsize = strlen(fileName);
|
fsize = strlen(fileName);
|
||||||
zsize = sizeof(*pFile) /* SPFile */
|
zsize = sizeof(*pFile) /* SPager */
|
||||||
+ fsize + 1 /* dbFileName */
|
+ fsize + 1 /* dbFileName */
|
||||||
+ fsize + 8 + 1; /* jFileName */
|
+ fsize + 8 + 1; /* jFileName */
|
||||||
pPtr = (uint8_t *)calloc(1, zsize);
|
pPtr = (uint8_t *)calloc(1, zsize);
|
||||||
|
@ -61,7 +61,7 @@ int tdbPFileOpen(SPCache *pCache, const char *fileName, SPFile **ppFile) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pFile = (SPFile *)pPtr;
|
pFile = (SPager *)pPtr;
|
||||||
pPtr += sizeof(*pFile);
|
pPtr += sizeof(*pFile);
|
||||||
// pFile->dbFileName
|
// pFile->dbFileName
|
||||||
pFile->dbFileName = (char *)pPtr;
|
pFile->dbFileName = (char *)pPtr;
|
||||||
|
@ -92,12 +92,12 @@ int tdbPFileOpen(SPCache *pCache, const char *fileName, SPFile **ppFile) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbPFileClose(SPFile *pFile) {
|
int tdbPagerClose(SPager *pFile) {
|
||||||
// TODO
|
// TODO
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbPFileOpenDB(SPFile *pFile, SPgno *ppgno, bool toCreate) {
|
int tdbPagerOpenDB(SPager *pFile, SPgno *ppgno, bool toCreate) {
|
||||||
SPgno pgno;
|
SPgno pgno;
|
||||||
SPage *pPage;
|
SPage *pPage;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -108,13 +108,13 @@ int tdbPFileOpenDB(SPFile *pFile, SPgno *ppgno, bool toCreate) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pgno == 0 && toCreate) {
|
if (pgno == 0 && toCreate) {
|
||||||
ret = tdbPFileAllocPage(pFile, &pPage, &pgno);
|
ret = tdbPagerAllocPage(pFile, &pPage, &pgno);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// tdbPFileZeroPage(pPage);
|
// tdbPFileZeroPage(pPage);
|
||||||
ret = tdbPFileWrite(pFile, pPage);
|
ret = tdbPagerWrite(pFile, pPage);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@ int tdbPFileOpenDB(SPFile *pFile, SPgno *ppgno, bool toCreate) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
SPage *tdbPFileGet(SPFile *pFile, SPgno pgno) {
|
SPage *tdbPagerGet(SPager *pFile, SPgno pgno) {
|
||||||
SPgid pgid;
|
SPgid pgid;
|
||||||
SPage *pPage;
|
SPage *pPage;
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ SPage *tdbPFileGet(SPFile *pFile, SPgno pgno) {
|
||||||
if (pgno > pFile->dbFileSize /*TODO*/) {
|
if (pgno > pFile->dbFileSize /*TODO*/) {
|
||||||
memset(pPage->pData, 0, pFile->pageSize);
|
memset(pPage->pData, 0, pFile->pageSize);
|
||||||
} else {
|
} else {
|
||||||
if (tdbPFileReadPage(pFile, pPage) < 0) {
|
if (tdbPagerReadPage(pFile, pPage) < 0) {
|
||||||
// TODO: handle error
|
// TODO: handle error
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -156,11 +156,11 @@ SPage *tdbPFileGet(SPFile *pFile, SPgno pgno) {
|
||||||
return pPage;
|
return pPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbPFileWrite(SPFile *pFile, SPage *pPage) {
|
int tdbPagerWrite(SPager *pFile, SPage *pPage) {
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (pFile->inTran == 0) {
|
if (pFile->inTran == 0) {
|
||||||
ret = tdbPFileBegin(pFile);
|
ret = tdbPagerBegin(pFile);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -177,13 +177,13 @@ int tdbPFileWrite(SPFile *pFile, SPage *pPage) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbPFileAllocPage(SPFile *pFile, SPage **ppPage, SPgno *ppgno) {
|
int tdbPagerAllocPage(SPager *pFile, SPage **ppPage, SPgno *ppgno) {
|
||||||
SPage *pPage;
|
SPage *pPage;
|
||||||
SPgno pgno;
|
SPgno pgno;
|
||||||
|
|
||||||
if (1 /*TODO: no free page*/) {
|
if (1 /*TODO: no free page*/) {
|
||||||
pgno = ++pFile->dbFileSize;
|
pgno = ++pFile->dbFileSize;
|
||||||
pPage = tdbPFileGet(pFile, pgno);
|
pPage = tdbPagerGet(pFile, pgno);
|
||||||
ASSERT(pPage != NULL);
|
ASSERT(pPage != NULL);
|
||||||
} else {
|
} else {
|
||||||
/* TODO: allocate from the free list */
|
/* TODO: allocate from the free list */
|
||||||
|
@ -195,7 +195,7 @@ int tdbPFileAllocPage(SPFile *pFile, SPage **ppPage, SPgno *ppgno) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbPFileBegin(SPFile *pFile) {
|
int tdbPagerBegin(SPager *pFile) {
|
||||||
if (pFile->inTran) {
|
if (pFile->inTran) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -213,17 +213,12 @@ int tdbPFileBegin(SPFile *pFile) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbPFileCommit(SPFile *pFile) {
|
int tdbPagerCommit(SPager *pFile) {
|
||||||
// TODO
|
// TODO
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbPFileRollback(SPFile *pFile) {
|
static int tdbPagerReadPage(SPager *pFile, SPage *pPage) {
|
||||||
// TODO
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int tdbPFileReadPage(SPFile *pFile, SPage *pPage) {
|
|
||||||
i64 offset;
|
i64 offset;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ struct SBtCursor {
|
||||||
void * pBuf;
|
void * pBuf;
|
||||||
};
|
};
|
||||||
|
|
||||||
int tdbBtreeOpen(SPgno rtPgno, int keyLen, int valLen, SPFile *pFile, FKeyComparator kcmpr, SBTree **ppBt);
|
int tdbBtreeOpen(SPgno rtPgno, int keyLen, int valLen, SPager *pFile, FKeyComparator kcmpr, SBTree **ppBt);
|
||||||
int tdbBtreeClose(SBTree *pBt);
|
int tdbBtreeClose(SBTree *pBt);
|
||||||
int tdbBtreeCursor(SBtCursor *pCur, SBTree *pBt);
|
int tdbBtreeCursor(SBtCursor *pCur, SBTree *pBt);
|
||||||
int tdbBtCursorInsert(SBtCursor *pCur, const void *pKey, int kLen, const void *pVal, int vLen);
|
int tdbBtCursorInsert(SBtCursor *pCur, const void *pKey, int kLen, const void *pVal, int vLen);
|
||||||
|
|
|
@ -30,7 +30,7 @@ typedef struct STEnv {
|
||||||
int tdbEnvOpen(const char *rootDir, int pageSize, int cacheSize, STEnv **ppEnv);
|
int tdbEnvOpen(const char *rootDir, int pageSize, int cacheSize, STEnv **ppEnv);
|
||||||
int tdbEnvClose(STEnv *pEnv);
|
int tdbEnvClose(STEnv *pEnv);
|
||||||
|
|
||||||
SPFile *tdbEnvGetPFile(STEnv *pEnv, const char *fname);
|
SPager *tdbEnvGetPFile(STEnv *pEnv, const char *fname);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,17 +20,16 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef struct SPFile SPFile;
|
typedef struct SPager SPager;
|
||||||
|
|
||||||
int tdbPFileOpen(SPCache *pCache, const char *fileName, SPFile **ppFile);
|
int tdbPagerOpen(SPCache *pCache, const char *fileName, SPager **ppFile);
|
||||||
int tdbPFileClose(SPFile *pFile);
|
int tdbPagerClose(SPager *pFile);
|
||||||
int tdbPFileOpenDB(SPFile *pFile, SPgno *ppgno, bool toCreate);
|
int tdbPagerOpenDB(SPager *pFile, SPgno *ppgno, bool toCreate);
|
||||||
SPage *tdbPFileGet(SPFile *pFile, SPgno pgno);
|
SPage *tdbPagerGet(SPager *pFile, SPgno pgno);
|
||||||
int tdbPFileWrite(SPFile *pFile, SPage *pPage);
|
int tdbPagerWrite(SPager *pFile, SPage *pPage);
|
||||||
int tdbPFileAllocPage(SPFile *pFile, SPage **ppPage, SPgno *ppgno);
|
int tdbPagerAllocPage(SPager *pFile, SPage **ppPage, SPgno *ppgno);
|
||||||
int tdbPFileBegin(SPFile *pFile);
|
int tdbPagerBegin(SPager *pFile);
|
||||||
int tdbPFileCommit(SPFile *pFile);
|
int tdbPagerCommit(SPager *pFile);
|
||||||
int tdbPFileRollback(SPFile *pFile);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue