61 #include <amxc/amxc_macros.h>
62 #include <amxc/amxc.h>
73 amxc_llist_for_each(it, list) {
95 retval = con == NULL ? 0 : -1;
105 amxc_var_init(&var_fd);
106 amxc_var_set(fd_t, &var_fd, con->
fd);
119 amxc_var_clean(&var_fd);
138 when_true(fd < 0, exit);
141 when_failed(retval, exit);
145 when_null(con, exit);
147 con->
uri = uri == NULL ? NULL : strdup(uri);
166 const char* signal =
"connection-wait-write";
168 amxc_var_init(&var_fd);
169 when_true(fd < 0, exit);
170 when_null(can_write_cb, exit);
173 when_null(con, exit);
175 amxc_var_set(fd_t, &var_fd, fd);
182 amxc_var_clean(&var_fd);
190 const char* signal =
"connection-deleted";
192 amxc_var_init(&var_fd);
196 signal =
"listen-deleted";
199 when_null(con, exit);
201 amxc_var_set(fd_t, &var_fd, fd);
208 amxc_var_clean(&var_fd);
230 if(con->
type == type) {
241 amxc_llist_it_t* it = NULL;
242 when_null(con, exit);
245 it = amxc_llist_it_get_next(&con->
it);
249 if(con->
type == type) {
253 it = amxc_llist_it_get_next(it);
270 when_null(con, exit);
void(* amxp_fd_cb_t)(int fd, void *priv)
#define AMXP_CONNECTION_LISTEN
static int amxp_can_add_connection(int fd, uint32_t type)
static DESTRUCTOR void amxp_connection_cleanup(void)
static void amxp_connection_free(amxc_llist_it_t *it)
static int amxp_connection_add_impl(amxp_connection_t *con, amxp_fd_cb_t reader)
static amxc_llist_t connections
static amxc_llist_t listeners
static amxp_connection_t * amxp_connection_get_internal(amxc_llist_t *list, int fd)
Ambiorix signal manager and signal API header file.
int amxp_connection_add(int fd, amxp_fd_cb_t reader, const char *uri, uint32_t type, void *priv)
Adds a file descriptor (fd) to the list of fds that must be watched.
amxc_llist_t * amxp_connection_get_listeners(void)
Get of the current listen sockets of the application.
amxp_connection_t * amxp_connection_get_next(amxp_connection_t *con, uint32_t type)
Gets the next connection data for a file descriptor.
int amxp_connection_set_el_data(int fd, void *el_data)
Sets event-loop data.
int amxp_connection_wait_write(int fd, amxp_fd_cb_t can_write_cb)
Adds a watcher to check if a fd is ready for write.
amxp_connection_t * amxp_connection_get_first(uint32_t type)
Gets the first connection of the given type.
amxp_connection_t * amxp_connection_get(int fd)
Gets the connection data for a file descriptor.
amxc_llist_t * amxp_connection_get_connections(void)
Get a list of the current connections of the application.
int amxp_connection_remove(int fd)
Removes the fd from the connection list.
void amxp_sigmngr_trigger_signal(amxp_signal_mngr_t *const sig_mngr, const char *name, const amxc_var_t *const data)
Triggers a signal.
static void reader(UNUSED int fd, UNUSED void *priv)