From b898fc0e1ce6cda0755fba71f0e9bbea21154e1a Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Mon, 27 Dec 2021 18:03:26 +0800 Subject: [PATCH] more --- include/common/tmsg.h | 20 ++++++++++---------- include/util/tcoding.h | 31 +++++++++++++++++++++---------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/include/common/tmsg.h b/include/common/tmsg.h index 8bcf5c68cb..6961b73e86 100644 --- a/include/common/tmsg.h +++ b/include/common/tmsg.h @@ -1127,17 +1127,17 @@ typedef struct SVCreateTbReq { static FORCE_INLINE int tSerializeSVCreateTbReq(void** buf, const SVCreateTbReq* pReq) { int tlen = 0; - uint8_t* pBuf = (uint8_t*)(*buf); + // uint8_t* pBuf = (uint8_t*)(*buf); - if (TD_RT_ENDIAN() == TD_LITTLE_ENDIAN) { - pBuf += tPut(pBuf, pReq->ver, uint64_t); - pBuf += tPut(pBuf, pReq->ttl, uint32_t); - pBuf += tPut(pBuf, pReq->keep, uint32_t); - } else { - pBuf += tPutl(pBuf, pReq->ver, uint64_t); - pBuf += tPutl(pBuf, pReq->ttl, uint32_t); - pBuf += tPutl(pBuf, pReq->keep, uint32_t); - } + // if (TD_RT_ENDIAN() == TD_LITTLE_ENDIAN) { + // pBuf += tPut(pBuf, pReq->ver, uint64_t); + // pBuf += tPut(pBuf, pReq->ttl, uint32_t); + // pBuf += tPut(pBuf, pReq->keep, uint32_t); + // } else { + // pBuf += tPutl(pBuf, pReq->ver, uint64_t); + // pBuf += tPutl(pBuf, pReq->ttl, uint32_t); + // pBuf += tPutl(pBuf, pReq->keep, uint32_t); + // } tlen += taosEncodeFixedU64(buf, pReq->ver); tlen += taosEncodeString(buf, pReq->name); diff --git a/include/util/tcoding.h b/include/util/tcoding.h index 074a064201..ae5ae15b07 100644 --- a/include/util/tcoding.h +++ b/include/util/tcoding.h @@ -218,9 +218,9 @@ extern "C" { #define tGetb(BUF, VAL, TYPE) tGet_##TYPE##_b(BUF, VAL, TYPE) /* ------------------------ VARIANT-LENGTH ENCODING ------------------------ */ -#define vPutU(BUF, VAL) \ +#define vPut(BUF, VAL, SIGN) \ ({ \ - uint64_t tmp = (VAL); \ + uint64_t tmp = (SIGN) ? ZIGZAGE(int64_t, VAL) : (VAL); \ int i = 0; \ while ((VAL) >= ENCODE_LIMIT) { \ ((uint8_t *)(BUF))[i] = (uint8_t)((tmp) | ENCODE_LIMIT); \ @@ -231,16 +231,27 @@ extern "C" { i + 1; \ }) -#define vGetU(BUF, VAL) - -#define vPutI(BUF, VAL, TYPE) \ - ({ \ - uint64_t tmp = ZIGZAGE(TYPE, VAL); \ - vPutU(BUF, tmp); \ +#define vGet(BUF, VAL, SIGN) \ + ({ \ + uint64_t tmp; \ + uint64_t tval = 0; \ + int i = 0; \ + while (true) { \ + tmp = (uint64_t)(((uint8_t *)(BUF))[i]); \ + if (tmp < ENCODE_LIMIT) { \ + tval |= (tval << (7 * i)); \ + break; \ + } else { \ + tval |= ((tval & (ENCODE_LIMIT - 1)) << (7 * i)); \ + i++; \ + } \ + } \ + if (SIGN) { \ + (VAL) = ZIGZAGD(int64_t, tmp); \ + } \ + i; \ }) -#define vGetI(BUF, VAL, TYPE) - /* ------------------------ OTHER TYPE ENCODING ------------------------ */ /* ------------------------ LEGACY CODES ------------------------ */