34#ifndef ANJ_NET_WRAPPER_H
35# define ANJ_NET_WRAPPER_H
38# ifdef ANJ_NET_WITH_UDP
41# ifdef ANJ_NET_WITH_TCP
44# ifdef ANJ_NET_WITH_DTLS
47# ifdef ANJ_NET_WITH_TLS
50# ifdef ANJ_NET_WITH_NON_IP_BINDING
63# if defined(ANJ_NET_WITH_UDP)
67# if defined(ANJ_NET_WITH_TCP)
71# if defined(ANJ_NET_WITH_DTLS)
75# if defined(ANJ_NET_WITH_TLS)
77 return anj_tls_create_ctx(ctx, config);
79# if defined(ANJ_NET_WITH_NON_IP_BINDING)
81 return anj_non_ip_create_ctx(ctx, config);
94# if defined(ANJ_NET_WITH_UDP)
98# if defined(ANJ_NET_WITH_TCP)
102# if defined(ANJ_NET_WITH_DTLS)
106# if defined(ANJ_NET_WITH_TLS)
108 return anj_tls_connect(ctx, hostname, port);
110# if defined(ANJ_NET_WITH_NON_IP_BINDING)
112 return anj_non_ip_connect(ctx, hostname, port);
126# if defined(ANJ_NET_WITH_UDP)
130# if defined(ANJ_NET_WITH_TCP)
134# if defined(ANJ_NET_WITH_DTLS)
138# if defined(ANJ_NET_WITH_TLS)
140 return anj_tls_send(ctx, bytes_sent, buf, length);
142# if defined(ANJ_NET_WITH_NON_IP_BINDING)
144 return anj_non_ip_send(ctx, bytes_sent, buf, length);
154 size_t *bytes_received,
158# if defined(ANJ_NET_WITH_UDP)
162# if defined(ANJ_NET_WITH_TCP)
166# if defined(ANJ_NET_WITH_DTLS)
170# if defined(ANJ_NET_WITH_TLS)
172 return anj_tls_recv(ctx, bytes_received, buf, length);
174# if defined(ANJ_NET_WITH_NON_IP_BINDING)
176 return anj_non_ip_recv(ctx, bytes_received, buf, length);
187# if defined(ANJ_NET_WITH_UDP)
191# if defined(ANJ_NET_WITH_TCP)
195# if defined(ANJ_NET_WITH_DTLS)
199# if defined(ANJ_NET_WITH_TLS)
201 return anj_tls_close(ctx);
203# if defined(ANJ_NET_WITH_NON_IP_BINDING)
205 return anj_non_ip_close(ctx);
216# if defined(ANJ_NET_WITH_UDP)
220# if defined(ANJ_NET_WITH_TCP)
224# if defined(ANJ_NET_WITH_DTLS)
228# if defined(ANJ_NET_WITH_TLS)
230 return anj_tls_shutdown(ctx);
232# if defined(ANJ_NET_WITH_NON_IP_BINDING)
234 return anj_non_ip_shutdown(ctx);
245# if defined(ANJ_NET_WITH_UDP)
249# if defined(ANJ_NET_WITH_TCP)
253# if defined(ANJ_NET_WITH_DTLS)
257# if defined(ANJ_NET_WITH_TLS)
259 return anj_tls_cleanup_ctx(ctx);
261# if defined(ANJ_NET_WITH_NON_IP_BINDING)
263 return anj_non_ip_cleanup_ctx(ctx);
273 int32_t *out_value) {
275# if defined(ANJ_NET_WITH_UDP)
279# if defined(ANJ_NET_WITH_TCP)
283# if defined(ANJ_NET_WITH_DTLS)
287# if defined(ANJ_NET_WITH_TLS)
289 return anj_tls_get_inner_mtu(ctx, out_value);
291# if defined(ANJ_NET_WITH_NON_IP_BINDING)
293 return anj_non_ip_get_inner_mtu(ctx, out_value);
305# if defined(ANJ_NET_WITH_UDP)
309# if defined(ANJ_NET_WITH_TCP)
313# if defined(ANJ_NET_WITH_DTLS)
317# if defined(ANJ_NET_WITH_TLS)
319 return anj_tls_get_state(ctx, out_value);
321# if defined(ANJ_NET_WITH_NON_IP_BINDING)
323 return anj_non_ip_get_state(ctx, out_value);
334# if defined(ANJ_NET_WITH_UDP)
338# if defined(ANJ_NET_WITH_TCP)
342# if defined(ANJ_NET_WITH_DTLS)
346# if defined(ANJ_NET_WITH_TLS)
348 return anj_tls_queue_mode_rx_off(ctx);
350# if defined(ANJ_NET_WITH_NON_IP_BINDING)
352 return anj_non_ip_queue_mode_rx_off(ctx);
Network backend interface for DTLS transport.
anj_net_cleanup_ctx_t anj_dtls_cleanup_ctx
Definition anj_dtls.h:41
anj_net_get_inner_mtu_t anj_dtls_get_inner_mtu
Definition anj_dtls.h:43
anj_net_create_ctx_t anj_dtls_create_ctx
Definition anj_dtls.h:37
anj_net_shutdown_t anj_dtls_shutdown
Definition anj_dtls.h:40
anj_net_recv_t anj_dtls_recv
Definition anj_dtls.h:39
anj_net_get_state_t anj_dtls_get_state
Definition anj_dtls.h:44
anj_net_connect_t anj_dtls_connect
Definition anj_dtls.h:36
anj_net_queue_mode_rx_off_t anj_dtls_queue_mode_rx_off
Definition anj_dtls.h:45
anj_net_send_t anj_dtls_send
Definition anj_dtls.h:38
anj_net_close_t anj_dtls_close
Definition anj_dtls.h:35
Platform hooks for network transport integration.
#define ANJ_NET_ENOTSUP
Definition anj_net_api.h:77
anj_net_binding_type_t
Definition anj_net_api.h:89
@ ANJ_NET_BINDING_TCP
Definition anj_net_api.h:91
@ ANJ_NET_BINDING_TLS
Definition anj_net_api.h:93
@ ANJ_NET_BINDING_NON_IP
Definition anj_net_api.h:94
@ ANJ_NET_BINDING_DTLS
Definition anj_net_api.h:92
@ ANJ_NET_BINDING_UDP
Definition anj_net_api.h:90
struct anj_net_ctx_struct anj_net_ctx_t
Opaque network context handle.
Definition anj_net_api.h:235
anj_net_socket_state_t
Definition anj_net_api.h:97
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:301
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:59
static int anj_net_shutdown(anj_net_binding_type_t type, anj_net_ctx_t *ctx)
Definition anj_net_wrapper.h:213
static int anj_net_cleanup_ctx(anj_net_binding_type_t type, anj_net_ctx_t **ctx)
Definition anj_net_wrapper.h:242
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:89
static int anj_net_queue_mode_rx_off(anj_net_binding_type_t type, anj_net_ctx_t *ctx)
Definition anj_net_wrapper.h:331
static int anj_net_close(anj_net_binding_type_t type, anj_net_ctx_t *ctx)
Definition anj_net_wrapper.h:184
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:152
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:271
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:120
Network backend interface for Non-IP transport.
Network backend interface for TCP transport.
anj_net_recv_t anj_tcp_recv
Definition anj_tcp.h:39
anj_net_get_state_t anj_tcp_get_state
Definition anj_tcp.h:44
anj_net_connect_t anj_tcp_connect
Definition anj_tcp.h:36
anj_net_create_ctx_t anj_tcp_create_ctx
Definition anj_tcp.h:37
anj_net_get_inner_mtu_t anj_tcp_get_inner_mtu
Definition anj_tcp.h:43
anj_net_queue_mode_rx_off_t anj_tcp_queue_mode_rx_off
Definition anj_tcp.h:45
anj_net_close_t anj_tcp_close
Definition anj_tcp.h:35
anj_net_shutdown_t anj_tcp_shutdown
Definition anj_tcp.h:40
anj_net_send_t anj_tcp_send
Definition anj_tcp.h:38
anj_net_cleanup_ctx_t anj_tcp_cleanup_ctx
Definition anj_tcp.h:41
Network backend interface for TLS transport.
Network backend interface for UDP transport.
anj_net_send_t anj_udp_send
Definition anj_udp.h:38
anj_net_connect_t anj_udp_connect
Definition anj_udp.h:36
anj_net_close_t anj_udp_close
Definition anj_udp.h:35
anj_net_create_ctx_t anj_udp_create_ctx
Definition anj_udp.h:37
anj_net_recv_t anj_udp_recv
Definition anj_udp.h:39
anj_net_cleanup_ctx_t anj_udp_cleanup_ctx
Definition anj_udp.h:41
anj_net_get_state_t anj_udp_get_state
Definition anj_udp.h:44
anj_net_queue_mode_rx_off_t anj_udp_queue_mode_rx_off
Definition anj_udp.h:45
anj_net_shutdown_t anj_udp_shutdown
Definition anj_udp.h:40
anj_net_get_inner_mtu_t anj_udp_get_inner_mtu
Definition anj_udp.h:43
Global configuration validation header for Anjay Lite.
Definition anj_net_api.h:214