Flecs v4.0
A fast entity component system (ECS) for C & C++
|
HTTP addon. More...
Go to the source code of this file.
Classes | |
struct | ecs_http_connection_t |
A connection manages communication with the remote host. More... | |
struct | ecs_http_key_value_t |
Helper type used for headers & URL query parameters. More... | |
struct | ecs_http_request_t |
An HTTP request. More... | |
struct | ecs_http_reply_t |
An HTTP reply. More... | |
struct | ecs_http_server_desc_t |
Used with ecs_http_server_init(). More... | |
Macros | |
#define | FLECS_HTTP_H |
#define | ECS_HTTP_HEADER_COUNT_MAX (32) |
Maximum number of headers in request. | |
#define | ECS_HTTP_QUERY_PARAM_COUNT_MAX (32) |
Maximum number of query parameters in request. | |
#define | ECS_HTTP_REPLY_INIT (ecs_http_reply_t){200, ECS_STRBUF_INIT, "OK", "application/json", ECS_STRBUF_INIT} |
Typedefs | |
typedef struct ecs_http_server_t | ecs_http_server_t |
HTTP server. | |
typedef bool(* | ecs_http_reply_action_t) (const ecs_http_request_t *request, ecs_http_reply_t *reply, void *ctx) |
Request callback. | |
Enumerations | |
enum | ecs_http_method_t { EcsHttpGet , EcsHttpPost , EcsHttpPut , EcsHttpDelete , EcsHttpOptions , EcsHttpMethodUnsupported } |
Supported request methods. More... | |
Functions | |
FLECS_API ecs_http_server_t * | ecs_http_server_init (const ecs_http_server_desc_t *desc) |
Create server. | |
FLECS_API void | ecs_http_server_fini (ecs_http_server_t *server) |
Destroy server. | |
FLECS_API int | ecs_http_server_start (ecs_http_server_t *server) |
Start server. | |
FLECS_API void | ecs_http_server_dequeue (ecs_http_server_t *server, ecs_ftime_t delta_time) |
Process server requests. | |
FLECS_API void | ecs_http_server_stop (ecs_http_server_t *server) |
Stop server. | |
FLECS_API int | ecs_http_server_http_request (ecs_http_server_t *srv, const char *req, ecs_size_t len, ecs_http_reply_t *reply_out) |
Emulate a request. | |
FLECS_API int | ecs_http_server_request (ecs_http_server_t *srv, const char *method, const char *req, ecs_http_reply_t *reply_out) |
Convenience wrapper around ecs_http_server_http_request(). | |
FLECS_API void * | ecs_http_server_ctx (ecs_http_server_t *srv) |
Get context provided in ecs_http_server_desc_t. | |
FLECS_API const char * | ecs_http_get_header (const ecs_http_request_t *req, const char *name) |
Find header in request. | |
FLECS_API const char * | ecs_http_get_param (const ecs_http_request_t *req, const char *name) |
Find query parameter in request. | |
HTTP addon.
Minimalistic HTTP server that can receive and reply to simple HTTP requests. The main goal of this addon is to enable remotely connecting to a running Flecs application (for example, with a web-based UI) and request/visualize data from the ECS world.
Each server instance creates a single thread used for receiving requests. Receiving requests are enqueued and handled when the application calls ecs_http_server_dequeue(). This increases latency of request handling vs. responding directly in the receive thread, but is better suited for retrieving data from ECS applications, as requests can be processed by an ECS system without having to lock the world.
This server is intended to be used in a development environment.
Definition in file http.h.