From 641f5b567e1f86ba284a30dbb098a522a3ac61fd Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Mon, 8 Nov 2021 14:06:15 +0800 Subject: [PATCH] more --- source/dnode/vnode/tsdb/inc/tsdbOptions.h | 3 +- source/dnode/vnode/tsdb/src/tsdbMain.c | 68 ++++++++++++++++++++++- source/dnode/vnode/tsdb/src/tsdbOptions.c | 2 + 3 files changed, 69 insertions(+), 4 deletions(-) diff --git a/source/dnode/vnode/tsdb/inc/tsdbOptions.h b/source/dnode/vnode/tsdb/inc/tsdbOptions.h index a186482939..ffd409099a 100644 --- a/source/dnode/vnode/tsdb/inc/tsdbOptions.h +++ b/source/dnode/vnode/tsdb/inc/tsdbOptions.h @@ -22,7 +22,8 @@ extern "C" { extern const STsdbOptions defautlTsdbOptions; -int tsdbValidateOptions(const STsdbOptions *); +int tsdbValidateOptions(const STsdbOptions *); +void tsdbOptionsCopy(STsdbOptions *pDest, const STsdbOptions *pSrc); #ifdef __cplusplus } diff --git a/source/dnode/vnode/tsdb/src/tsdbMain.c b/source/dnode/vnode/tsdb/src/tsdbMain.c index 9f473c3be1..10b6c2aa65 100644 --- a/source/dnode/vnode/tsdb/src/tsdbMain.c +++ b/source/dnode/vnode/tsdb/src/tsdbMain.c @@ -15,18 +15,80 @@ #include "tsdbDef.h" +static STsdb *tsdbNew(const char *path, const STsdbOptions *pTsdbOptions); +static void tsdbFree(STsdb *pTsdb); +static int tsdbOpenImpl(STsdb *pTsdb); +static void tsdbCloseImpl(STsdb *pTsdb); + STsdb *tsdbOpen(const char *path, const STsdbOptions *pTsdbOptions) { STsdb *pTsdb = NULL; - /* TODO */ + + // Set default TSDB Options + if (pTsdbOptions == NULL) { + pTsdbOptions = &defautlTsdbOptions; + } + + // Validate the options + if (tsdbValidateOptions(pTsdbOptions) < 0) { + // TODO: handle error + return NULL; + } + + // Create the handle + pTsdb = tsdbNew(path, pTsdbOptions); + if (pTsdb == NULL) { + // TODO: handle error + return NULL; + } + + taosMkDir(path); + + // Open the TSDB + if (tsdbOpenImpl(pTsdb) < 0) { + // TODO: handle error + return NULL; + } + return pTsdb; } void tsdbClose(STsdb *pTsdb) { if (pTsdb) { - /* TODO */ + tsdbCloseImpl(pTsdb); + tsdbFree(pTsdb); } } void tsdbRemove(const char *path) { taosRemoveDir(path); } -/* ------------------------ STATIC METHODS ------------------------ */ \ No newline at end of file +/* ------------------------ STATIC METHODS ------------------------ */ +static STsdb *tsdbNew(const char *path, const STsdbOptions *pTsdbOptions) { + STsdb *pTsdb = NULL; + + pTsdb = (STsdb *)calloc(1, sizeof(STsdb)); + if (pTsdb == NULL) { + // TODO: handle error + return NULL; + } + + pTsdb->path = strdup(path); + tsdbOptionsCopy(&(pTsdb->options), pTsdbOptions); + + return pTsdb; +} + +static void tsdbFree(STsdb *pTsdb) { + if (pTsdb) { + tfree(pTsdb->path); + free(pTsdb); + } +} + +static int tsdbOpenImpl(STsdb *pTsdb) { + // TODO + return 0; +} + +static void tsdbCloseImpl(STsdb *pTsdb) { + // TODO +} \ No newline at end of file diff --git a/source/dnode/vnode/tsdb/src/tsdbOptions.c b/source/dnode/vnode/tsdb/src/tsdbOptions.c index 1e1a859285..3a1102f048 100644 --- a/source/dnode/vnode/tsdb/src/tsdbOptions.c +++ b/source/dnode/vnode/tsdb/src/tsdbOptions.c @@ -30,3 +30,5 @@ int tsdbValidateOptions(const STsdbOptions *pTsdbOptions) { // TODO return 0; } + +void tsdbOptionsCopy(STsdbOptions *pDest, const STsdbOptions *pSrc) { memcpy(pDest, pSrc, sizeof(STsdbOptions)); } \ No newline at end of file