36#ifndef PROTOCORE_SPA_ROUTER_H
37#define PROTOCORE_SPA_ROUTER_H
41#if PROTOCORE_ENABLE_SPA_ROUTER
52 PROTOCORE_SPA_SERVE_FILE,
53 PROTOCORE_SPA_SERVE_SHELL,
54 PROTOCORE_SPA_PASSTHROUGH,
55 PROTOCORE_SPA_SERVE_FALLBACK,
56} protocore_spa_action;
61 const char *api_prefix;
68typedef proto_bool (*protocore_ui_when_fn)(
void *ctx);
75 protocore_ui_when_fn when;
76} protocore_ui_fragment;
81 const protocore_ui_fragment *frags;
93} SpaRouterHasExtensionArgs;
99 const char *api_prefix;
106 const protocore_spa_ctx *ctx;
107} SpaRouterRouteExArgs;
112 protocore_ui_stream *s;
113 const protocore_ui_fragment *frags;
116} SpaRouterUiStreamBeginArgs;
121 protocore_ui_stream *s;
124} SpaRouterUiStreamNextArgs;
129 const protocore_ui_stream *s;
130} SpaRouterUiStreamDoneArgs;
165 SpaRouterHasExtensionArgs has_extension_args;
166 SpaRouterRouteArgs route_args;
167 SpaRouterRouteExArgs route_ex_args;
168 SpaRouterUiStreamBeginArgs ui_stream_begin_args;
169 SpaRouterUiStreamNextArgs ui_stream_next_args;
170 SpaRouterUiStreamDoneArgs ui_stream_done_args;
172 protocore_spa_action action;
177extern SpaRouterVars SpaRouterV;
182 void (*
const has_extension)(uint8_t *work);
183 void (*
const route)(uint8_t *work);
184 void (*
const route_ex)(uint8_t *work);
185 void (*
const ui_stream_begin)(uint8_t *work);
186 void (*
const ui_stream_next)(uint8_t *work);
187 void (*
const ui_stream_done)(uint8_t *work);
192void protocore_spa_router_has_extension(uint8_t *work);
193void protocore_spa_router_route(uint8_t *work);
194void protocore_spa_router_route_ex(uint8_t *work);
195void protocore_spa_router_ui_stream_begin(uint8_t *work);
196void protocore_spa_router_ui_stream_next(uint8_t *work);
197void protocore_spa_router_ui_stream_done(uint8_t *work);
203static const SpaRouterNs SpaRouter __attribute__((unused)) = {
204 .has_extension = protocore_spa_router_has_extension,
205 .route = protocore_spa_router_route,
206 .route_ex = protocore_spa_router_route_ex,
207 .ui_stream_begin = protocore_spa_router_ui_stream_begin,
208 .ui_stream_next = protocore_spa_router_ui_stream_next,
209 .ui_stream_done = protocore_spa_router_ui_stream_done,
PROTO_ENUM_PACKED
Application protocol spoken on a listener port or connection slot.
#define PROTOCORE_BEGIN_DECLS
Give a header's declarations C linkage, so their symbol names carry no parameter types.
_Bool proto_bool
The truth value.
#define PROTOCORE_END_DECLS