12#ifndef ANJ_NET_WRAPPER_H
13# define ANJ_NET_WRAPPER_H
16# ifdef ANJ_NET_WITH_UDP
19# ifdef ANJ_NET_WITH_TCP
22# ifdef ANJ_WITH_DTLS_BINDING
25# ifdef ANJ_WITH_TLS_BINDING
28# ifdef ANJ_WITH_NON_IP_BINDING
40# if defined(ANJ_NET_WITH_UDP)
44# if defined(ANJ_NET_WITH_TCP)
48# if defined(ANJ_WITH_DTLS_BINDING)
50 return anj_dtls_get_system_socket(ctx);
52# if defined(ANJ_WITH_TLS_BINDING)
54 return anj_tls_get_system_socket(ctx);
56# if defined(ANJ_WITH_NON_IP_BINDING)
58 return anj_non_ip_get_system_socket(ctx);
70# if defined(ANJ_NET_WITH_UDP)
74# if defined(ANJ_NET_WITH_TCP)
78# if defined(ANJ_WITH_DTLS_BINDING)
80 return anj_dtls_create_ctx(ctx, config);
82# if defined(ANJ_WITH_TLS_BINDING)
84 return anj_tls_create_ctx(ctx, config);
86# if defined(ANJ_WITH_NON_IP_BINDING)
88 return anj_non_ip_create_ctx(ctx, config);
101# if defined(ANJ_NET_WITH_UDP)
105# if defined(ANJ_NET_WITH_TCP)
109# if defined(ANJ_WITH_DTLS_BINDING)
111 return anj_dtls_connect(ctx, hostname, port);
113# if defined(ANJ_WITH_TLS_BINDING)
115 return anj_tls_connect(ctx, hostname, port);
117# if defined(ANJ_WITH_NON_IP_BINDING)
119 return anj_non_ip_connect(ctx, hostname, port);
133# if defined(ANJ_NET_WITH_UDP)
137# if defined(ANJ_NET_WITH_TCP)
141# if defined(ANJ_WITH_DTLS_BINDING)
143 return anj_dtls_send(ctx, bytes_sent, buf, length);
145# if defined(ANJ_WITH_TLS_BINDING)
147 return anj_tls_send(ctx, bytes_sent, buf, length);
149# if defined(ANJ_WITH_NON_IP_BINDING)
151 return anj_non_ip_send(ctx, bytes_sent, buf, length);
161 size_t *bytes_received,
165# if defined(ANJ_NET_WITH_UDP)
169# if defined(ANJ_NET_WITH_TCP)
173# if defined(ANJ_WITH_DTLS_BINDING)
175 return anj_dtls_recv(ctx, bytes_received, buf, length);
177# if defined(ANJ_WITH_TLS_BINDING)
179 return anj_tls_recv(ctx, bytes_received, buf, length);
181# if defined(ANJ_WITH_NON_IP_BINDING)
183 return anj_non_ip_recv(ctx, bytes_received, buf, length);
194# if defined(ANJ_NET_WITH_UDP)
198# if defined(ANJ_NET_WITH_TCP)
202# if defined(ANJ_WITH_DTLS_BINDING)
204 return anj_dtls_close(ctx);
206# if defined(ANJ_WITH_TLS_BINDING)
208 return anj_tls_close(ctx);
210# if defined(ANJ_WITH_NON_IP_BINDING)
212 return anj_non_ip_close(ctx);
223# if defined(ANJ_NET_WITH_UDP)
227# if defined(ANJ_NET_WITH_TCP)
231# if defined(ANJ_WITH_DTLS_BINDING)
233 return anj_dtls_shutdown(ctx);
235# if defined(ANJ_WITH_TLS_BINDING)
237 return anj_tls_shutdown(ctx);
239# if defined(ANJ_WITH_NON_IP_BINDING)
241 return anj_non_ip_shutdown(ctx);
252# if defined(ANJ_NET_WITH_UDP)
256# if defined(ANJ_NET_WITH_TCP)
260# if defined(ANJ_WITH_DTLS_BINDING)
262 return anj_dtls_cleanup_ctx(ctx);
264# if defined(ANJ_WITH_TLS_BINDING)
266 return anj_tls_cleanup_ctx(ctx);
268# if defined(ANJ_WITH_NON_IP_BINDING)
270 return anj_non_ip_cleanup_ctx(ctx);
281# if defined(ANJ_NET_WITH_UDP)
285# if defined(ANJ_NET_WITH_TCP)
289# if defined(ANJ_WITH_DTLS_BINDING)
291 return anj_dtls_reuse_last_port(ctx);
293# if defined(ANJ_WITH_TLS_BINDING)
295 return anj_tls_reuse_last_port(ctx);
297# if defined(ANJ_WITH_NON_IP_BINDING)
309 uint64_t *out_value) {
311# if defined(ANJ_NET_WITH_UDP)
315# if defined(ANJ_NET_WITH_TCP)
319# if defined(ANJ_WITH_DTLS_BINDING)
321 return anj_dtls_get_bytes_received(ctx, out_value);
323# if defined(ANJ_WITH_TLS_BINDING)
325 return anj_tls_get_bytes_received(ctx, out_value);
327# if defined(ANJ_WITH_NON_IP_BINDING)
329 return anj_non_ip_get_bytes_received(ctx, out_value);
339 uint64_t *out_value) {
341# if defined(ANJ_NET_WITH_UDP)
345# if defined(ANJ_NET_WITH_TCP)
349# if defined(ANJ_WITH_DTLS_BINDING)
351 return anj_dtls_bytes_sent(ctx, out_value);
353# if defined(ANJ_WITH_TLS_BINDING)
355 return anj_tls_bytes_sent(ctx, out_value);
357# if defined(ANJ_WITH_NON_IP_BINDING)
359 return anj_non_ip_get_bytes_sent(ctx, out_value);
369 int32_t *out_value) {
371# if defined(ANJ_NET_WITH_UDP)
375# if defined(ANJ_NET_WITH_TCP)
379# if defined(ANJ_WITH_DTLS_BINDING)
381 return anj_dtls_get_inner_mtu(ctx, out_value);
383# if defined(ANJ_WITH_TLS_BINDING)
385 return anj_tls_get_inner_mtu(ctx, out_value);
387# if defined(ANJ_WITH_NON_IP_BINDING)
389 return anj_non_ip_get_inner_mtu(ctx, out_value);
401# if defined(ANJ_NET_WITH_UDP)
405# if defined(ANJ_NET_WITH_TCP)
409# if defined(ANJ_WITH_DTLS_BINDING)
411 return anj_dtls_get_state(ctx, out_value);
413# if defined(ANJ_WITH_TLS_BINDING)
415 return anj_tls_get_state(ctx, out_value);
417# if defined(ANJ_WITH_NON_IP_BINDING)
419 return anj_non_ip_get_state(ctx, out_value);
#define ANJ_NET_ENOTSUP
Definition anj_net_api.h:56
anj_net_binding_type_t
Definition anj_net_api.h:58
@ ANJ_NET_BINDING_TCP
Definition anj_net_api.h:60
@ ANJ_NET_BINDING_TLS
Definition anj_net_api.h:62
@ ANJ_NET_BINDING_NON_IP
Definition anj_net_api.h:63
@ ANJ_NET_BINDING_DTLS
Definition anj_net_api.h:61
@ ANJ_NET_BINDING_UDP
Definition anj_net_api.h:59
struct anj_net_ctx_struct anj_net_ctx_t
Definition anj_net_api.h:386
anj_net_socket_state_t
Definition anj_net_api.h:66
static int anj_net_get_bytes_sent(anj_net_binding_type_t type, anj_net_ctx_t *ctx, uint64_t *out_value)
Definition anj_net_wrapper.h:337
static int anj_net_get_bytes_received(anj_net_binding_type_t type, anj_net_ctx_t *ctx, uint64_t *out_value)
Definition anj_net_wrapper.h:307
static int anj_net_get_state(anj_net_binding_type_t type, anj_net_ctx_t *ctx, anj_net_socket_state_t *out_value)
Definition anj_net_wrapper.h:397
static const void * anj_net_get_system_socket(anj_net_binding_type_t type, anj_net_ctx_t *ctx)
Definition anj_net_wrapper.h:37
static int anj_net_create_ctx(anj_net_binding_type_t type, anj_net_ctx_t **ctx, const anj_net_config_t *config)
Definition anj_net_wrapper.h:66
static int anj_net_shutdown(anj_net_binding_type_t type, anj_net_ctx_t *ctx)
Definition anj_net_wrapper.h:220
static int anj_net_cleanup_ctx(anj_net_binding_type_t type, anj_net_ctx_t **ctx)
Definition anj_net_wrapper.h:249
static int anj_net_connect(anj_net_binding_type_t type, anj_net_ctx_t *ctx, const char *hostname, const char *port)
Definition anj_net_wrapper.h:96
static int anj_net_close(anj_net_binding_type_t type, anj_net_ctx_t *ctx)
Definition anj_net_wrapper.h:191
static int anj_net_recv(anj_net_binding_type_t type, anj_net_ctx_t *ctx, size_t *bytes_received, uint8_t *buf, size_t length)
Definition anj_net_wrapper.h:159
static int anj_net_get_inner_mtu(anj_net_binding_type_t type, anj_net_ctx_t *ctx, int32_t *out_value)
Definition anj_net_wrapper.h:367
static int anj_net_send(anj_net_binding_type_t type, anj_net_ctx_t *ctx, size_t *bytes_sent, const uint8_t *buf, size_t length)
Definition anj_net_wrapper.h:127
static int anj_net_reuse_last_port(anj_net_binding_type_t type, anj_net_ctx_t *ctx)
Definition anj_net_wrapper.h:278
anj_net_recv_t anj_tcp_recv
Definition anj_tcp.h:28
anj_net_get_state_t anj_tcp_get_state
Definition anj_tcp.h:36
anj_net_connect_t anj_tcp_connect
Definition anj_tcp.h:25
anj_net_create_ctx_t anj_tcp_create_ctx
Definition anj_tcp.h:26
anj_net_get_system_socket_t anj_tcp_get_system_socket
Definition anj_tcp.h:23
anj_net_get_bytes_sent_t anj_tcp_get_bytes_sent
Definition anj_tcp.h:34
anj_net_get_inner_mtu_t anj_tcp_get_inner_mtu
Definition anj_tcp.h:35
anj_net_close_t anj_tcp_close
Definition anj_tcp.h:24
anj_net_get_bytes_received_t anj_tcp_get_bytes_received
Definition anj_tcp.h:33
anj_net_shutdown_t anj_tcp_shutdown
Definition anj_tcp.h:29
anj_net_send_t anj_tcp_send
Definition anj_tcp.h:27
anj_net_reuse_last_port_t anj_tcp_reuse_last_port
Definition anj_tcp.h:31
anj_net_cleanup_ctx_t anj_tcp_cleanup_ctx
Definition anj_tcp.h:30
anj_net_reuse_last_port_t anj_udp_reuse_last_port
Definition anj_udp.h:31
anj_net_get_bytes_received_t anj_udp_get_bytes_received
Definition anj_udp.h:33
anj_net_send_t anj_udp_send
Definition anj_udp.h:27
anj_net_connect_t anj_udp_connect
Definition anj_udp.h:25
anj_net_get_bytes_sent_t anj_udp_get_bytes_sent
Definition anj_udp.h:34
anj_net_close_t anj_udp_close
Definition anj_udp.h:24
anj_net_get_system_socket_t anj_udp_get_system_socket
Definition anj_udp.h:23
anj_net_create_ctx_t anj_udp_create_ctx
Definition anj_udp.h:26
anj_net_recv_t anj_udp_recv
Definition anj_udp.h:28
anj_net_cleanup_ctx_t anj_udp_cleanup_ctx
Definition anj_udp.h:30
anj_net_get_state_t anj_udp_get_state
Definition anj_udp.h:36
anj_net_shutdown_t anj_udp_shutdown
Definition anj_udp.h:29
anj_net_get_inner_mtu_t anj_udp_get_inner_mtu
Definition anj_udp.h:35
Definition anj_net_api.h:378