diff --git a/source/dnode/vnode/src/inc/vnodeInt.h b/source/dnode/vnode/src/inc/vnodeInt.h index 70a59ca2d7..d648044ebb 100644 --- a/source/dnode/vnode/src/inc/vnodeInt.h +++ b/source/dnode/vnode/src/inc/vnodeInt.h @@ -180,11 +180,18 @@ int32_t metaSnapReaderOpen(SMeta* pMeta, int64_t sver, int64_t ever, SMetaSnapRe int32_t metaSnapReaderClose(SMetaSnapReader** ppReader); int32_t metaSnapRead(SMetaSnapReader* pReader, uint8_t** ppData); // SMetaSnapWriter ======================================== +int32_t metaSnapWriterOpen(SMeta* pMeta, int64_t sver, int64_t ever, SMetaSnapWriter** ppWriter); +int32_t metaSnapWrite(SMetaSnapWriter* pWriter, uint8_t* pData, uint32_t nData); +int32_t metaSnapWriterClose(SMetaSnapWriter** ppWriter, int8_t rollback); // STsdbSnapReader ======================================== int32_t tsdbSnapReaderOpen(STsdb* pTsdb, int64_t sver, int64_t ever, STsdbSnapReader** ppReader); int32_t tsdbSnapReaderClose(STsdbSnapReader** ppReader); int32_t tsdbSnapRead(STsdbSnapReader* pReader, uint8_t** ppData); // STsdbSnapWriter ======================================== +int32_t tsdbSnapWriterOpen(STsdb* pTsdb, int64_t sver, int64_t ever, STsdbSnapWriter** ppWriter); +int32_t tsdbSnapWrite(STsdbSnapWriter* pWriter, uint8_t* pData, uint32_t nData); +int32_t tsdbSnapWriterClose(STsdbSnapWriter** ppWriter, int8_t rollback); + typedef struct { int8_t streamType; // sma or other int8_t dstType; diff --git a/source/dnode/vnode/src/meta/metaSnapshot.c b/source/dnode/vnode/src/meta/metaSnapshot.c index e3124096bd..59b9d566d5 100644 --- a/source/dnode/vnode/src/meta/metaSnapshot.c +++ b/source/dnode/vnode/src/meta/metaSnapshot.c @@ -101,4 +101,27 @@ _exit: return code; } -// SMetaSnapWriter ======================================== \ No newline at end of file +// SMetaSnapWriter ======================================== +struct SMetaSnapWriter { + SMeta* pMeta; + int64_t sver; + int64_t ever; +}; + +int32_t metaSnapWriterOpen(SMeta* pMeta, int64_t sver, int64_t ever, SMetaSnapWriter** ppWriter) { + int32_t code = 0; + // TODO + return code; +} + +int32_t metaSnapWrite(SMetaSnapWriter* pWriter, uint8_t* pData, uint32_t nData) { + int32_t code = 0; + // TODO + return code; +} + +int32_t metaSnapWriterClose(SMetaSnapWriter** ppWriter, int8_t rollback) { + int32_t code = 0; + // TODO + return code; +} \ No newline at end of file diff --git a/source/dnode/vnode/src/tsdb/tsdbSnapshot.c b/source/dnode/vnode/src/tsdb/tsdbSnapshot.c index 219d5edb7b..1bc2e45a41 100644 --- a/source/dnode/vnode/src/tsdb/tsdbSnapshot.c +++ b/source/dnode/vnode/src/tsdb/tsdbSnapshot.c @@ -313,4 +313,22 @@ struct STsdbSnapWriter { SDataFWriter* pDataFWriter; // for del file SDelFWriter* pDelFWriter; -}; \ No newline at end of file +}; + +int32_t tsdbSnapWriterOpen(STsdb* pTsdb, int64_t sver, int64_t ever, STsdbSnapWriter** ppWriter) { + int32_t code = 0; + // TODO + return code; +} + +int32_t tsdbSnapWrite(STsdbSnapWriter* pWriter, uint8_t* pData, uint32_t nData) { + int32_t code = 0; + // TODO + return code; +} + +int32_t tsdbSnapWriterClose(STsdbSnapWriter** ppWriter, int8_t rollback) { + int32_t code = 0; + // TODO + return code; +} diff --git a/source/dnode/vnode/src/vnd/vnodeSnapshot.c b/source/dnode/vnode/src/vnd/vnodeSnapshot.c index c5353949ef..b1b30c79a2 100644 --- a/source/dnode/vnode/src/vnd/vnodeSnapshot.c +++ b/source/dnode/vnode/src/vnd/vnodeSnapshot.c @@ -116,6 +116,10 @@ struct SVSnapWriter { SVnode *pVnode; int64_t sver; int64_t ever; + // meta + SMetaSnapWriter *pMetaSnapWriter; + // tsdb + STsdbSnapWriter *pTsdbSnapWriter; }; int32_t vnodeSnapWriterOpen(SVnode *pVnode, int64_t sver, int64_t ever, SVSnapWriter **ppWriter) { @@ -152,7 +156,25 @@ int32_t vnodeSnapWriterClose(SVSnapWriter *pWriter, int8_t rollback) { } int32_t vnodeSnapWrite(SVSnapWriter *pWriter, uint8_t *pData, uint32_t nData) { - int32_t code = 0; - // TODO + int32_t code = 0; + SSnapDataHdr *pSnapDataHdr = (SSnapDataHdr *)pData; + SVnode *pVnode = pWriter->pVnode; + + ASSERT(pSnapDataHdr->size + sizeof(SSnapDataHdr) == nData); + + if (pSnapDataHdr->type == 0) { + // meta + if (pWriter->pMetaSnapWriter == NULL) { + code = metaSnapWriterOpen(pVnode->pMeta, pWriter->sver, pWriter->ever, &pWriter->pMetaSnapWriter); + if (code) goto _err; + } + } else { + // tsdb + } + + return code; + +_err: + vError("vgId:%d vnode snapshot write failed since %s", TD_VID(pVnode), tstrerror(code)); return code; } \ No newline at end of file