Flecs v4.0
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
http.h File Reference

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_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.
 

Variables

int64_t ecs_http_request_received_count
 Total number of HTTP requests received.
 
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.
 

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.