37 lines
No EOL
1.1 KiB
C
37 lines
No EOL
1.1 KiB
C
#pragma once
|
|
|
|
#include "collatypes.h"
|
|
#include "str.h"
|
|
#include "http.h"
|
|
|
|
typedef struct arena_t arena_t;
|
|
typedef struct server_t server_t;
|
|
|
|
typedef struct server_field_t {
|
|
str_t key;
|
|
str_t value;
|
|
struct server_field_t *next;
|
|
} server_field_t;
|
|
|
|
typedef struct {
|
|
http_method_e method;
|
|
str_t page;
|
|
server_field_t *page_fields;
|
|
uint8 version_minor;
|
|
uint8 version_major;
|
|
server_field_t *fields;
|
|
server_field_t *fields_tail;
|
|
// buffer_t body;
|
|
} server_req_t;
|
|
|
|
typedef str_t (*server_route_f)(arena_t scratch, server_t *server, server_req_t *req, void *userdata);
|
|
|
|
server_t *serverSetup(arena_t *arena, uint16 port, bool try_next_port);
|
|
void serverRoute(arena_t *arena, server_t *server, strview_t page, server_route_f cb, void *userdata);
|
|
void serverRouteDefault(arena_t *arena, server_t *server, server_route_f cb, void *userdata);
|
|
void serverStart(arena_t scratch, server_t *server);
|
|
void serverStop(server_t *server);
|
|
|
|
str_t serverMakeResponse(arena_t *arena, int status_code, strview_t content_type, strview_t body);
|
|
socket_t serverGetClient(server_t *server);
|
|
void serverSetClient(server_t *server, socket_t client); |