szaszm commented on code in PR #2166:
URL: https://github.com/apache/nifi-minifi-cpp/pull/2166#discussion_r3161437774
##########
extension-framework/cpp-extension-lib/src/core/ProcessSession.cpp:
##########
@@ -118,29 +118,29 @@ void ProcessSession::read(FlowFile& flow_file, const
io::InputStreamCallback& ca
void ProcessSession::setAttribute(FlowFile& ff, const std::string_view key,
std::string value) { // NOLINT(performance-unnecessary-value-param)
const MinifiStringView value_ref = utils::toStringView(value);
- if (MINIFI_STATUS_SUCCESS != MinifiFlowFileSetAttribute(impl_, ff.get(),
utils::toStringView(key), &value_ref)) {
+ if (MINIFI_STATUS_SUCCESS != MinifiProcessSessionSetFlowFileAttribute(impl_,
ff.get(), utils::toStringView(key), &value_ref)) {
throw minifi::Exception(minifi::FILE_OPERATION_EXCEPTION, "Failed to set
attribute");
}
}
void ProcessSession::removeAttribute(FlowFile& ff, const std::string_view key)
{
- if (MINIFI_STATUS_SUCCESS != MinifiFlowFileSetAttribute(impl_, ff.get(),
utils::toStringView(key), nullptr)) {
+ if (MINIFI_STATUS_SUCCESS != MinifiProcessSessionSetFlowFileAttribute(impl_,
ff.get(), utils::toStringView(key), nullptr)) {
throw minifi::Exception(minifi::FILE_OPERATION_EXCEPTION, "Failed to
remove attribute");
}
}
std::optional<std::string> ProcessSession::getAttribute(FlowFile& ff,
std::string_view key) {
std::optional<std::string> result;
- MinifiFlowFileGetAttribute(impl_, ff.get(), utils::toStringView(key), []
(void* user_ctx, MinifiStringView value) {
+ MinifiProcessSessionGetFlowFileAttribute(impl_, ff.get(),
utils::toStringView(key), [] (void* user_ctx, MinifiStringView value) {
*static_cast<std::optional<std::string>*>(user_ctx) =
std::string{value.data, value.length};
}, &result);
return result;
}
std::map<std::string, std::string> ProcessSession::getAttributes(FlowFile& ff)
{
std::map<std::string, std::string> result;
- MinifiFlowFileGetAttributes(impl_, ff.get(), [] (void* user_ctx,
MinifiStringView value, MinifiStringView key) {
- static_cast<std::map<std::string,
std::string>*>(user_ctx)->insert({std::string{value.data, value.length},
std::string{key.data, key.length}});
+ MinifiProcessSessionGetFlowFileAttributes(impl_, ff.get(), [] (void*
user_ctx, const MinifiStringView key, const MinifiStringView value) {
+ static_cast<std::map<std::string,
std::string>*>(user_ctx)->insert({std::string{key.data, key.length},
std::string{value.data, value.length}});
Review Comment:
Just an idea seeing this (no need to change anything here): maybe we should
provide a way to get the number of attributes, in case someone wants to
allocate an array for the key-value pairs.
##########
libminifi/src/minifi-c.cpp:
##########
@@ -435,6 +435,18 @@ MINIFI_OWNED MinifiFlowFile*
MinifiProcessSessionCreate(MinifiProcessSession* se
return MINIFI_NULL;
}
+MinifiStatus MinifiProcessSessionPenalize(MinifiProcessSession* session,
MinifiFlowFile* flowfile) {
+ gsl_Assert(session != MINIFI_NULL);
+ gsl_Assert(flowfile != MINIFI_NULL);
+ try {
+ reinterpret_cast<minifi::core::ProcessSession*>(session)->penalize(
+ *reinterpret_cast<std::shared_ptr<minifi::core::FlowFile>*>(flowfile));
Review Comment:
maybe we could do dynamic casts here to catch incorrect invocations earlier.
##########
libminifi/src/minifi-c.cpp:
##########
@@ -202,10 +203,9 @@ void useCProcessorClassDescription(const
MinifiProcessorClassDefinition& class_d
std::vector<minifi::core::Relationship> relationships;
relationships.reserve(class_description.class_relationships_count);
for (size_t i = 0; i < class_description.class_relationships_count; ++i) {
- relationships.push_back(minifi::core::Relationship{
+ relationships.emplace_back(
Review Comment:
I like push_back more than emplace_back, because it provides better type
checking, doesn't silently call explicit constructors, and gives clearer
construction errors.
--
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]