From 854e8c3809bf97a3c395525d15b8a3fe00e89005 Mon Sep 17 00:00:00 2001 From: Chewing_Bever Date: Wed, 31 Jan 2024 08:38:13 +0100 Subject: [PATCH] chore: add example for testing blocking tasks --- .editorconfig | 5 +++++ .gitignore | 3 +++ Makefile | 6 ++++++ config.mk | 1 + example/blocking.c | 38 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 53 insertions(+) create mode 100644 .editorconfig create mode 100644 example/blocking.c diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..09faabf --- /dev/null +++ b/.editorconfig @@ -0,0 +1,5 @@ +root = true + +[*.{c,cpp,h}] +indent_style = space +indent_size = 2 diff --git a/.gitignore b/.gitignore index a4fb4fb..dd72998 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ build/ .cache/ +compile_commands.json +.cache/ +vgcore.* diff --git a/Makefile b/Makefile index 38b2b4a..5fb194f 100644 --- a/Makefile +++ b/Makefile @@ -9,14 +9,20 @@ SRCS != find '$(SRC_DIR)' -iname '*.c' SRCS_H != find include -iname '*.h' SRCS_H_INTERNAL != find $(SRC_DIR) -iname '*.h' SRCS_TEST != find '$(TEST_DIR)' -iname '*.c' +SRCS_EXAMPLE != find '$(EXAMPLE_DIR)' -iname '*.c' OBJS := $(SRCS:%=$(BUILD_DIR)/%.o) OBJS_TEST := $(SRCS_TEST:%=$(BUILD_DIR)/%.o) +OBJS_EXAMPLE := $(SRCS_EXAMPLE:%=$(BUILD_DIR)/%.o) + DEPS := $(SRCS:%=$(BUILD_DIR)/%.d) $(SRCS_TEST:%=$(BUILD_DIR)/%.d) BINS_TEST := $(OBJS_TEST:%.c.o=%) +BINS_EXAMPLE := $(OBJS_EXAMPLE:%.c.o=%) + TARGETS_TEST := $(BINS_TEST:%=test-%) TARGETS_MEM_TEST := $(BINS_TEST:%=test-mem-%) +TARGETS_EXAMPLE := $(BINS_EXAMPLE:%=example-%) _CFLAGS := $(addprefix -I,$(INC_DIRS)) $(CFLAGS) -Wall -Wextra diff --git a/config.mk b/config.mk index 7e55aff..4345382 100644 --- a/config.mk +++ b/config.mk @@ -3,6 +3,7 @@ LIB_FILENAME = liblnm.a BUILD_DIR = build SRC_DIR = src TEST_DIR = test +EXAMPLE_DIR = example THIRDPARTY = src/picohttpparser.c include/picohttpparser.h PUB_INC_DIR = include diff --git a/example/blocking.c b/example/blocking.c new file mode 100644 index 0000000..9b395b4 --- /dev/null +++ b/example/blocking.c @@ -0,0 +1,38 @@ +#include + +#include "lnm/log.h" +#include "lnm/http/loop.h" + +lnm_err ctx_init(void **c_ctx, void *gctx) { + *c_ctx = NULL; + + return lnm_err_ok; +} + +void ctx_reset(void *c_ctx) {} +void ctx_free(void *c_ctx) {} + +lnm_http_step_err slow_step(lnm_http_conn *conn) { + sleep(1); + + return lnm_http_step_err_done; +} + +int main() { + lnm_http_loop *hl; + lnm_http_step *step = NULL; + lnm_http_route *route; + + lnm_http_loop_init(&hl, NULL, ctx_init, + ctx_reset, + ctx_free); + + lnm_http_step_init(&step, slow_step); + lnm_http_route_init_literal(&route, lnm_http_method_get, "/", step); + lnm_http_loop_route_add(hl, route); + + lnm_log_init_global(); + lnm_log_register_stdout(lnm_log_level_debug); + + lnm_http_loop_run(hl, 8080, 1); +}