void http_router_delete(struct http_router *router) { if (!router) return; for (size_t i = 0; i < c_ptr_vector_length(router->routes); i++) http_route_delete(c_ptr_vector_entry(router->routes, i)); c_ptr_vector_delete(router->routes); c_free0(router, sizeof(struct http_router)); }
void http_route_base_delete(struct http_route_base *base) { if (!base) return; for (size_t i = 0; i < base->nb_routes; i++) http_route_delete(base->routes[i]); http_free(base->routes); memset(base, 0, sizeof(struct http_route_base)); http_free(base); }
struct http_route * http_route_new(enum http_method method, const char *path, http_msg_handler msg_handler) { struct http_route *route; route = http_malloc0(sizeof(struct http_route)); route->method = method; route->path = http_strdup(path); route->msg_handler = msg_handler; if (http_route_components_parse(path, &route->components, &route->nb_components) == -1) { http_route_delete(route); return NULL; } return route; }