jf-framework
Loading...
Searching...
No Matches
router.h
Go to the documentation of this file.
1
6
7#ifndef JF_FRAMEWORK_ROUTER_H
8#define JF_FRAMEWORK_ROUTER_H
9
10#include <export.h>
11#include <http.h>
12#include <stdint.h>
13
14#define MAX_MIDDLEWARE 32
15#define MAX_ROUTES 128
16
17typedef int (*middleware_t)(const HttpRequest* request, HttpResponse* response); // return 0 = stop, 1 = continue
18typedef void (*route_handler_t)(const HttpRequest* request, HttpResponse* response);
19
20typedef struct {
21 char method[8];
22 char path[256];
23 route_handler_t handler;
24} Route;
25
26typedef struct {
27 Route routes[MAX_ROUTES];
28 uint32_t routeCount;
29 middleware_t middleware[MAX_MIDDLEWARE];
30 uint32_t middlewareCount;
31} Router;
32
33JF_EXPORT void jf_RouterDestroy(Router* router);
34JF_EXPORT uint32_t jf_RouterAdd(Router* router, const char* method, const char* path, route_handler_t handler);
35uint32_t jf_RouterDispatch(Router* router, HttpRequest* httpRequest, HttpResponse* httpResponse);
36JF_EXPORT Router* jf_CreateRouter(void);
37JF_EXPORT uint32_t jf_RouterUse(Router* router, middleware_t middleware);
38
39#endif
Router * jf_CreateRouter(void)
Allocates and creates router object.
Definition router.c:67
uint32_t jf_RouterUse(Router *router, middleware_t middleware)
Adds middleware to router.
Definition router.c:215
uint32_t jf_RouterAdd(Router *router, const char *method, const char *path, route_handler_t handler)
Adds route to router.
Definition router.c:37
void jf_RouterDestroy(Router *router)
Cleans up router object.
Definition router.c:23
uint32_t jf_RouterDispatch(Router *router, HttpRequest *httpRequest, HttpResponse *httpResponse)
Handles routes.
Definition router.c:178
Definition http.h:55
Definition http.h:77
Definition router.h:20
Definition router.h:26