martinzink commented on code in PR #2148:
URL: https://github.com/apache/nifi-minifi-cpp/pull/2148#discussion_r3115223844


##########
extensions/libarchive/FocusArchiveEntry.cpp:
##########
@@ -179,14 +179,9 @@ int64_t FocusArchiveEntry::ReadCallback::operator()(const 
std::shared_ptr<io::In
       break;
     }
 
-    if (res < ARCHIVE_OK) {
+    if (res < ARCHIVE_OK) {  // TODO(MINIFICPP-2761)
       logger_->log_error("FocusArchiveEntry can't read header due to archive 
error: {}", archive_error_string(input_archive.get()));
-      return nlen;
-    }
-
-    if (res < ARCHIVE_WARN) {
-      logger_->log_warn("FocusArchiveEntry got archive warning while reading 
header: {}", archive_error_string(input_archive.get()));
-      return nlen;
+      return io::IoResult::zero();

Review Comment:
   thats valid 👍  [review change in 
FocusArchiveEntry.cpp](https://github.com/apache/nifi-minifi-cpp/pull/2148/commits/949213372202dac54da723bce6f8fe257b877ba7)



##########
minifi-api/common/include/minifi-cpp/io/StreamCallback.h:
##########
@@ -16,24 +16,100 @@
  */
 #pragma once
 
+#include <cinttypes>
 #include <functional>
 #include <memory>
-#include <optional>
+
+#include "../../minifi-api/include/minifi-c/minifi-c.h"
+#include "Stream.h"
+#include "minifi-cpp/utils/gsl.h"
+#include "utils/expected.h"
 
 namespace org::apache::nifi::minifi::io {
 
 class InputStream;
 class OutputStream;
 
-struct ReadWriteResult {
-  int64_t bytes_written = 0;
-  int64_t bytes_read = 0;
+class IoResult {
+ public:
+  IoResult() = delete;
+  IoResult(const IoResult&) = default;
+  IoResult(IoResult&&) noexcept = default;
+  IoResult& operator=(IoResult&&) noexcept = default;
+  IoResult& operator=(const IoResult&) = default;
+
+  virtual ~IoResult() = default;
+
+  static IoResult error() { return 
IoResult(nonstd::make_unexpected(MINIFI_IO_ERROR)); }
+  static IoResult cancelled() { return 
IoResult(nonstd::make_unexpected(MINIFI_IO_CANCEL)); }
+  static IoResult zero() { return IoResult(0U); }
+
+  static IoResult fromI64(int64_t i64_val) {
+    if (i64_val < 0) { return 
IoResult(nonstd::make_unexpected(static_cast<MinifiIoStatus>(i64_val))); }
+    return IoResult(gsl::narrow<uint64_t>(i64_val));
+  }
+
+  static IoResult fromSizeT(const size_t val) {
+    if (isError(val)) { return IoResult::error(); }
+    return IoResult(gsl::narrow<uint64_t>(val));
+  }

Review Comment:
   [IoResult::fromSizeT and IoResult::fromI64 -> 
IoResult::from](https://github.com/apache/nifi-minifi-cpp/pull/2148/commits/e26ba0f3807f611605459254842300d2f3104e08)



##########
extensions/libarchive/MergeContent.h:
##########
@@ -82,35 +82,39 @@ class BinaryConcatenationMerge : public MergeBin {
     std::deque<std::shared_ptr<core::FlowFile>> &flows_;
     FlowFileSerializer& serializer_;
 
-    int64_t operator()(const std::shared_ptr<io::OutputStream>& stream) const {
+    io::IoResult operator()(const std::shared_ptr<io::OutputStream>& stream) 
const {
       size_t write_size_sum = 0;
       if (!header_.empty()) {
         const auto write_ret = stream->write(reinterpret_cast<const 
uint8_t*>(header_.data()), header_.size());
-        if (io::isError(write_ret))
-          return -1;
+        if (io::isError(write_ret)) {
+          return io::IoResult::error();
+        }
         write_size_sum += write_ret;
       }
       bool isFirst = true;
       for (const auto& flow : flows_) {
         if (!isFirst && !demarcator_.empty()) {
           const auto write_ret = stream->write(reinterpret_cast<const 
uint8_t*>(demarcator_.data()), demarcator_.size());
-          if (io::isError(write_ret))
-            return -1;
+          if (io::isError(write_ret)) {
+            return io::IoResult::error();
+          }
           write_size_sum += write_ret;
         }
         const auto len = serializer_.serialize(flow, stream);

Review Comment:
   [rename len in 
MergeContent.h](https://github.com/apache/nifi-minifi-cpp/pull/2148/commits/3303dfb6c8829e08b7813e65fd11ef1b543c02f6)



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