From 993d28df0f6be539e60337862d13af04f253d47d Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Sun, 7 Nov 2021 15:58:32 +0800 Subject: [PATCH] save --- include/server/vnode/impl/vnodeImpl.h | 39 ++++++++++++++++++++++ include/server/vnode/vnode.h | 26 +++++++++++---- source/dnode/vnode/impl/CMakeLists.txt | 1 + source/dnode/vnode/impl/inc/vnodeDef.h | 32 ++++++++++++++++++ source/dnode/vnode/impl/inc/vnodeInt.h | 10 ------ source/dnode/vnode/impl/inc/vnodeRead.h | 2 ++ source/dnode/vnode/impl/inc/vnodeWrite.h | 5 ++- source/dnode/vnode/impl/src/vnodeInt.c | 3 ++ source/dnode/vnode/impl/src/vnodeMain.c | 27 +++++++++++++++ source/dnode/vnode/impl/src/vnodeOptions.c | 20 +++++++++++ 10 files changed, 148 insertions(+), 17 deletions(-) create mode 100644 include/server/vnode/impl/vnodeImpl.h create mode 100644 source/dnode/vnode/impl/inc/vnodeDef.h create mode 100644 source/dnode/vnode/impl/src/vnodeMain.c create mode 100644 source/dnode/vnode/impl/src/vnodeOptions.c diff --git a/include/server/vnode/impl/vnodeImpl.h b/include/server/vnode/impl/vnodeImpl.h new file mode 100644 index 0000000000..580b770246 --- /dev/null +++ b/include/server/vnode/impl/vnodeImpl.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef _TD_VNODE_IMPL_H_ +#define _TD_VNODE_IMPL_H_ + +#include "os.h" + +#include "meta.h" +#include "tq.h" +#include "tsdb.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct SVnodeOptions { + STsdbOptions tsdbOptions; + SMetaOptions metaOptions; + // STqOptions tqOptions; // TODO +}; + +#ifdef __cplusplus +} +#endif + +#endif /*_TD_VNODE_IMPL_H_*/ \ No newline at end of file diff --git a/include/server/vnode/vnode.h b/include/server/vnode/vnode.h index e570cf4261..501c934730 100644 --- a/include/server/vnode/vnode.h +++ b/include/server/vnode/vnode.h @@ -16,15 +16,29 @@ #ifndef _TD_VNODE_H_ #define _TD_VNODE_H_ -#include "os.h" -#include "taosmsg.h" -#include "trpc.h" +#include "impl/vnodeImpl.h" #ifdef __cplusplus extern "C" { #endif -typedef struct SVnode SVnode; +/* ------------------------ TYPES EXPOSED ------------------------ */ +typedef struct SVnode SVnode; +typedef struct SVnodeOptions SVnodeOptions; + +/* ------------------------ SVnode ------------------------ */ +SVnode *vnodeOpen(const char *path, const SVnodeOptions *pVnodeOptions); +void vnodeClose(SVnode *pVnode); +void vnodeDestroy(const char *path); + +/* ------------------------ SVnodeOptions ------------------------ */ +void vnodeOptionsInit(SVnodeOptions *); +void vnodeOptionsClear(SVnodeOptions *); + +#if 1 + +#include "taosMsg.h" +#include "trpc.h" typedef struct { char db[TSDB_FULL_DB_NAME_LEN]; @@ -70,8 +84,6 @@ typedef struct { int32_t vnodeInit(SVnodePara); void vnodeCleanup(); -SVnode *vnodeOpen(int32_t vgId, const char *path); -void vnodeClose(SVnode *pVnode); int32_t vnodeAlter(SVnode *pVnode, const SVnodeCfg *pCfg); SVnode *vnodeCreate(int32_t vgId, const char *path, const SVnodeCfg *pCfg); void vnodeDrop(SVnode *pVnode); @@ -85,6 +97,8 @@ int32_t vnodeAppendMsg(SVnodeMsg *pMsg, SRpcMsg *pRpcMsg); void vnodeCleanupMsg(SVnodeMsg *pMsg); void vnodeProcessMsg(SVnode *pVnode, SVnodeMsg *pMsg, EVnMsgType msgType); +#endif + #ifdef __cplusplus } #endif diff --git a/source/dnode/vnode/impl/CMakeLists.txt b/source/dnode/vnode/impl/CMakeLists.txt index 81744df79c..fa26b18d0b 100644 --- a/source/dnode/vnode/impl/CMakeLists.txt +++ b/source/dnode/vnode/impl/CMakeLists.txt @@ -7,6 +7,7 @@ target_include_directories( ) target_link_libraries( vnode + PUBLIC os PUBLIC transport PUBLIC meta PUBLIC tq diff --git a/source/dnode/vnode/impl/inc/vnodeDef.h b/source/dnode/vnode/impl/inc/vnodeDef.h new file mode 100644 index 0000000000..6a327ceefa --- /dev/null +++ b/source/dnode/vnode/impl/inc/vnodeDef.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef _TD_VNODE_DEF_H_ +#define _TD_VNODE_DEF_H_ + +#include "vnode.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct SVnode { +}; + +#ifdef __cplusplus +} +#endif + +#endif /*_TD_VNODE_DEF_H_*/ \ No newline at end of file diff --git a/source/dnode/vnode/impl/inc/vnodeInt.h b/source/dnode/vnode/impl/inc/vnodeInt.h index d7b84be83d..957690a451 100644 --- a/source/dnode/vnode/impl/inc/vnodeInt.h +++ b/source/dnode/vnode/impl/inc/vnodeInt.h @@ -39,16 +39,6 @@ extern int32_t vDebugFlag; #define vDebug(...) { if (vDebugFlag & DEBUG_DEBUG) { taosPrintLog("VND ", vDebugFlag, __VA_ARGS__); }} #define vTrace(...) { if (vDebugFlag & DEBUG_TRACE) { taosPrintLog("VND ", vDebugFlag, __VA_ARGS__); }} -typedef struct SVnode { - int32_t vgId; - SVnodeCfg cfg; - SMeta *pMeta; - STsdb *pTsdb; - STQ *pTQ; - SWal *pWal; - SSyncNode *pSync; -} SVnode; - #ifdef __cplusplus } #endif diff --git a/source/dnode/vnode/impl/inc/vnodeRead.h b/source/dnode/vnode/impl/inc/vnodeRead.h index 5ce84b2ebf..6f5028d00e 100644 --- a/source/dnode/vnode/impl/inc/vnodeRead.h +++ b/source/dnode/vnode/impl/inc/vnodeRead.h @@ -21,6 +21,8 @@ extern "C" { #endif #include "vnodeInt.h" +typedef void SVnodeMsg; + void vnodeProcessReadMsg(SVnode *pVnode, SVnodeMsg *pMsg); #ifdef __cplusplus diff --git a/source/dnode/vnode/impl/inc/vnodeWrite.h b/source/dnode/vnode/impl/inc/vnodeWrite.h index 11fe9836f6..6ee773f79b 100644 --- a/source/dnode/vnode/impl/inc/vnodeWrite.h +++ b/source/dnode/vnode/impl/inc/vnodeWrite.h @@ -16,10 +16,13 @@ #ifndef _TD_VNODE_WRITE_H_ #define _TD_VNODE_WRITE_H_ +#include "vnode.h" + #ifdef __cplusplus extern "C" { #endif -#include "vnodeInt.h" + +typedef void SVnodeMsg; void vnodeProcessWriteMsg(SVnode* pVnode, SVnodeMsg* pMsg); diff --git a/source/dnode/vnode/impl/src/vnodeInt.c b/source/dnode/vnode/impl/src/vnodeInt.c index 427a6dae4d..aded02ab04 100644 --- a/source/dnode/vnode/impl/src/vnodeInt.c +++ b/source/dnode/vnode/impl/src/vnodeInt.c @@ -13,6 +13,7 @@ * along with this program. If not, see . */ +#if 0 #define _DEFAULT_SOURCE #include "vnodeInt.h" #include "tqueue.h" @@ -70,3 +71,5 @@ void vnodeProcessMsg(SVnode *pVnode, SVnodeMsg *pMsg, EVnMsgType msgType) { break; } } + +#endif \ No newline at end of file diff --git a/source/dnode/vnode/impl/src/vnodeMain.c b/source/dnode/vnode/impl/src/vnodeMain.c new file mode 100644 index 0000000000..f074dd9876 --- /dev/null +++ b/source/dnode/vnode/impl/src/vnodeMain.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#include "vnodeDef.h" + +SVnode *vnodeOpen(const char *path, const SVnodeOptions *pVnodeOptions) { + SVnode *pVnode = NULL; + /* TODO */ + return pVnode; +} + +void vnodeCloee(SVnode *pVnode) { /* TODO */ +} + +void vnodeDestroy(const char *path) { taosRemoveDir(path); } \ No newline at end of file diff --git a/source/dnode/vnode/impl/src/vnodeOptions.c b/source/dnode/vnode/impl/src/vnodeOptions.c new file mode 100644 index 0000000000..a384eb9e53 --- /dev/null +++ b/source/dnode/vnode/impl/src/vnodeOptions.c @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#include "vnodeDef.h" + +void vnodeOptionsInit(SVnodeOptions *pVnodeOptions) { /* TODO */ } + +void vnodeOptionsClear(SVnodeOptions *pVnodeOptions) { /* TODO */ } \ No newline at end of file -- GitLab