24 #include "transport.h"
25 #include "transport_websocket.h"
31 if (!strncasecmp(type,
"ws", 2)) {
32 transport = (
struct aeap_transport *)aeap_transport_websocket_create();
36 ast_log(LOG_ERROR,
"AEAP transport: failed to create for type '%s'\n", type);
48 int aeap_transport_connect(
struct aeap_transport *transport,
const char *url,
49 const char *protocol,
int timeout)
56 if (aeap_transport_is_connected(transport)) {
60 res = transport->
vtable->
connect(transport, url, protocol, timeout);
68 struct aeap_transport *aeap_transport_create_and_connect(
const char *type,
69 const char *url,
const char *protocol,
int timeout)
77 if (aeap_transport_connect(transport, url, protocol, timeout)) {
78 aeap_transport_destroy(transport);
101 if (!aeap_transport_is_connected(transport)) {
124 aeap_transport_disconnect(transport);
128 ast_mutex_destroy(&transport->
read_lock);
134 intmax_t aeap_transport_read(
struct aeap_transport *transport,
void *buf, intmax_t size,
139 if (!aeap_transport_is_connected(transport)) {
143 return transport->
vtable->
read(transport, buf, size, rtype);
146 intmax_t aeap_transport_write(
struct aeap_transport *transport,
const void *buf, intmax_t size,
151 if (!aeap_transport_is_connected(transport)) {
155 return transport->
vtable->
write(transport, buf, size, wtype);
void(* destroy)(struct aeap_transport *self)
Destroy a transport.
Asterisk main include file. File version handling, generic pbx functions.
intmax_t(* read)(struct aeap_transport *self, void *buf, intmax_t size, enum AST_AEAP_DATA_TYPE *rtype)
Read data from a transport.
intmax_t(* write)(struct aeap_transport *self, const void *buf, intmax_t size, enum AST_AEAP_DATA_TYPE wtype)
Write data to a transport.
#define ast_atomic_fetch_add(ptr, val, memorder)
Support for atomic instructions.
int(* disconnect)(struct aeap_transport *self)
Disconnect a transport.
#define SCOPED_MUTEX(varname, lock)
scoped lock specialization for mutexes
#define ast_atomic_fetch_sub(ptr, val, memorder)
int(* connect)(struct aeap_transport *self, const char *url, const char *protocol, int timeout)
Connect a transport.
AST_AEAP_DATA_TYPE
Supported Asterisk external application data types.
Asterisk external application transport structure to be "derived" by specific transport implementatio...
struct aeap_transport_vtable * vtable