From: Jaeyun Date: Fri, 15 Jul 2022 10:17:39 +0000 (+0900) Subject: [Util] function to get port number X-Git-Tag: submit/tizen/20220810.074948~20 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6eae1e2d9fd65a635a89cd2df361d04a741a8cf9;p=platform%2Fupstream%2Fnnstreamer-edge.git [Util] function to get port number Add util function to get available port. TODO: update testcase (data transfer with fixed port) later. Signed-off-by: Jaeyun --- diff --git a/src/libnnstreamer-edge/nnstreamer-edge-common.c b/src/libnnstreamer-edge/nnstreamer-edge-common.c index a58a6bd..217571d 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-common.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-common.c @@ -15,6 +15,39 @@ #include "nnstreamer-edge-common.h" +/** + * @brief Internal util function to get available port number. + */ +int +nns_edge_get_available_port (void) +{ + struct sockaddr_in sin; + int port = 0, sock; + socklen_t len = sizeof (struct sockaddr); + + sin.sin_family = AF_INET; + sin.sin_addr.s_addr = INADDR_ANY; + sin.sin_port = 0; + + sock = socket (AF_INET, SOCK_STREAM, 0); + if (sock < 0) { + nns_edge_loge ("Failed to get available port, socket creation failure."); + return 0; + } + + if (bind (sock, (struct sockaddr *) &sin, sizeof (struct sockaddr)) == 0) { + if (getsockname (sock, (struct sockaddr *) &sin, &len) == 0) { + port = ntohs (sin.sin_port); + nns_edge_logi ("Available port number: %d", port); + } else { + nns_edge_logw ("Failed to read local socket info."); + } + } + close (sock); + + return port; +} + /** * @brief Allocate new memory and copy bytes. * @note Caller should release newly allocated memory using free(). diff --git a/src/libnnstreamer-edge/nnstreamer-edge-common.h b/src/libnnstreamer-edge/nnstreamer-edge-common.h index ab6d36e..8864fec 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-common.h +++ b/src/libnnstreamer-edge/nnstreamer-edge-common.h @@ -15,7 +15,11 @@ #define __NNSTREAMER_EDGE_COMMON_H__ #include /** @todo remove glib */ +#include +#include +#include #include +#include #include "nnstreamer-edge.h" #ifdef __cplusplus @@ -80,6 +84,11 @@ typedef struct { #define nns_edge_logd g_debug #define nns_edge_logf g_error +/** + * @brief Internal util function to get available port number. + */ +int nns_edge_get_available_port (void); + /** * @brief Allocate new memory and copy bytes. * @note Caller should release newly allocated memory using free(). diff --git a/src/libnnstreamer-edge/nnstreamer-edge-internal.c b/src/libnnstreamer-edge/nnstreamer-edge-internal.c index af2e496..7bd859f 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-internal.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-internal.c @@ -169,37 +169,6 @@ _get_host_str (const char *ip, const int port, char **host) *host = nns_edge_strdup_printf ("%s:%d", ip, port); } -/** - * @brief Get available port number. - */ -static int -_get_available_port (void) -{ - struct sockaddr_in sin; - int port = 0, sock; - socklen_t len = sizeof (struct sockaddr); - - sin.sin_family = AF_INET; - sin.sin_addr.s_addr = INADDR_ANY; - sock = socket (AF_INET, SOCK_STREAM, 0); - if (sock < 0) { - nns_edge_loge ("Failed to get available port. Socket creation failure."); - return 0; - } - sin.sin_port = port; - if (bind (sock, (struct sockaddr *) &sin, sizeof (struct sockaddr)) == 0) { - if (getsockname (sock, (struct sockaddr *) &sin, &len) == 0) { - port = ntohs (sin.sin_port); - nns_edge_logi ("Available port number: %d", port); - } else { - nns_edge_logw ("Failed to read local socket info."); - } - } - close (sock); - - return port; -} - /** * @brief Internal function to check connection. */ @@ -1020,7 +989,7 @@ nns_edge_start (nns_edge_h edge_h, bool is_server) eh->is_server = is_server; if (!is_server && 0 == eh->recv_port) { - eh->recv_port = _get_available_port (); + eh->recv_port = nns_edge_get_available_port (); if (eh->recv_port <= 0) { nns_edge_loge ("Failed to start edge. Cannot get available port."); nns_edge_unlock (eh); diff --git a/src/libnnstreamer-edge/nnstreamer-edge-internal.h b/src/libnnstreamer-edge/nnstreamer-edge-internal.h index fa0dd58..34b8004 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-internal.h +++ b/src/libnnstreamer-edge/nnstreamer-edge-internal.h @@ -20,8 +20,6 @@ extern "C" { #include "nnstreamer-edge.h" #include -#include -#include /** * @brief Data structure for edge handle.