[AITT] Serialize the data before send accepted/tizen/unified/20220908.124834
authorgichan <gichan2.jang@samsung.com>
Thu, 1 Sep 2022 05:14:04 +0000 (14:14 +0900)
committerjaeyun-jung <39614140+jaeyun-jung@users.noreply.github.com>
Wed, 7 Sep 2022 07:01:30 +0000 (16:01 +0900)
Serialize the edga data before send using AITT.

Signed-off-by: gichan <gichan2.jang@samsung.com>
src/libnnstreamer-edge/nnstreamer-edge-aitt.c
src/libnnstreamer-edge/nnstreamer-edge-internal.c
tests/unittest_nnstreamer-edge-aitt.cc

index b0a775de32d978efc7967a0a1fa1b359eb161bad..6cf360f870c338396fcb73a8c728a27929fccb07 100644 (file)
@@ -204,8 +204,7 @@ aitt_cb_message_arrived (aitt_msg_h msg_handle, const void *msg,
     return;
   }
 
-  /** @todo support multi memory chunk. Deserialize the received data. */
-  nns_edge_data_add (data_h, (void *) msg, msg_len, NULL);
+  nns_edge_data_deserialize (data_h, (void *) msg);
 
   _nns_edge_invoke_event_cb (eh, NNS_EDGE_EVENT_NEW_DATA_RECEIVED, data_h,
       sizeof (nns_edge_data_h), NULL);
index 0e758c0793352754ff26f82a7be24637a9688e4d..79f23e968943d1ce8c35cfd81f935c5e4c0ceac6 100644 (file)
@@ -320,9 +320,8 @@ _nns_edge_cmd_send (nns_edge_conn_s * conn, nns_edge_cmd_s * cmd)
 static int
 _nns_edge_cmd_send_aitt (nns_edge_handle_s * eh, nns_edge_data_h * data_h)
 {
-  unsigned int n, num_mem;
   int ret;
-  void *raw_data;
+  void *data;
   size_t size;
 
   if (!eh) {
@@ -330,16 +329,21 @@ _nns_edge_cmd_send_aitt (nns_edge_handle_s * eh, nns_edge_data_h * data_h)
     return NNS_EDGE_ERROR_INVALID_PARAMETER;
   }
 
-  ret = nns_edge_data_get_count (data_h, &num_mem);
-  /** @todo Serialize the multi memory data. Now supporting one memory block */
-  for (n = 0; n < num_mem; n++) {
-    nns_edge_data_get (data_h, n, &raw_data, &size);
-    if (NNS_EDGE_ERROR_NONE != nns_edge_aitt_publish (eh, raw_data, size)) {
-      nns_edge_loge ("Failed to send %uth memory to socket.", n);
-      return NNS_EDGE_ERROR_IO;
-    }
+
+  ret = nns_edge_data_serialize (data_h, &data, &size);
+
+  if (NNS_EDGE_ERROR_NONE != ret) {
+    nns_edge_loge ("Failed to serialize the edge data.");
+    goto done;
+  }
+
+  ret = nns_edge_aitt_publish (eh, data, size);
+  if (NNS_EDGE_ERROR_NONE != ret) {
+    nns_edge_loge ("Failed to send data to destination.");
   }
 
+done:
+  nns_edge_free (data);
   return ret;
 }
 
index 33e595778af7d460722ff9385c9ad0ca8b7c0b2e..7daac787dcdb5ac4597b870b96fe4be5e7f5cba2 100644 (file)
@@ -55,6 +55,7 @@ _free_test_data (ne_test_data_s *_td)
   free (_td);
 }
 
+
 /**
  * @brief Edge event callback for test.
  */
@@ -89,13 +90,18 @@ _test_edge_event_cb (nns_edge_event_h event_h, void *user_data)
       /* Compare received data */
       ret = nns_edge_data_get_count (data_h, &count);
       EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+      EXPECT_EQ (count, 2U);
+
       ret = nns_edge_data_get (data_h, 0, &data, &data_len);
       EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
-
-      EXPECT_EQ (count, 1U);
       for (i = 0; i < 10U; i++)
         EXPECT_EQ (((unsigned int *) data)[i], i);
 
+      ret = nns_edge_data_get (data_h, 1, &data, &data_len);
+      EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+      for (i = 0; i < 20U; i++)
+        EXPECT_EQ (((unsigned int *) data)[i], 20 - i);
+
       ret = nns_edge_data_destroy (data_h);
       EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
       break;
@@ -132,7 +138,7 @@ TEST(edge, connectLocal)
   ne_test_data_s *_td_server, *_td_client1, *_td_client2;
   nns_edge_data_h data_h;
   size_t data_len;
-  void *data;
+  void *data1, *data2;
   unsigned int i, retry;
   int ret, port;
   char *val;
@@ -191,19 +197,28 @@ TEST(edge, connectLocal)
 
   /* Send request to server */
   data_len = 10U * sizeof (unsigned int);
-  data = malloc (data_len);
-  ASSERT_TRUE (data != NULL);
+  data1 = malloc (data_len);
+  ASSERT_TRUE (data1 != NULL);
+
+  data2 = malloc (data_len * 2);
+  ASSERT_TRUE (data2 != NULL);
 
   for (i = 0; i < 10U; i++)
-    ((unsigned int *) data)[i] = i;
+    ((unsigned int *) data1)[i] = i;
+
+  for (i = 0; i < 20U; i++)
+    ((unsigned int *) data2)[i] = 20 - i;
 
   ret = nns_edge_data_create (&data_h);
   EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
 
-  ret = nns_edge_data_add (data_h, data, data_len, nns_edge_free);
+  ret = nns_edge_data_add (data_h, data1, data_len, nns_edge_free);
   EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
 
-  for (i = 0; i < 5U; i++) {
+  ret = nns_edge_data_add (data_h, data2, data_len * 2, nns_edge_free);
+  EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
+
+  for (i = 0; i < 1U; i++) {
     ret = nns_edge_send (server_h, data_h);
     EXPECT_EQ (ret, NNS_EDGE_ERROR_NONE);
     usleep (10000);
@@ -238,7 +253,6 @@ TEST(edge, connectLocal)
   _free_test_data (_td_client2);
 }
 
-
 /**
  * @brief Connect to the mqtt broker with invalid param.
  */