From 2764b6338ad5684a8b14067d5e3d27f1ebe879fe Mon Sep 17 00:00:00 2001 From: Jaeyun Jung Date: Mon, 20 Mar 2023 14:00:57 +0900 Subject: [PATCH] [Api] flag to check state - started Add internal flag to check edge-handle is started. Signed-off-by: Jaeyun Jung --- .../nnstreamer-edge-internal.c | 9 ++++++++ tests/unittest_nnstreamer-edge.cc | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/libnnstreamer-edge/nnstreamer-edge-internal.c b/src/libnnstreamer-edge/nnstreamer-edge-internal.c index 500a36e..e682880 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-internal.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-internal.c @@ -49,6 +49,7 @@ typedef struct int dest_port; /**< destination port number (broker or target device) */ nns_edge_node_type_e node_type; nns_edge_metadata_h metadata; + bool is_started; /* Edge event callback and user data */ nns_edge_event_cb event_cb; @@ -1242,6 +1243,7 @@ nns_edge_create_handle (const char *id, nns_edge_connect_type_e connect_type, eh->dest_host = nns_edge_strdup ("localhost"); eh->dest_port = 0; eh->node_type = node_type; + eh->is_started = false; eh->broker_h = NULL; eh->connections = NULL; eh->listening = false; @@ -1358,6 +1360,7 @@ nns_edge_start (nns_edge_h edge_h) } done: + eh->is_started = (ret == NNS_EDGE_ERROR_NONE); nns_edge_unlock (eh); return ret; } @@ -1404,6 +1407,7 @@ nns_edge_release_handle (nns_edge_h edge_h) eh->event_cb = NULL; eh->user_data = NULL; eh->broker_h = NULL; + eh->is_started = false; nns_edge_queue_clear (eh->send_queue); if (eh->send_thread) { @@ -1576,6 +1580,11 @@ nns_edge_connect (nns_edge_h edge_h, const char *dest_host, int dest_port) } nns_edge_lock (eh); + if (!eh->is_started) { + nns_edge_loge ("Invalid state, the edge handle is not started."); + nns_edge_unlock (eh); + return NNS_EDGE_ERROR_IO; + } if (!eh->event_cb) { nns_edge_loge ("NNStreamer-edge event callback is not registered."); diff --git a/tests/unittest_nnstreamer-edge.cc b/tests/unittest_nnstreamer-edge.cc index 9bd8cdc..edc5525 100644 --- a/tests/unittest_nnstreamer-edge.cc +++ b/tests/unittest_nnstreamer-edge.cc @@ -549,6 +549,29 @@ TEST(edge, connectInvalidParam05_n) EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); } +/** + * @brief Connect - invalid param. + */ +TEST(edge, connectInvalidParam06_n) +{ + nns_edge_h edge_h; + int ret; + + ret = nns_edge_create_handle ("temp-id", NNS_EDGE_CONNECT_TYPE_TCP, + NNS_EDGE_NODE_TYPE_QUERY_CLIENT, &edge_h); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); + + ret = nns_edge_set_event_callback (edge_h, _test_edge_event_cb, NULL); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); + + /* not started */ + ret = nns_edge_connect (edge_h, "127.0.0.1", 80); + EXPECT_NE (ret, NNS_EDGE_ERROR_NONE); + + ret = nns_edge_release_handle (edge_h); + EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE); +} + /** * @brief Disconnect - invalid param. */ -- 2.34.1