Flecs v3.2
A fast entity component system (ECS) for C & C++
No Matches
http.h File Reference

HTTP addon. More...

Go to the source code of this file.


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
 A request. More...
struct  ecs_http_reply_t
 A reply. More...
struct  ecs_http_server_desc_t
 Used with ecs_http_server_init(). More...


#define FLECS_HTTP_H
#define ECS_HTTP_REPLY_INIT    (ecs_http_reply_t){200, ECS_STRBUF_INIT, "OK", "application/json", ECS_STRBUF_INIT}


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.


enum  ecs_http_method_t {
  EcsHttpGet , EcsHttpPost , EcsHttpPut , EcsHttpDelete ,
  EcsHttpOptions , EcsHttpMethodUnsupported
 Supported request methods. More...


FLECS_API ecs_http_server_tecs_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.


int64_t ecs_http_request_received_count
int64_t ecs_http_request_invalid_count
int64_t ecs_http_request_handled_ok_count
int64_t ecs_http_request_handled_error_count
int64_t ecs_http_request_not_handled_count
int64_t ecs_http_request_preflight_count
int64_t ecs_http_send_ok_count
int64_t ecs_http_send_error_count
int64_t ecs_http_busy_count

Detailed Description

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.