chore: remove unneeded code; add throughput example
							parent
							
								
									6eab5d616c
								
							
						
					
					
						commit
						195eb9eb48
					
				
							
								
								
									
										2
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										2
									
								
								Makefile
								
								
								
								
							|  | @ -81,7 +81,7 @@ $(BUILD_DIR)/$(TEST_DIR)/%.c.o: $(TEST_DIR)/%.c | |||
| build-example: $(BINS_EXAMPLE) | ||||
| 
 | ||||
| $(BINS_EXAMPLE): %: %.c.o $(LIB) | ||||
| 	$(CC) \
 | ||||
| 	$(CC) $(LDFLAGS) \
 | ||||
| 		$^ -o $@ | ||||
| 
 | ||||
| # Example binaries link the resulting library
 | ||||
|  |  | |||
|  | @ -0,0 +1,53 @@ | |||
| #include "lnm/http/res.h" | ||||
| #include "lnm/log.h" | ||||
| #include "lnm/http/loop.h" | ||||
| #include "lnm/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_err data_streamer(uint64_t *written, char *buf, | ||||
|                                    lnm_http_conn *conn, uint64_t offset, | ||||
|                                    uint64_t len) { | ||||
|   // Don't do anything, just let the application return random data stored in
 | ||||
|   // the read buffer. The goal is to benchmark the networking pipeline
 | ||||
|   *written = len; | ||||
| 
 | ||||
|   return lnm_err_ok; | ||||
| } | ||||
| 
 | ||||
| lnm_http_step_err step_fn(lnm_http_conn *conn) { | ||||
|   lnm_http_loop_ctx *ctx = conn->ctx; | ||||
|   uint64_t len = 1 << 30; | ||||
|   lnm_http_res_body_set_fn(&ctx->res, data_streamer, len); | ||||
| 
 | ||||
|   return lnm_http_step_err_done; | ||||
| } | ||||
| 
 | ||||
| int main() { | ||||
|   lnm_http_loop *hl; | ||||
| 
 | ||||
|   lnm_http_loop_init(&hl, NULL, ctx_init, | ||||
|                      ctx_reset, | ||||
|                      ctx_free); | ||||
| 
 | ||||
|   lnm_http_router *router; | ||||
|   lnm_http_router_init(&router); | ||||
| 
 | ||||
|   lnm_http_route *route; | ||||
|   lnm_http_router_add(&route, router, lnm_http_method_get, "/"); | ||||
|   lnm_http_route_step_append(route, step_fn, false); | ||||
| 
 | ||||
|   lnm_http_loop_router_set(hl, router); | ||||
| 
 | ||||
|   lnm_log_init_global(); | ||||
|   lnm_log_register_stdout(lnm_log_level_warning); | ||||
| 
 | ||||
|   printf("res = %i\n", lnm_http_loop_run(hl, 8080, 1, 0)); | ||||
| } | ||||
|  | @ -40,7 +40,6 @@ typedef struct lnm_http_req { | |||
|   struct { | ||||
|     size_t o; | ||||
|     size_t len; | ||||
|     regmatch_t groups[LNM_HTTP_MAX_REGEX_GROUPS]; | ||||
|   } path; | ||||
|   struct { | ||||
|     size_t o; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue