协议定义与实现, 协议支持 批处理、特殊字符如\r\n\0。与单条命令测试。

/**
 * Header: 	| magic(4) | payloadLen(4) |
 *
 * Request
 * Payload: | opcount(4) | repeat Cmd |
 * Cmd: 	| OP(1) | argc(4) | repeat Arg |
 * Arg:		| arglen(4) | arg |
 *
 * Response
 * Payload: | opcount(4) | repeat Rsp |
 * Rsp:		| OP(1) | status(1) | datalen(4) | data |
 */

 kvstore层,先解析,再执行,最后构建返回体。
 一个是半包问题,没有处理。
 另一个是感觉协议结构有点麻烦,
This commit is contained in:
2026-01-05 23:20:37 +08:00
parent 7524c57442
commit 0dc86f5aa5
10 changed files with 890 additions and 9 deletions

View File

@@ -1,16 +1,19 @@
CC = gcc
FLAGS = -I ./NtyCo/core/ -L ./NtyCo/ -lntyco -lpthread -luring -ldl
SRCS = kvstore.c ntyco.c proactor.c kvs_array.c kvs_rbtree.c kvs_hash.c
SRCS = kvstore.c ntyco.c proactor.c reactor.c kvs_array.c kvs_rbtree.c kvs_hash.c kvs_rw_tools.c
TESTCASE_SRCS = testcase.c
TARGET = kvstore
SUBDIR = ./NtyCo/
TESTCASE = testcase
TESTCASE2 = testcase2
TESTCASE2_SRCS = testcase.c
OBJS = $(SRCS:.c=.o)
all: $(SUBDIR) $(TARGET) $(TESTCASE)
all: $(SUBDIR) $(TARGET) $(TESTCASE) $(TESTCASE2)
$(SUBDIR): ECHO
make -C $@
@@ -24,6 +27,9 @@ $(TARGET): $(OBJS)
$(TESTCASE): $(TESTCASE_SRCS)
$(CC) -o $@ $^
$(TESTCASE2): $(TESTCASE2_SRCS)
$(CC) -o $@ $^
%.o: %.c
$(CC) $(FLAGS) -c $^ -o $@