From 7f4551db610b1c2d9c0763b6f730e6c7baff895f Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Mon, 27 Sep 2021 14:44:18 +0800 Subject: [PATCH] refact --- include/libs/tkv/tkv.h | 35 ++++++++++++++++++++++++ include/server/vnode/meta/meta.h | 5 ++++ source/server/vnode/meta/CMakeLists.txt | 4 +++ source/server/vnode/meta/inc/metaInt.h | 4 +++ source/server/vnode/meta/src/meta.c | 36 +++++++++++++++++++++++++ source/server/vnode/src/vnodeWrite.c | 5 +--- 6 files changed, 85 insertions(+), 4 deletions(-) diff --git a/include/libs/tkv/tkv.h b/include/libs/tkv/tkv.h index 6072525f88..ef865e894b 100644 --- a/include/libs/tkv/tkv.h +++ b/include/libs/tkv/tkv.h @@ -20,6 +20,41 @@ extern "C" { #endif +typedef struct tkv_db_s tkv_db_t; + + +typedef struct { + /* data */ +} tkv_key_t; + +typedef struct { + bool pinned; + int64_t ref; // TODO: use util library + // TODO: add a RW latch here + void *pObj; +} tkv_obj_t; + + +typedef int (*tkv_key_comp_fn_t)(const tkv_key_t *, const tkv_key_t *); +typedef void (*tkv_get_key_fn_t)(const tkv_obj_t *, tkv_key_t *); +typedef int (*tkv_obj_encode_fn_t)(void **buf, void *pObj); +typedef void *(*tkv_obj_decode_fn_t)(void *buf, void **pObj); + +typedef struct { + uint64_t memLimit : 63; + tkv_get_key_fn_t getKey; + tkv_obj_encode_fn_t encode; + tkv_obj_decode_fn_t decode; +} tkv_db_option_t; + +tkv_db_t * tkvOpenDB(char *dir, tkv_db_option_t *); +int tkvCloseDB(tkv_db_t *); +int tkvPut(tkv_db_t *, tkv_obj_t *); +int tkvPutBatch(tkv_db_t *, tkv_obj_t **, int); +tkv_obj_t *tkvGet(tkv_key_t *); +int tkvGetBatch(tkv_db_t *, tkv_key_t **, int, tkv_obj_t **); +int tkvCommit(tkv_db_t *, void * /*TODO*/); + #ifdef __cplusplus } #endif diff --git a/include/server/vnode/meta/meta.h b/include/server/vnode/meta/meta.h index 2addcdc6c3..ca7cba9b0c 100644 --- a/include/server/vnode/meta/meta.h +++ b/include/server/vnode/meta/meta.h @@ -16,12 +16,17 @@ #ifndef _TD_META_H_ #define _TD_META_H_ +#include "taosMsg.h" + #ifdef __cplusplus extern "C" { #endif typedef struct SMeta SMeta; +int metaCreateTable(SMeta *pMeta, SCreateTableReq *pReq); +int metaDropTable(SMeta *pMeta, SDropTableReq *pReq); +int metaAlterTable(SMeta *pMeta, SAlterTableReq *pReq); int metaCommit(SMeta *pMeta); #ifdef __cplusplus diff --git a/source/server/vnode/meta/CMakeLists.txt b/source/server/vnode/meta/CMakeLists.txt index 7ce192ef3e..832e13a155 100644 --- a/source/server/vnode/meta/CMakeLists.txt +++ b/source/server/vnode/meta/CMakeLists.txt @@ -4,4 +4,8 @@ target_include_directories( meta PUBLIC "${CMAKE_SOURCE_DIR}/include/server/vnode/meta" PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/inc" +) +target_link_libraries( + meta + PUBLIC common ) \ No newline at end of file diff --git a/source/server/vnode/meta/inc/metaInt.h b/source/server/vnode/meta/inc/metaInt.h index 8b9adfca89..549ac829ab 100644 --- a/source/server/vnode/meta/inc/metaInt.h +++ b/source/server/vnode/meta/inc/metaInt.h @@ -20,6 +20,10 @@ extern "C" { #endif +struct { + tkv_db_t db; +} SMeta; + #ifdef __cplusplus } #endif diff --git a/source/server/vnode/meta/src/meta.c b/source/server/vnode/meta/src/meta.c index e69de29bb2..7d8ec11494 100644 --- a/source/server/vnode/meta/src/meta.c +++ b/source/server/vnode/meta/src/meta.c @@ -0,0 +1,36 @@ +/* + * 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 "meta.h" + +int metaCreateTable(SMeta *pMeta, SCreateTableReq *pReq) { + // TODO + return 0; +} + +int metaDropTable(SMeta *pMeta, SDropTableReq *pReq) { + // TODO + return 0; +} + +int metaAlterTable(SMeta *pMeta, SAlterTableReq *pReq) { + // TODO + return 0; +} + +int metaCommit(SMeta *pMeta) { + // TODO + return 0; +} \ No newline at end of file diff --git a/source/server/vnode/src/vnodeWrite.c b/source/server/vnode/src/vnodeWrite.c index 0163dd71f1..a3aff78d02 100644 --- a/source/server/vnode/src/vnodeWrite.c +++ b/source/server/vnode/src/vnodeWrite.c @@ -18,7 +18,6 @@ int vnodeProcessSubmitReq(SVnode *pVnode, SSubmitReq *pReq, SSubmitRsp *pRsp) { // TODO: Check inputs -#if 1 void *pMem = NULL; if ((pMem = amalloc(pVnode->allocator, REQ_SIZE(pReq))) == NULL) { // No more memory to allocate, schedule an async commit @@ -47,8 +46,6 @@ int vnodeProcessSubmitReq(SVnode *pVnode, SSubmitReq *pReq, SSubmitRsp *pRsp) { // TODO: handler error } -#endif - return 0; } @@ -62,7 +59,7 @@ int vnodeProcessDropTableReq(SVnode *pVnode, SDropTableReq *pReq, SDropTableRsp return 0; } -int vnodeProcessAlterTableReq(SVnode *pVnode, SDropTableReq *pReq, SDropTableRsp *pRsp) { +int vnodeProcessAlterTableReq(SVnode *pVnode, SAlterTableReq *pReq, SAlterTableRsp *pRsp) { // TODO return 0; }