Copilot commented on code in PR #2166:
URL: https://github.com/apache/nifi-minifi-cpp/pull/2166#discussion_r3159726074


##########
minifi-api/include/minifi-c/minifi-c.h:
##########
@@ -254,16 +259,30 @@ size_t MinifiInputStreamSize(MinifiInputStream*);
 int64_t MinifiInputStreamRead(MinifiInputStream* stream, char* buffer, size_t 
size);
 int64_t MinifiOutputStreamWrite(MinifiOutputStream* stream, const char* data, 
size_t size);
 
-MinifiStatus MinifiFlowFileSetAttribute(MinifiProcessSession* session, 
MinifiFlowFile* flowfile, MinifiStringView attribute_name, const 
MinifiStringView* attribute_value);
-MinifiBool MinifiFlowFileGetAttribute(MinifiProcessSession* session, 
MinifiFlowFile* flowfile, MinifiStringView attribute_name,
+MinifiStatus MinifiProcessSessionSetFlowFileAttribute(MinifiProcessSession* 
session, MinifiFlowFile* flowfile, MinifiStringView attribute_name, const 
MinifiStringView* attribute_value);
+MinifiBool MinifiProcessSessionGetFlowFileAttribute(MinifiProcessSession* 
session, MinifiFlowFile* flowfile, MinifiStringView attribute_name,
                                       void(*cb)(void* user_ctx, 
MinifiStringView attribute_value), void* user_ctx);
-void MinifiFlowFileGetAttributes(MinifiProcessSession* session, 
MinifiFlowFile* flowfile, void(*cb)(void* user_ctx, MinifiStringView 
attribute_name, MinifiStringView attribute_value), void* user_ctx);
+void MinifiProcessSessionGetFlowFileAttributes(MinifiProcessSession* session, 
MinifiFlowFile* flowfile,
+    void (*cb)(void* user_ctx, MinifiStringView attribute_name, 
MinifiStringView attribute_value), void* user_ctx);
+uint64_t MinifiProcessSessionGetFlowFileSize(MinifiProcessSession* session, 
MinifiFlowFile* flowfile);
+MinifiStatus MinifiProcessSessionGetFlowFileId(MinifiProcessSession* session, 
MinifiFlowFile* flowfile, void(*cb)(void* user_ctx, MinifiStringView 
flow_file_id), void* user_ctx);
 
 MinifiStatus 
MinifiControllerServiceContextGetProperty(MinifiControllerServiceContext* 
context,
     MinifiStringView property_name,
     void(*cb)(void* user_ctx, MinifiStringView property_value),
     void* user_ctx);
 
+struct MinifiSslData {
+  uint8_t version = 1;
+  MinifiStringView ca_certificate{};
+  MinifiStringView certificate_file{};
+  MinifiStringView private_key_file{};
+  MinifiStringView passphrase{};
+};
+
+MinifiStatus MinifiProcessContextGetSslData(MinifiProcessContext* 
process_context, MinifiStringView controller_service_name,
+    void (*cb)(void* user_ctx, const MinifiSslData& ssl_data), void* user_ctx);

Review Comment:
   `MinifiProcessContextGetSslData` exposes a callback signature that takes 
`const MinifiSslData&`. For a C API (and for stable cross-compiler ABI), avoid 
C++ references in exported function pointer types; use a pointer (e.g., `const 
MinifiSslData*`) or pass by value, and make `MinifiSslData` an explicitly 
C-compatible POD/typedef if the header is intended for C/FFI consumers.
   ```suggestion
     uint8_t version;
     MinifiStringView ca_certificate;
     MinifiStringView certificate_file;
     MinifiStringView private_key_file;
     MinifiStringView passphrase;
   };
   
   MinifiStatus MinifiProcessContextGetSslData(MinifiProcessContext* 
process_context, MinifiStringView controller_service_name,
       void (*cb)(void* user_ctx, const MinifiSslData* ssl_data), void* 
user_ctx);
   ```



##########
libminifi/src/minifi-c.cpp:
##########
@@ -578,5 +603,39 @@ MinifiStatus MinifiProcessContextGetControllerService(
   return MINIFI_STATUS_VALIDATION_FAILED;
 }
 
+void MinifiProcessContextGetDynamicProperties(MinifiProcessContext* context,
+    void (*cb)(void* user_ctx, MinifiStringView dynamic_property_name, 
MinifiStringView dynamic_property_value), void* user_ctx) {
+  gsl_Assert(context != MINIFI_NULL);
+  for (auto& [key, value] : 
reinterpret_cast<minifi::core::ProcessContext*>(context)->getDynamicProperties())
 {
+    cb(user_ctx, minifiStringView(key), minifiStringView(value));
+  }

Review Comment:
   `MinifiProcessContextGetDynamicProperties` iterates dynamic properties via 
`ProcessContext::getDynamicProperties()` without a FlowFile parameter, which 
can prevent Expression Language substitution based on FlowFile attributes (core 
processors often call `getDynamicProperties(&flow_file)`). If this API is 
intended for onTrigger-time evaluation, consider adding a `MinifiFlowFile*` 
argument and forwarding it to `getDynamicProperties(flow_file)`; otherwise, 
clarify that returned values are evaluated with `flow_file=nullptr`.



-- 
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