diff --git a/include/server/vnode/impl/vnodeImpl.h b/include/server/vnode/impl/vnodeImpl.h new file mode 100644 index 0000000000000000000000000000000000000000..580b77024636aca77c8c61a4a3b4b923607b4795 --- /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 e570cf4261258aef2784ee3468d49ff792a5e020..501c934730c70cba011ceafd1f8e4300a42835a6 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 81744df79c008114e807052fe48fe3166caf7580..fa26b18d0bacf4424dd24ed1f7dc890e5f556390 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 0000000000000000000000000000000000000000..6a327ceefad9939f4f828497ec923427208d228c --- /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 d7b84be83da8e0a857e8dccd9987e472e9286e96..957690a4513708a509e10fa8c5db8bcdd0d939c2 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 5ce84b2ebf3d5127cb4ed15b83d050779296033e..6f5028d00e4e7d8ad01c09780ccdbde49dcd87ec 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 11fe9836f6c31eeb44f37e4bc7a8c5aa9c10faac..6ee773f79bcd13ea8b70fc9b0aaeddc53667dc65 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 427a6dae4d15fa3e41adc36477238733bdf7669d..aded02ab04f5c1878ec4f8657e99f32a373886e8 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 0000000000000000000000000000000000000000..f074dd98768d0e3e07b1e49a17a701aa63191d4b --- /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 0000000000000000000000000000000000000000..a384eb9e539e3ec78b89f3b9eee3843c651f5020 --- /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