7#ifndef ZEPHYR_INCLUDE_NET_HTTP_SERVICE_H_
8#define ZEPHYR_INCLUDE_NET_HTTP_SERVICE_H_
41#define HTTP_RESOURCE_DEFINE(_name, _service, _resource, _detail) \
42 const STRUCT_SECTION_ITERABLE_ALTERNATE(http_resource_desc_##_service, http_resource_desc, \
44 .resource = _resource, \
45 .detail = (_detail), \
58#define __z_http_service_define(_name, _host, _port, _concurrent, _backlog, _detail, _res_begin, \
60 static const STRUCT_SECTION_ITERABLE(http_service_desc, _name) = { \
62 .port = (uint16_t *)(_port), \
63 .detail = (void *)(_detail), \
64 .concurrent = (_concurrent), \
65 .backlog = (_backlog), \
66 .res_begin = (_res_begin), \
67 .res_end = (_res_end), \
88#define HTTP_SERVICE_DEFINE_EMPTY(_name, _host, _port, _concurrent, _backlog, _detail) \
89 __z_http_service_define(_name, _host, _port, _concurrent, _backlog, _detail, NULL, NULL)
109#define HTTP_SERVICE_DEFINE(_name, _host, _port, _concurrent, _backlog, _detail) \
110 extern struct http_resource_desc _CONCAT(_http_resource_desc_##_name, _list_start)[]; \
111 extern struct http_resource_desc _CONCAT(_http_resource_desc_##_name, _list_end)[]; \
112 __z_http_service_define(_name, _host, _port, _concurrent, _backlog, _detail, \
113 &_CONCAT(_http_resource_desc_##_name, _list_start)[0], \
114 &_CONCAT(_http_resource_desc_##_name, _list_end)[0])
121#define HTTP_SERVICE_COUNT(_dst) STRUCT_SECTION_COUNT(http_service_desc, _dst)
128#define HTTP_SERVICE_RESOURCE_COUNT(_service) ((_service)->res_end - (_service)->res_begin)
135#define HTTP_SERVICE_FOREACH(_it) STRUCT_SECTION_FOREACH(http_service_desc, _it)
145#define HTTP_RESOURCE_FOREACH(_service, _it) \
146 STRUCT_SECTION_FOREACH_ALTERNATE(http_resource_desc_##_service, http_resource_desc, _it)
157#define HTTP_SERVICE_FOREACH_RESOURCE(_service, _it) \
158 for (struct http_resource_desc *_it = (_service)->res_begin; ({ \
159 __ASSERT(_it <= (_service)->res_end, "unexpected list end location"); \
160 _it < (_service)->res_end; \
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
const char * resource
Definition service.h:20
void * detail
Definition service.h:21
uint16_t * port
Definition service.h:50
struct http_resource_desc * res_begin
Definition service.h:54
const char * host
Definition service.h:49
struct http_resource_desc * res_end
Definition service.h:55
void * detail
Definition service.h:51
size_t concurrent
Definition service.h:52
size_t backlog
Definition service.h:53