Skip to content

Commit aab2146

Browse files
committed
[Custom] Add disconnect function for custom connection
- Add disconnection function for custom connection - Add unit test Signed-off-by: Gichan Jang <[email protected]>
1 parent 50d7f09 commit aab2146

File tree

6 files changed

+71
-2
lines changed

6 files changed

+71
-2
lines changed

include/nnstreamer-edge-custom.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ typedef struct
3232
int (*nns_edge_custom_start) (void *priv);
3333
int (*nns_edge_custom_stop) (void *priv);
3434
int (*nns_edge_custom_connect) (void *priv);
35+
int (*nns_edge_custom_disconnect) (void *priv);
3536
int (*nns_edge_custom_subscribe) (void *priv);
3637
int (*nns_edge_custom_is_connected) (void *priv);
3738
int (*nns_edge_custom_start_discovery) (void *priv);

src/libnnstreamer-edge/nnstreamer-edge-custom-impl.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,29 @@ nns_edge_custom_connect (nns_edge_custom_connection_h handle)
289289
return ret;
290290
}
291291

292+
/**
293+
* @brief Internal function to disconnect custom connection.
294+
*/
295+
int
296+
nns_edge_custom_disconnect (nns_edge_custom_connection_h handle)
297+
{
298+
custom_connection_s *custom = (custom_connection_s *) handle;
299+
nns_edge_custom_s *custom_h;
300+
int ret;
301+
302+
if (!custom || !custom->instance)
303+
return NNS_EDGE_ERROR_INVALID_PARAMETER;
304+
305+
custom_h = custom->instance;
306+
307+
ret = custom_h->nns_edge_custom_disconnect (custom->priv);
308+
if (NNS_EDGE_ERROR_NONE != ret) {
309+
nns_edge_loge ("Failed to disconnect custom connection.");
310+
}
311+
312+
return ret;
313+
}
314+
292315
/**
293316
* @brief Internal function to check custom connection.
294317
*/

src/libnnstreamer-edge/nnstreamer-edge-custom-impl.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ int nns_edge_custom_set_event_callback (nns_edge_custom_connection_h handle, nns
6262
*/
6363
int nns_edge_custom_connect (nns_edge_custom_connection_h handle);
6464

65+
/**
66+
* @brief Internal function to disconnect custom connection.
67+
*/
68+
int nns_edge_custom_disconnect (nns_edge_custom_connection_h handle);
69+
6570
/**
6671
* @brief Internal function to check custom connection.
6772
*/
@@ -90,6 +95,7 @@ int nns_edge_custom_get_info (nns_edge_custom_connection_h handle, const char *k
9095
#define nns_edge_custom_stop_discovery(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
9196
#define nns_edge_custom_set_event_callback(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
9297
#define nns_edge_custom_connect(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
98+
#define nns_edge_custom_disconnect(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
9399
#define nns_edge_custom_is_connected(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
94100
#define nns_edge_custom_send_data(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
95101
#define nns_edge_custom_set_info(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)

src/libnnstreamer-edge/nnstreamer-edge-internal.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1836,6 +1836,7 @@ int
18361836
nns_edge_disconnect (nns_edge_h edge_h)
18371837
{
18381838
nns_edge_handle_s *eh;
1839+
int ret = NNS_EDGE_ERROR_NONE;
18391840

18401841
eh = (nns_edge_handle_s *) edge_h;
18411842
if (!eh) {
@@ -1849,10 +1850,14 @@ nns_edge_disconnect (nns_edge_h edge_h)
18491850
}
18501851

18511852
nns_edge_lock (eh);
1852-
_nns_edge_remove_all_connection (eh);
1853+
if (NNS_EDGE_CONNECT_TYPE_CUSTOM == eh->connect_type) {
1854+
ret = nns_edge_custom_disconnect (eh->custom_connection_h);
1855+
} else {
1856+
_nns_edge_remove_all_connection (eh);
1857+
}
18531858
nns_edge_unlock (eh);
18541859

1855-
return NNS_EDGE_ERROR_NONE;
1860+
return ret;
18561861
}
18571862

18581863
/**

tests/nnstreamer-edge-custom-test.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,20 @@ nns_edge_custom_connect (void *priv)
102102
return NNS_EDGE_ERROR_NONE;
103103
}
104104

105+
static int
106+
nns_edge_custom_disconnect (void *priv)
107+
{
108+
if (!priv) {
109+
nns_edge_loge ("Invalid param, handle should not be null.");
110+
return NNS_EDGE_ERROR_INVALID_PARAMETER;
111+
}
112+
nns_edge_custom_test_s *custom_h = (nns_edge_custom_test_s *) priv;
113+
custom_h->is_connected = 0;
114+
115+
return NNS_EDGE_ERROR_NONE;
116+
}
117+
118+
105119
static int
106120
nns_edge_custom_subscribe (void *priv)
107121
{
@@ -223,6 +237,7 @@ nns_edge_custom_s edge_custom_h = {
223237
.nns_edge_custom_stop_discovery = nns_edge_custom_stop_discovery,
224238
.nns_edge_custom_stop = nns_edge_custom_stop,
225239
.nns_edge_custom_connect = nns_edge_custom_connect,
240+
.nns_edge_custom_disconnect = nns_edge_custom_disconnect,
226241
.nns_edge_custom_subscribe = nns_edge_custom_subscribe,
227242
.nns_edge_custom_is_connected = nns_edge_custom_is_connected,
228243
.nns_edge_custom_set_event_cb = nns_edge_custom_set_event_cb,

tests/unittest_nnstreamer-edge-custom.cc

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,14 @@ TEST (edgeCustom, expectedReturn)
134134
ret = nns_edge_is_connected (edge_h);
135135
EXPECT_EQ (NNS_EDGE_ERROR_NONE, ret);
136136

137+
ret = nns_edge_disconnect (edge_h);
138+
EXPECT_EQ (NNS_EDGE_ERROR_NONE, ret);
139+
ret = nns_edge_is_connected (edge_h);
140+
EXPECT_EQ (NNS_EDGE_ERROR_CONNECTION_FAILURE, ret);
141+
142+
ret = nns_edge_connect (edge_h, "temp", 3000);
143+
EXPECT_EQ (NNS_EDGE_ERROR_NONE, ret);
144+
137145
ret = nns_edge_data_create (&data_h);
138146
EXPECT_EQ (NNS_EDGE_ERROR_NONE, ret);
139147
ret = nns_edge_send (edge_h, data_h);
@@ -262,6 +270,17 @@ TEST (edgeCustom, connectInvalidParam01_n)
262270
EXPECT_NE (NNS_EDGE_ERROR_NONE, ret);
263271
}
264272

273+
/**
274+
* @brief Disconnect edge custom - invalid param.
275+
*/
276+
TEST (edgeCustom, disconnectInvalidParam01_n)
277+
{
278+
int ret;
279+
280+
ret = nns_edge_custom_disconnect (NULL);
281+
EXPECT_NE (NNS_EDGE_ERROR_NONE, ret);
282+
}
283+
265284
/**
266285
* @brief Check connection of edge custom - invalid param.
267286
*/

0 commit comments

Comments
 (0)