int (*nns_edge_custom_start) (void *priv);
int (*nns_edge_custom_stop) (void *priv);
int (*nns_edge_custom_connect) (void *priv);
+ int (*nns_edge_custom_disconnect) (void *priv);
int (*nns_edge_custom_subscribe) (void *priv);
int (*nns_edge_custom_is_connected) (void *priv);
int (*nns_edge_custom_start_discovery) (void *priv);
return ret;
}
+/**
+ * @brief Internal function to disconnect custom connection.
+ */
+int
+nns_edge_custom_disconnect (nns_edge_custom_connection_h handle)
+{
+ custom_connection_s *custom = (custom_connection_s *) handle;
+ nns_edge_custom_s *custom_h;
+ int ret;
+
+ if (!custom || !custom->instance)
+ return NNS_EDGE_ERROR_INVALID_PARAMETER;
+
+ custom_h = custom->instance;
+
+ ret = custom_h->nns_edge_custom_disconnect (custom->priv);
+ if (NNS_EDGE_ERROR_NONE != ret) {
+ nns_edge_loge ("Failed to disconnect custom connection.");
+ }
+
+ return ret;
+}
+
/**
* @brief Internal function to check custom connection.
*/
*/
int nns_edge_custom_connect (nns_edge_custom_connection_h handle);
+/**
+ * @brief Internal function to disconnect custom connection.
+ */
+int nns_edge_custom_disconnect (nns_edge_custom_connection_h handle);
+
/**
* @brief Internal function to check custom connection.
*/
#define nns_edge_custom_stop_discovery(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
#define nns_edge_custom_set_event_callback(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
#define nns_edge_custom_connect(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
+#define nns_edge_custom_disconnect(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
#define nns_edge_custom_is_connected(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
#define nns_edge_custom_send_data(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
#define nns_edge_custom_set_info(...) (NNS_EDGE_ERROR_NOT_SUPPORTED)
nns_edge_disconnect (nns_edge_h edge_h)
{
nns_edge_handle_s *eh;
+ int ret = NNS_EDGE_ERROR_NONE;
eh = (nns_edge_handle_s *) edge_h;
if (!eh) {
}
nns_edge_lock (eh);
- _nns_edge_remove_all_connection (eh);
+ if (NNS_EDGE_CONNECT_TYPE_CUSTOM == eh->connect_type) {
+ ret = nns_edge_custom_disconnect (eh->custom_connection_h);
+ } else {
+ _nns_edge_remove_all_connection (eh);
+ }
nns_edge_unlock (eh);
- return NNS_EDGE_ERROR_NONE;
+ return ret;
}
/**
return NNS_EDGE_ERROR_NONE;
}
+static int
+nns_edge_custom_disconnect (void *priv)
+{
+ if (!priv) {
+ nns_edge_loge ("Invalid param, handle should not be null.");
+ return NNS_EDGE_ERROR_INVALID_PARAMETER;
+ }
+ nns_edge_custom_test_s *custom_h = (nns_edge_custom_test_s *) priv;
+ custom_h->is_connected = 0;
+
+ return NNS_EDGE_ERROR_NONE;
+}
+
+
static int
nns_edge_custom_subscribe (void *priv)
{
.nns_edge_custom_stop_discovery = nns_edge_custom_stop_discovery,
.nns_edge_custom_stop = nns_edge_custom_stop,
.nns_edge_custom_connect = nns_edge_custom_connect,
+ .nns_edge_custom_disconnect = nns_edge_custom_disconnect,
.nns_edge_custom_subscribe = nns_edge_custom_subscribe,
.nns_edge_custom_is_connected = nns_edge_custom_is_connected,
.nns_edge_custom_set_event_cb = nns_edge_custom_set_event_cb,
ret = nns_edge_is_connected (edge_h);
EXPECT_EQ (NNS_EDGE_ERROR_NONE, ret);
+ ret = nns_edge_disconnect (edge_h);
+ EXPECT_EQ (NNS_EDGE_ERROR_NONE, ret);
+ ret = nns_edge_is_connected (edge_h);
+ EXPECT_EQ (NNS_EDGE_ERROR_CONNECTION_FAILURE, ret);
+
+ ret = nns_edge_connect (edge_h, "temp", 3000);
+ EXPECT_EQ (NNS_EDGE_ERROR_NONE, ret);
+
ret = nns_edge_data_create (&data_h);
EXPECT_EQ (NNS_EDGE_ERROR_NONE, ret);
ret = nns_edge_send (edge_h, data_h);
EXPECT_NE (NNS_EDGE_ERROR_NONE, ret);
}
+/**
+ * @brief Disconnect edge custom - invalid param.
+ */
+TEST (edgeCustom, disconnectInvalidParam01_n)
+{
+ int ret;
+
+ ret = nns_edge_custom_disconnect (NULL);
+ EXPECT_NE (NNS_EDGE_ERROR_NONE, ret);
+}
+
/**
* @brief Check connection of edge custom - invalid param.
*/