chore: add example for testing blocking tasks

Jef Roosens 2024-01-31 08:38:13 +01:00
parent f78738ca92
commit d2972561e2
Signed by: Jef Roosens
GPG Key ID: B75D4F293C7052DB
5 changed files with 53 additions and 0 deletions

5
.editorconfig 100644
View File

@ -0,0 +1,5 @@
root = true
[*.{c,cpp,h}]
indent_style = space
indent_size = 2

3
.gitignore vendored
View File

@ -1,2 +1,5 @@
build/ build/
.cache/ .cache/
compile_commands.json
.cache/
vgcore.*

View File

@ -9,14 +9,20 @@ SRCS != find '$(SRC_DIR)' -iname '*.c'
SRCS_H != find include -iname '*.h' SRCS_H != find include -iname '*.h'
SRCS_H_INTERNAL != find $(SRC_DIR) -iname '*.h' SRCS_H_INTERNAL != find $(SRC_DIR) -iname '*.h'
SRCS_TEST != find '$(TEST_DIR)' -iname '*.c' SRCS_TEST != find '$(TEST_DIR)' -iname '*.c'
SRCS_EXAMPLE != find '$(EXAMPLE_DIR)' -iname '*.c'
OBJS := $(SRCS:%=$(BUILD_DIR)/%.o) OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)
OBJS_TEST := $(SRCS_TEST:%=$(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) DEPS := $(SRCS:%=$(BUILD_DIR)/%.d) $(SRCS_TEST:%=$(BUILD_DIR)/%.d)
BINS_TEST := $(OBJS_TEST:%.c.o=%) BINS_TEST := $(OBJS_TEST:%.c.o=%)
BINS_EXAMPLE := $(OBJS_EXAMPLE:%.c.o=%)
TARGETS_TEST := $(BINS_TEST:%=test-%) TARGETS_TEST := $(BINS_TEST:%=test-%)
TARGETS_MEM_TEST := $(BINS_TEST:%=test-mem-%) TARGETS_MEM_TEST := $(BINS_TEST:%=test-mem-%)
TARGETS_EXAMPLE := $(BINS_EXAMPLE:%=example-%)
_CFLAGS := $(addprefix -I,$(INC_DIRS)) $(CFLAGS) -Wall -Wextra _CFLAGS := $(addprefix -I,$(INC_DIRS)) $(CFLAGS) -Wall -Wextra

View File

@ -3,6 +3,7 @@ LIB_FILENAME = liblnm.a
BUILD_DIR = build BUILD_DIR = build
SRC_DIR = src SRC_DIR = src
TEST_DIR = test TEST_DIR = test
EXAMPLE_DIR = example
THIRDPARTY = src/picohttpparser.c include/picohttpparser.h THIRDPARTY = src/picohttpparser.c include/picohttpparser.h
PUB_INC_DIR = include PUB_INC_DIR = include

38
example/blocking.c 100644
View File

@ -0,0 +1,38 @@
#include <unistd.h>
#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);
}