more
This commit is contained in:
parent
e078dd69e9
commit
2394e0e0ff
|
@ -104,6 +104,7 @@ int tdbMPoolFileOpen(TDB_MPFILE **mpfp, const char *fname, TDB_MPOOL *mp) {
|
||||||
}
|
}
|
||||||
|
|
||||||
mpf->fd = -1;
|
mpf->fd = -1;
|
||||||
|
mpf->mp = mp;
|
||||||
|
|
||||||
if ((mpf->fname = strdup(fname)) == NULL) {
|
if ((mpf->fname = strdup(fname)) == NULL) {
|
||||||
goto _err;
|
goto _err;
|
||||||
|
@ -113,6 +114,10 @@ int tdbMPoolFileOpen(TDB_MPFILE **mpfp, const char *fname, TDB_MPOOL *mp) {
|
||||||
goto _err;
|
goto _err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tdbGnrtFileID(fname, mpf->fileid) < 0) {
|
||||||
|
goto _err;
|
||||||
|
}
|
||||||
|
|
||||||
*mpfp = mpf;
|
*mpfp = mpf;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -123,11 +128,28 @@ _err:
|
||||||
}
|
}
|
||||||
|
|
||||||
int tdbMPoolFileClose(TDB_MPFILE *mpf) {
|
int tdbMPoolFileClose(TDB_MPFILE *mpf) {
|
||||||
// TODO
|
if (mpf) {
|
||||||
|
if (mpf->fd > 0) {
|
||||||
|
close(mpf->fd);
|
||||||
|
}
|
||||||
|
tfree(mpf->fname);
|
||||||
|
free(mpf);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tdbGnrtFileID(const char *fname, uint8_t *fileid) {
|
static int tdbGnrtFileID(const char *fname, uint8_t *fileid) {
|
||||||
// TODO
|
struct stat statbuf;
|
||||||
|
|
||||||
|
if (stat(fname, &statbuf) < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset(fileid, 0, TDB_FILE_ID_LEN);
|
||||||
|
|
||||||
|
((uint64_t *)fileid)[0] = (uint64_t)statbuf.st_ino;
|
||||||
|
((uint64_t *)fileid)[1] = (uint64_t)statbuf.st_dev;
|
||||||
|
((uint64_t *)fileid)[2] = rand();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
|
@ -56,10 +56,10 @@ struct TDB_MPOOL {
|
||||||
#define MP_PAGE_AT(mp, idx) (mp)->pages[idx]
|
#define MP_PAGE_AT(mp, idx) (mp)->pages[idx]
|
||||||
|
|
||||||
struct TDB_MPFILE {
|
struct TDB_MPFILE {
|
||||||
uint8_t fileid[TDB_FILE_ID_LEN]; // file ID
|
|
||||||
TDB_MPOOL *mp; // underlying memory pool
|
|
||||||
char * fname; // file name
|
char * fname; // file name
|
||||||
int fd; // fd
|
int fd; // fd
|
||||||
|
uint8_t fileid[TDB_FILE_ID_LEN]; // file ID
|
||||||
|
TDB_MPOOL *mp; // underlying memory pool
|
||||||
};
|
};
|
||||||
|
|
||||||
/*=================================================== Exposed apis ==================================================*/
|
/*=================================================== Exposed apis ==================================================*/
|
||||||
|
|
Loading…
Reference in New Issue