[Convergence] Support for payload type RAW_BYTES 35/96335/1
authorMateusz Bruno-Kaminski <m.bruno2@samsung.com>
Tue, 8 Nov 2016 13:35:28 +0000 (14:35 +0100)
committerMateusz Bruno-Kaminski <m.bruno2@samsung.com>
Tue, 8 Nov 2016 13:35:28 +0000 (14:35 +0100)
[Details] Added support for payload value being a raw byte array.

Change-Id: Ic1155a17fe81f8760896ac752739f887fbec5cc1
Signed-off-by: Mateusz Bruno-Kaminski <m.bruno2@samsung.com>
src/convergence/convergence_payload.cc

index aaefef35627ff20827be25a53844a88fa421b567..9c3206c441c7ee7919d5e34d4dd174c58e189fc3 100644 (file)
@@ -88,17 +88,25 @@ void ConvergencePayloadArray::FromJson(const picojson::value &payload_json) {
   const picojson::array &payload_items = payload_json.get<picojson::array>();
   for (size_t i = 0; i < payload_items.size(); i++) {
     picojson::value item = payload_items[i];
+
     const std::string type = item.get(kPayloadDataType).to_str();
+    const std::string key = item.get(kKey).to_str();
+    const std::string value = item.get(kValue).to_str(); // TODO: check if it is an object
+
     if (kTypeString == type) {
-      const std::string key = item.get(kKey).to_str();
-      const std::string value = item.get(kValue).to_str(); // TODO: check if it is an object
       int error = conv_payload_set_string(payload_handle_, key.c_str(), value.c_str());
       if (CONV_ERROR_NONE != error) {
         trace_conv_error(error, __LINE__, "setting payload string");
       }
     } else if (kTypeRawBytes == type) {
-      // TODO
-      LoggerW("IMPLEMENT BYTE PAYLOAD!!!");
+      int length = static_cast<int>(value.size());
+      unsigned char bytes[length];
+      memcpy(bytes, value.c_str(), length);
+
+      int error = conv_payload_set_byte(payload_handle_, key.c_str(), length, bytes);
+      if (CONV_ERROR_NONE != error) {
+        trace_conv_error(error, __LINE__, "setting payload string");
+      }
     } else {
       LoggerE("ERROR! Unknown type of payload [%s]", type.c_str());
     }