lordgamez commented on code in PR #2265:
URL: https://github.com/apache/nifi-minifi-cpp/pull/2265#discussion_r4119869098


##########
extensions/opc/src/OPCCommon.cpp:
##########
@@ -493,107 +494,71 @@ template UA_StatusCode Client::add_node<const char 
*>(const UA_NodeId parent_nod
 template UA_StatusCode Client::add_node<std::string>(const UA_NodeId 
parent_node_id, const UA_NodeId target_node_id, const UA_UInt32 ref_type_id, 
std::string_view browse_name,
   std::string value, UA_NodeId *received_node_id);
 
-std::string nodeValue2String(const NodeData& nd) {
-  std::string ret_val;
-  switch (nd.data_type_id) {
+std::string variantToString(const UA_Variant& variant, BinaryEncoding 
binary_encoding) {
+  if (variant.type == nullptr || variant.data == nullptr) {
+    throw OPCException(GENERAL_EXCEPTION, "Cannot convert an empty variant to 
string");
+  }
+  switch (variant.type->typeKind) {
     case UA_DATATYPEKIND_STRING:
-    case UA_DATATYPEKIND_LOCALIZEDTEXT:
-    case UA_DATATYPEKIND_BYTESTRING: {
-      UA_String value = *reinterpret_cast<UA_String *>(nd.var_->data);
-      ret_val = std::string(reinterpret_cast<const char *>(value.data), 
value.length);
-      break;
-    }
-    case UA_DATATYPEKIND_BOOLEAN: {
-      bool b = false;
-      memcpy(&b, nd.data.data(), sizeof(bool));
-      ret_val = b ? "True" : "False";
-      break;
-    }
-    case UA_DATATYPEKIND_SBYTE: {
-      int8_t i8t = 0;
-      memcpy(&i8t, nd.data.data(), sizeof(i8t));
-      ret_val = std::to_string(i8t);
-      break;
-    }
-    case UA_DATATYPEKIND_BYTE: {
-      uint8_t ui8t = 0;
-      memcpy(&ui8t, nd.data.data(), sizeof(ui8t));
-      ret_val = std::to_string(ui8t);
-      break;
-    }
-    case UA_DATATYPEKIND_INT16: {
-      int16_t i16t = 0;
-      memcpy(&i16t, nd.data.data(), sizeof(i16t));
-      ret_val = std::to_string(i16t);
-      break;
+    case UA_DATATYPEKIND_LOCALIZEDTEXT: {
+      const auto *value = static_cast<const UA_String *>(variant.data);
+      return {reinterpret_cast<const char *>(value->data), value->length};

Review Comment:
   For our case returning only the string value is a good solution.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to