more code

This commit is contained in:
Hongze Cheng 2024-02-19 16:42:41 +08:00
parent 75f1d15be1
commit bdfba4cad1
3 changed files with 36 additions and 14 deletions

View File

@ -27,7 +27,7 @@ typedef struct SBufferWriter SBufferWriter;
typedef struct SBufferReader SBufferReader;
// SBuffer
#define BUFFER_INITILIZER ((SBuffer){0, 0, NULL})
#define BUFFER_INITIALIZER ((SBuffer){0, 0, NULL})
static int32_t tBufferInit(SBuffer *buffer);
static int32_t tBufferDestroy(SBuffer *buffer);
static int32_t tBufferClear(SBuffer *buffer);
@ -38,9 +38,10 @@ static int32_t tBufferAppend(SBuffer *buffer, const void *data, uint32_t size);
#define tBufferGetData(buffer) ((const void *)(buffer)->data)
// SBufferWriter
#define tBufferWriterInit(forward, offset, buffer) ((SBufferWriter){forward, offset, buffer})
#define tBufferWriterDestroy(writer) ((void)0)
#define tBufferWriterGetOffset(writer) ((writer)->offset)
#define BUFFER_WRITER_INITIALIZER(forward, offset, buffer) ((SBufferWriter){forward, offset, buffer})
#define tBufferWriterDestroy(writer) ((void)0)
#define tBufferWriterGetOffset(writer) ((writer)->offset)
static int32_t tBufferWriterInit(SBufferWriter *writer, bool forward, uint32_t offset, SBuffer *buffer);
static int32_t tBufferPutFixed(SBufferWriter *writer, const void *data, uint32_t size);
static int32_t tBufferPutI8(SBufferWriter *writer, int8_t value);
static int32_t tBufferPutI16(SBufferWriter *writer, int16_t value);
@ -62,9 +63,10 @@ static int32_t tBufferPutF32(SBufferWriter *writer, float value);
static int32_t tBufferPutF64(SBufferWriter *writer, double value);
// SBufferReader
#define tBufferReaderInit(forward, offset, buffer) ((SBufferReader){forward, offset, buffer})
#define tBufferReaderDestroy(reader) ((void)0)
#define tBufferReaderGetOffset(reader) ((reader)->offset)
#define BUFFER_READER_INITIALIZER(forward, offset, buffer) ((SBufferReader){forward, offset, buffer})
#define tBufferReaderDestroy(reader) ((void)0)
#define tBufferReaderGetOffset(reader) ((reader)->offset)
static int32_t tBufferReaderInit(SBufferReader *reader, bool forward, uint32_t offset, SBuffer *buffer);
static int32_t tBufferGetFixed(SBufferReader *reader, void *data, uint32_t size);
static int32_t tBufferGetI8(SBufferReader *reader, int8_t *value);
static int32_t tBufferGetI16(SBufferReader *reader, int16_t *value);

View File

@ -82,6 +82,13 @@ static int32_t tBufferAppend(SBuffer *buffer, const void *data, uint32_t size) {
}
// SBufferWriter
static int32_t tBufferWriterInit(SBufferWriter *writer, bool forward, uint32_t offset, SBuffer *buffer) {
writer->forward = forward;
writer->offset = offset;
writer->buffer = buffer;
return 0;
}
static FORCE_INLINE int32_t tBufferPutFixed(SBufferWriter *writer, const void *data, uint32_t size) {
if (!writer->forward && writer->offset < size) {
return TSDB_CODE_OPS_NOT_SUPPORT;
@ -189,6 +196,13 @@ static FORCE_INLINE int32_t tBufferPutF64(SBufferWriter *writer, double value) {
}
// SBufferReader
static int32_t tBufferReaderInit(SBufferReader *reader, bool forward, uint32_t offset, SBuffer *buffer) {
reader->forward = forward;
reader->offset = offset;
reader->buffer = buffer;
return 0;
}
static int32_t tBufferGetFixed(SBufferReader *reader, void *data, uint32_t size) {
if ((reader->forward && reader->offset + size > reader->buffer->capacity) ||
(!reader->forward && reader->offset < size)) {

View File

@ -9,7 +9,9 @@ typedef struct {
} STestStruct;
TEST(BufferTest, simpleTest1) {
SBuffer buffer = tBufferInit();
SBuffer buffer;
tBufferInit(&buffer);
GTEST_ASSERT_EQ(tBufferGetSize(&buffer), 0);
GTEST_ASSERT_EQ(tBufferGetData(&buffer), nullptr);
@ -20,11 +22,13 @@ TEST(BufferTest, simpleTest1) {
TEST(BufferTest, forwardWriteAndRead) {
int32_t code = 0;
bool forward = true;
SBuffer buffer = tBufferInit();
SBuffer buffer;
tBufferInit(&buffer);
taosSeedRand(taosGetTimestampSec());
// write
SBufferWriter writer = tBufferWriterInit(forward, tBufferGetSize(&buffer), &buffer);
SBufferWriter writer = BUFFER_WRITER_INITIALIZER(forward, tBufferGetSize(&buffer), &buffer);
/* fix-len struct */
STestStruct testStruct = {1, 2};
@ -250,7 +254,7 @@ TEST(BufferTest, forwardWriteAndRead) {
tBufferWriterDestroy(&writer);
// read
SBufferReader reader = tBufferReaderInit(forward, 0, &buffer);
SBufferReader reader = BUFFER_READER_INITIALIZER(forward, 0, &buffer);
/* fix-len struct */
STestStruct testStruct2 = {1, 2};
@ -372,11 +376,13 @@ TEST(BufferTest, forwardWriteAndRead) {
TEST(BufferTest, backwardWriteAndRead) {
int32_t code = 0;
bool forward = false;
SBuffer buffer = tBufferInit();
SBuffer buffer;
tBufferInit(&buffer);
taosSeedRand(taosGetTimestampSec());
// write
SBufferWriter writer = tBufferWriterInit(forward, 4096, &buffer);
SBufferWriter writer = BUFFER_WRITER_INITIALIZER(forward, 4096, &buffer);
/* fix-len struct */
STestStruct testStruct = {1, 2};
@ -602,7 +608,7 @@ TEST(BufferTest, backwardWriteAndRead) {
tBufferWriterDestroy(&writer);
// read
SBufferReader reader = tBufferReaderInit(forward, 4096, &buffer);
SBufferReader reader = BUFFER_READER_INITIALIZER(forward, 4096, &buffer);
/* fix-len struct */
STestStruct testStruct2 = {1, 2};