From d5af05860e3bde6f45ff42785494c27a6d1db139 Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Mon, 8 Nov 2021 10:17:51 +0800 Subject: [PATCH] refact --- source/dnode/vnode/impl/inc/vnodeOptions.h | 3 +- source/dnode/vnode/impl/src/vnodeMain.c | 39 ++++++++++++++++++++-- source/dnode/vnode/impl/src/vnodeOptions.c | 4 +++ 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/source/dnode/vnode/impl/inc/vnodeOptions.h b/source/dnode/vnode/impl/inc/vnodeOptions.h index 4b31de1966..edb4be2a77 100644 --- a/source/dnode/vnode/impl/inc/vnodeOptions.h +++ b/source/dnode/vnode/impl/inc/vnodeOptions.h @@ -24,7 +24,8 @@ extern "C" { extern const SVnodeOptions defaultVnodeOptions; -int vnodeValidateOptions(const SVnodeOptions*); +int vnodeValidateOptions(const SVnodeOptions *); +void vnodeOptionsCopy(SVnodeOptions *pDest, const SVnodeOptions *pSrc); #ifdef __cplusplus } diff --git a/source/dnode/vnode/impl/src/vnodeMain.c b/source/dnode/vnode/impl/src/vnodeMain.c index d531b44f15..cc9a1d76bc 100644 --- a/source/dnode/vnode/impl/src/vnodeMain.c +++ b/source/dnode/vnode/impl/src/vnodeMain.c @@ -17,6 +17,8 @@ static SVnode *vnodeNew(const char *path, const SVnodeOptions *pVnodeOptions); static void vnodeFree(SVnode *pVnode); +static int vnodeOpenImpl(SVnode *pVnode); +static void vnodeCloseImpl(SVnode *pVnode); SVnode *vnodeOpen(const char *path, const SVnodeOptions *pVnodeOptions) { SVnode *pVnode = NULL; @@ -32,6 +34,7 @@ SVnode *vnodeOpen(const char *path, const SVnodeOptions *pVnodeOptions) { return NULL; } + // Create the handle pVnode = vnodeNew(path, pVnodeOptions); if (pVnode == NULL) { // TODO: handle error @@ -40,22 +43,52 @@ SVnode *vnodeOpen(const char *path, const SVnodeOptions *pVnodeOptions) { taosMkDir(path); + // Open the vnode + if (vnodeOpenImpl(pVnode) < 0) { + // TODO: handle error + return NULL; + } + return pVnode; } -void vnodeClose(SVnode *pVnode) { /* TODO */ +void vnodeClose(SVnode *pVnode) { + if (pVnode) { + vnodeCloseImpl(pVnode); + vnodeFree(pVnode); + } } void vnodeDestroy(const char *path) { taosRemoveDir(path); } /* ------------------------ STATIC METHODS ------------------------ */ static SVnode *vnodeNew(const char *path, const SVnodeOptions *pVnodeOptions) { - // TODO + SVnode *pVnode = NULL; + + pVnode = (SVnode *)calloc(1, sizeof(*pVnode)); + if (pVnode == NULL) { + // TODO + return NULL; + } + + pVnode->path = strdup(path); + vnodeOptionsCopy(&(pVnode->options), pVnodeOptions); + return NULL; } static void vnodeFree(SVnode *pVnode) { if (pVnode) { - // TODO + tfree(pVnode->path); + free(pVnode); } +} + +static int vnodeOpenImpl(SVnode *pVnode) { + // TODO + return 0; +} + +static void vnodeCloseImpl(SVnode *pVnode) { + // TODO } \ No newline at end of file diff --git a/source/dnode/vnode/impl/src/vnodeOptions.c b/source/dnode/vnode/impl/src/vnodeOptions.c index ebf1dc35ba..d5f986d439 100644 --- a/source/dnode/vnode/impl/src/vnodeOptions.c +++ b/source/dnode/vnode/impl/src/vnodeOptions.c @@ -26,4 +26,8 @@ void vnodeOptionsClear(SVnodeOptions *pVnodeOptions) { /* TODO */ int vnodeValidateOptions(const SVnodeOptions *pVnodeOptions) { // TODO return 0; +} + +void vnodeOptionsCopy(SVnodeOptions *pDest, const SVnodeOptions *pSrc) { + memcpy((void *)pDest, (void *)pSrc, sizeof(SVnodeOptions)); } \ No newline at end of file -- GitLab