Files
PixelDefense/engine/libs/flecs/include/flecs/addons/rest.h

110 lines
2.4 KiB
C

/**
* @file addons/rest.h
* @brief REST API addon.
*
* A small REST API that uses the HTTP server and JSON serializer to provide
* access to application data for remote applications.
*
* A description of the API can be found in docs/RestApi.md
*/
#ifdef FLECS_REST
/**
* @defgroup c_addons_rest Rest
* @brief REST API for querying and mutating entities.
*
* \ingroup c_addons
* @{
*/
/* Used for the HTTP server */
#ifndef FLECS_HTTP
#define FLECS_HTTP
#endif
/* Used for building the JSON replies */
#ifndef FLECS_JSON
#define FLECS_JSON
#endif
/* Query engine used */
#ifndef FLECS_RULES
#define FLECS_RULES
#endif
/* For the REST system */
#ifndef FLECS_PIPELINE
#define FLECS_PIPELINE
#endif
#ifndef FLECS_REST_H
#define FLECS_REST_H
#ifdef __cplusplus
extern "C" {
#endif
#define ECS_REST_DEFAULT_PORT (27750)
/** Component that instantiates the REST API */
FLECS_API extern const ecs_entity_t ecs_id(EcsRest);
typedef struct {
uint16_t port; /**< Port of server (optional, default = 27750) */
char *ipaddr; /**< Interface address (optional, default = 0.0.0.0) */
void *impl;
} EcsRest;
/* Global statistics */
extern int64_t ecs_rest_request_count;
extern int64_t ecs_rest_entity_count;
extern int64_t ecs_rest_entity_error_count;
extern int64_t ecs_rest_query_count;
extern int64_t ecs_rest_query_error_count;
extern int64_t ecs_rest_query_name_count;
extern int64_t ecs_rest_query_name_error_count;
extern int64_t ecs_rest_query_name_from_cache_count;
extern int64_t ecs_rest_enable_count;
extern int64_t ecs_rest_enable_error_count;
extern int64_t ecs_rest_delete_count;
extern int64_t ecs_rest_delete_error_count;
extern int64_t ecs_rest_world_stats_count;
extern int64_t ecs_rest_pipeline_stats_count;
extern int64_t ecs_rest_stats_error_count;
/** Create HTTP server for REST API.
* This allows for the creation of a REST server that can be managed by the
* application without using Flecs systems.
*
* @param world The world.
* @param desc The HTTP server descriptor.
* @return The HTTP server, or NULL if failed.
*/
FLECS_API
ecs_http_server_t* ecs_rest_server_init(
ecs_world_t *world,
const ecs_http_server_desc_t *desc);
/** Cleanup REST HTTP server.
* The server must have been created with ecs_rest_server_init.
*/
FLECS_API
void ecs_rest_server_fini(
ecs_http_server_t *srv);
/* Module import */
FLECS_API
void FlecsRestImport(
ecs_world_t *world);
#ifdef __cplusplus
}
#endif
#endif
/** @} */
#endif