szaszm commented on a change in pull request #1083:
URL: https://github.com/apache/nifi-minifi-cpp/pull/1083#discussion_r649406098



##########
File path: libminifi/src/io/tls/TLSServerSocket.cpp
##########
@@ -98,8 +100,9 @@ void TLSServerSocket::registerCallback(std::function<bool()> 
accept_function, st
         int fd_remove = 0;
         std::vector<uint8_t> data;
         if ( handler(&data, &size) > 0 ) {
-          ret = writeData(data.data(), size, fd);
-          if (ret < 0) {
+          const auto clamped_size = gsl::narrow<size_t>(utils::clamp(size, 0, 
std::numeric_limits<int>::max()));

Review comment:
       Done in 4195052. It also includes refactoring to get rid of the second 
out param, which was the same as the return value, and now the callbacks are 
moved all the way to the last lambda that's passed to the thread call.

##########
File path: libminifi/src/serialization/FlowFileV3Serializer.cpp
##########
@@ -27,85 +27,78 @@ namespace minifi {
 
 constexpr uint8_t FlowFileV3Serializer::MAGIC_HEADER[];
 
-int FlowFileV3Serializer::writeLength(std::size_t length, const 
std::shared_ptr<io::OutputStream>& out) {
+size_t FlowFileV3Serializer::writeLength(std::size_t length, const 
std::shared_ptr<io::OutputStream>& out) {
   if (length < MAX_2_BYTE_VALUE) {
     return out->write(static_cast<uint16_t>(length));
   }
-  int sum = 0;
-  int ret;
-  ret = out->write(static_cast<uint16_t>(MAX_2_BYTE_VALUE));
-  if (ret < 0) {
-    return ret;
+  size_t sum = 0;
+  {
+    const auto ret = out->write(static_cast<uint16_t>(MAX_2_BYTE_VALUE));
+    if (io::isError(ret)) return ret;
+    sum += ret;
   }
-  sum += ret;
-  ret = out->write(static_cast<uint32_t>(length));
-  if (ret < 0) {
-    return ret;
+  {
+    const auto ret = out->write(static_cast<uint32_t>(length));
+    if (io::isError(ret)) return ret;
+    sum += ret;
   }
-  sum += ret;
   return sum;
 }
 
-int FlowFileV3Serializer::writeString(const std::string &str, const 
std::shared_ptr<io::OutputStream> &out) {
-  int sum = 0;
-  int ret;
-  ret = writeLength(str.length(), out);
-  if (ret < 0) {
-    return ret;
-  }
-  sum += ret;
-  ret = out->write(const_cast<uint8_t*>(reinterpret_cast<const 
uint8_t*>(str.data())), gsl::narrow<int>(str.length()));
-  if (ret < 0) {
-    return ret;
+size_t FlowFileV3Serializer::writeString(const std::string &str, const 
std::shared_ptr<io::OutputStream> &out) {
+  size_t sum = 0;
+  {
+    const auto ret = writeLength(str.length(), out);
+    if (io::isError(ret)) return ret;
+    sum += ret;
   }
-  if (gsl::narrow<size_t>(ret) != str.length()) {
-    return -1;
+  {
+    const auto ret = out->write(reinterpret_cast<const uint8_t*>(str.data()), 
str.length());
+    if (io::isError(ret)) return ret;
+    if (ret != str.length()) return io::STREAM_ERROR;
+    sum += ret;
   }
-  sum += ret;
   return sum;
 }
 
 int FlowFileV3Serializer::serialize(const std::shared_ptr<core::FlowFile>& 
flowFile, const std::shared_ptr<io::OutputStream>& out) {
-  int sum = 0;
-  int ret;
-  ret = out->write(const_cast<uint8_t*>(MAGIC_HEADER), sizeof(MAGIC_HEADER));
-  if (ret < 0) {
-    return ret;
-  }
-  if (ret != sizeof(MAGIC_HEADER)) {
-    return -1;
+  size_t sum = 0;
+  {
+    const auto ret = out->write(MAGIC_HEADER, sizeof(MAGIC_HEADER));
+    if (io::isError(ret)) return -1;
+    if (ret != sizeof(MAGIC_HEADER)) return -1;
+    sum += ret;
   }
-  sum += ret;
   const auto& attributes = flowFile->getAttributes();
-  ret = writeLength(attributes.size(), out);
-  if (ret < 0) {
-    return ret;
+  {
+    const auto ret = writeLength(attributes.size(), out);
+    if (io::isError(ret)) return -1;
+    sum += ret;
   }
-  sum += ret;
   for (const auto& attrIt : attributes) {
-    ret = writeString(attrIt.first, out);
-    if (ret < 0) {
-      return ret;
+    {
+      const auto ret = writeString(attrIt.first, out);
+      if (io::isError(ret)) return -1;
+      sum += ret;
     }
-    sum += ret;
-    ret = writeString(attrIt.second, out);
-    if (ret < 0) {
-      return ret;
+    {
+      const auto ret = writeString(attrIt.second, out);
+      if (io::isError(ret)) return -1;
+      sum += ret;
     }
-    sum += ret;
   }
-  ret = out->write(static_cast<uint64_t>(flowFile->getSize()));
-  if (ret < 0) {
-    return ret;
+  {
+    const auto ret = out->write(static_cast<uint64_t>(flowFile->getSize()));
+    if (io::isError(ret)) return -1;
+    sum += ret;
   }
-  sum += ret;
   InputStreamPipe pipe(out);
-  ret = reader_(flowFile, &pipe);
-  if (ret < 0) {
-    return ret;
+  {
+    const auto ret = reader_(flowFile, &pipe);
+    if (io::isError(ret)) return -1;

Review comment:
       done in 4195052

##########
File path: libminifi/src/sitetosite/SiteToSiteClient.cpp
##########
@@ -435,30 +425,34 @@ int16_t SiteToSiteClient::send(const utils::Identifier 
&transactionID, DataPacke
   }
 
   if (transaction->current_transfers_ > 0) {
-    ret = writeResponse(transaction, CONTINUE_TRANSACTION, 
"CONTINUE_TRANSACTION");
-    if (ret <= 0) {
+    const auto ret = writeResponse(transaction, CONTINUE_TRANSACTION, 
"CONTINUE_TRANSACTION");
+    if (ret == 0 || io::isError(ret)) {
       return -1;
     }
   }
   // start to read the packet
-  uint32_t numAttributes = gsl::narrow<uint32_t>(packet->_attributes.size());
-  ret = transaction->getStream().write(numAttributes);
-  if (ret != 4) {
-    return -1;
+  {
+    const auto numAttributes = 
gsl::narrow<uint32_t>(packet->_attributes.size());
+    const auto ret = transaction->getStream().write(numAttributes);
+    if (ret != 4) {
+      return -1;
+    }
   }
 
-  std::map<std::string, std::string>::iterator itAttribute;
-  for (itAttribute = packet->_attributes.begin(); itAttribute != 
packet->_attributes.end(); itAttribute++) {
-    ret = transaction->getStream().write(itAttribute->first, true);
-
-    if (ret <= 0) {
-      return -1;
+  for (const auto& _attribute : packet->_attributes) {

Review comment:
       done in 4195052




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

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


Reply via email to