![]() |
Flecs v4.1
A fast entity component system (ECS) for C & C++
|
Simple HTTP server used for serving up the REST API. More...
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 and 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 a request. | |
| #define | ECS_HTTP_QUERY_PARAM_COUNT_MAX (32) |
| Maximum number of query parameters in a request. | |
| #define | ECS_HTTP_REPLY_INIT (ecs_http_reply_t){200, ECS_STRBUF_INIT, "OK", "application/json", ECS_STRBUF_INIT} |
| Default initializer for ecs_http_reply_t. | |
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 a server. | |
| FLECS_API void | ecs_http_server_fini (ecs_http_server_t *server) |
| Destroy a server. | |
| FLECS_API int | ecs_http_server_start (ecs_http_server_t *server) |
| Start a 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 a 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, const char *body, 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 a header in a request. | |
| FLECS_API const char * | ecs_http_get_param (const ecs_http_request_t *req, const char *name) |
| Find a query parameter in a request. | |
Variables | |
| int64_t | ecs_http_request_received_count |
| Global HTTP statistics. | |
| int64_t | ecs_http_request_invalid_count |
| Total number of invalid HTTP requests. | |
| int64_t | ecs_http_request_handled_ok_count |
| Total number of successful HTTP requests. | |
| int64_t | ecs_http_request_handled_error_count |
| Total number of HTTP requests with errors. | |
| int64_t | ecs_http_request_not_handled_count |
| Total number of HTTP requests with an unknown endpoint. | |
| int64_t | ecs_http_request_preflight_count |
| Total number of preflight HTTP requests received. | |
| int64_t | ecs_http_send_ok_count |
| Total number of HTTP replies successfully sent. | |
| int64_t | ecs_http_send_error_count |
| Total number of HTTP replies that failed to send. | |
| int64_t | ecs_http_busy_count |
| Total number of HTTP busy replies. | |
Simple HTTP server used for serving up the REST API.
| #define ECS_HTTP_HEADER_COUNT_MAX (32) |
| #define ECS_HTTP_QUERY_PARAM_COUNT_MAX (32) |
| #define ECS_HTTP_REPLY_INIT (ecs_http_reply_t){200, ECS_STRBUF_INIT, "OK", "application/json", ECS_STRBUF_INIT} |
Default initializer for ecs_http_reply_t.
| typedef bool(* ecs_http_reply_action_t) (const ecs_http_request_t *request, ecs_http_reply_t *reply, void *ctx) |
| typedef struct ecs_http_server_t ecs_http_server_t |
| enum ecs_http_method_t |
| FLECS_API const char * ecs_http_get_header | ( | const ecs_http_request_t * | req, |
| const char * | name ) |
Find a header in a request.
| req | The request. |
| name | Name of the header to find. |
| FLECS_API const char * ecs_http_get_param | ( | const ecs_http_request_t * | req, |
| const char * | name ) |
Find a query parameter in a request.
| req | The request. |
| name | The parameter name. |
| FLECS_API void * ecs_http_server_ctx | ( | ecs_http_server_t * | srv | ) |
| FLECS_API void ecs_http_server_dequeue | ( | ecs_http_server_t * | server, |
| ecs_ftime_t | delta_time ) |
Process server requests.
This operation invokes the reply callback for each received request. No new requests will be enqueued while processing requests.
| server | The server for which to process requests. |
| delta_time | The time passed since the last call to dequeue. |
| FLECS_API void ecs_http_server_fini | ( | ecs_http_server_t * | server | ) |
Destroy a server.
This operation will stop the server if it was still running.
| server | The server to destroy. |
| 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.
The request string must be a valid HTTP request. A minimal example:
GET /entity/flecs/core/World?label=true HTTP/1.1
| srv | The server. |
| req | The request. |
| len | The length of the request (optional). |
| reply_out | The reply (out parameter). |
| FLECS_API ecs_http_server_t * ecs_http_server_init | ( | const ecs_http_server_desc_t * | desc | ) |
Create a server.
Use ecs_http_server_start() to start receiving requests.
| desc | Server configuration parameters. |
| FLECS_API int ecs_http_server_request | ( | ecs_http_server_t * | srv, |
| const char * | method, | ||
| const char * | req, | ||
| const char * | body, | ||
| ecs_http_reply_t * | reply_out ) |
Convenience wrapper around ecs_http_server_http_request().
| srv | The server. |
| method | The HTTP method (e.g., "GET"). |
| req | The request path. |
| body | The request body (optional). |
| reply_out | The reply (out parameter). |
| FLECS_API int ecs_http_server_start | ( | ecs_http_server_t * | server | ) |
Start a server.
After this operation, the server will be able to accept requests.
| server | The server to start. |
| FLECS_API void ecs_http_server_stop | ( | ecs_http_server_t * | server | ) |
Stop a server.
After this operation, no new requests can be received.
| server | The server. |
|
extern |
Global HTTP statistics.
Total number of HTTP requests received.