mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-14 01:49:05 +00:00
add user_data in esl_listen so the main function can pass a private user_data to callback
This commit is contained in:
@@ -645,13 +645,14 @@ struct thread_handler {
|
||||
esl_socket_t server_sock;
|
||||
esl_socket_t client_sock;
|
||||
struct sockaddr_in addr;
|
||||
void *user_data;
|
||||
};
|
||||
|
||||
static void *client_thread(esl_thread_t *me, void *obj)
|
||||
{
|
||||
struct thread_handler *handler = (struct thread_handler *) obj;
|
||||
|
||||
handler->callback(handler->server_sock, handler->client_sock, &handler->addr);
|
||||
handler->callback(handler->server_sock, handler->client_sock, &handler->addr, handler->user_data);
|
||||
free(handler);
|
||||
|
||||
return NULL;
|
||||
@@ -679,7 +680,7 @@ static int prepare_sock(esl_socket_t sock)
|
||||
}
|
||||
|
||||
|
||||
ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback, esl_socket_t *server_sockP)
|
||||
ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback, void *user_data, esl_socket_t *server_sockP)
|
||||
{
|
||||
esl_socket_t server_sock = ESL_SOCK_INVALID;
|
||||
struct sockaddr_in addr;
|
||||
@@ -728,7 +729,7 @@ ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_list
|
||||
goto end;
|
||||
}
|
||||
prepare_sock(client_sock);
|
||||
callback(server_sock, client_sock, &echoClntAddr);
|
||||
callback(server_sock, client_sock, &echoClntAddr, user_data);
|
||||
}
|
||||
|
||||
end:
|
||||
@@ -742,7 +743,7 @@ ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_list
|
||||
|
||||
}
|
||||
|
||||
ESL_DECLARE(esl_status_t) esl_listen_threaded(const char *host, esl_port_t port, esl_listen_callback_t callback, int max)
|
||||
ESL_DECLARE(esl_status_t) esl_listen_threaded(const char *host, esl_port_t port, esl_listen_callback_t callback, void *user_data, int max)
|
||||
{
|
||||
esl_socket_t server_sock = ESL_SOCK_INVALID;
|
||||
struct sockaddr_in addr;
|
||||
@@ -796,6 +797,7 @@ ESL_DECLARE(esl_status_t) esl_listen_threaded(const char *host, esl_port_t port,
|
||||
handler->server_sock = server_sock;
|
||||
handler->client_sock = client_sock;
|
||||
handler->addr = echoClntAddr;
|
||||
handler->user_data = user_data;
|
||||
esl_thread_create_detached(client_thread, handler);
|
||||
}
|
||||
|
||||
|
@@ -379,7 +379,7 @@ ESL_DECLARE(int) esl_tolower(int c);
|
||||
ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...);
|
||||
|
||||
|
||||
typedef void (*esl_listen_callback_t)(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in *addr);
|
||||
typedef void (*esl_listen_callback_t)(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in *addr, void *user_data);
|
||||
/*!
|
||||
\brief Attach a handle to an established socket connection
|
||||
\param handle Handle to be attached
|
||||
@@ -394,8 +394,8 @@ ESL_DECLARE(esl_status_t) esl_attach_handle(esl_handle_t *handle, esl_socket_t s
|
||||
\param callback Callback that will be called upon data received
|
||||
*/
|
||||
|
||||
ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback, esl_socket_t *server_sockP);
|
||||
ESL_DECLARE(esl_status_t) esl_listen_threaded(const char *host, esl_port_t port, esl_listen_callback_t callback, int max);
|
||||
ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback, void *user_data, esl_socket_t *server_sockP);
|
||||
ESL_DECLARE(esl_status_t) esl_listen_threaded(const char *host, esl_port_t port, esl_listen_callback_t callback, void *user_data, int max);
|
||||
/*!
|
||||
\brief Executes application with sendmsg to a specific UUID. Used for outbound socket.
|
||||
\param handle Handle that the msg will be sent
|
||||
|
Reference in New Issue
Block a user