Repository: nifi-minifi-cpp
Updated Branches:
  refs/heads/master 997b956d4 -> 5a80197e1


MINIFICPP-307 - support text mode in GenerateFlowFile

MINIFICPP-307 - fix linter issues, typo

This closes #195.

Signed-off-by: Marc Parisi <phroc...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/commit/5a80197e
Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/5a80197e
Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/5a80197e

Branch: refs/heads/master
Commit: 5a80197e170645c33262460753c7d8bbedff5018
Parents: 997b956
Author: Dustin Rodrigues <dust....@gmail.com>
Authored: Sat Nov 18 14:45:52 2017 -0500
Committer: Marc Parisi <phroc...@apache.org>
Committed: Mon Nov 27 17:56:26 2017 -0500

----------------------------------------------------------------------
 libminifi/src/processors/GenerateFlowFile.cpp | 38 +++++++++++++++++-----
 1 file changed, 29 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/5a80197e/libminifi/src/processors/GenerateFlowFile.cpp
----------------------------------------------------------------------
diff --git a/libminifi/src/processors/GenerateFlowFile.cpp 
b/libminifi/src/processors/GenerateFlowFile.cpp
index 3741a8f..32ca26b 100644
--- a/libminifi/src/processors/GenerateFlowFile.cpp
+++ b/libminifi/src/processors/GenerateFlowFile.cpp
@@ -45,6 +45,8 @@ core::Property GenerateFlowFile::BatchSize("Batch Size", "The 
number of FlowFile
 core::Property GenerateFlowFile::DataFormat("Data Format", "Specifies whether 
the data should be Text or Binary", GenerateFlowFile::DATA_FORMAT_BINARY);
 core::Property GenerateFlowFile::UniqueFlowFiles("Unique FlowFiles", "If true, 
each FlowFile that is generated will be unique. If false, a random value will 
be generated and all FlowFiles", "true");
 core::Relationship GenerateFlowFile::Success("success", "success operational 
on the flow record");
+const unsigned int TEXT_LEN = 90;
+static const char TEXT_CHARS[TEXT_LEN+1] = 
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()-_=+/?.,';:\"?<>\n\t
 ";
 
 void GenerateFlowFile::initialize() {
   // Set the supported properties
@@ -64,6 +66,7 @@ void GenerateFlowFile::onTrigger(core::ProcessContext 
*context, core::ProcessSes
   int64_t batchSize = 1;
   bool uniqueFlowFile = true;
   int64_t fileSize = 1024;
+  bool textData = false;
 
   std::string value;
   if (context->getProperty(FileSize.getName(), value)) {
@@ -72,6 +75,9 @@ void GenerateFlowFile::onTrigger(core::ProcessContext 
*context, core::ProcessSes
   if (context->getProperty(BatchSize.getName(), value)) {
     core::Property::StringToInt(value, batchSize);
   }
+  if (context->getProperty(DataFormat.getName(), value)) {
+    textData = (value == GenerateFlowFile::DATA_FORMAT_TEXT);
+  }
   if (context->getProperty(UniqueFlowFiles.getName(), value)) {
     org::apache::nifi::minifi::utils::StringUtils::StringToBool(value, 
uniqueFlowFile);
   }
@@ -84,10 +90,17 @@ void GenerateFlowFile::onTrigger(core::ProcessContext 
*context, core::ProcessSes
     uint64_t dataSize = fileSize;
     GenerateFlowFile::WriteCallback callback(data, dataSize);
     char *current = data;
-    for (int i = 0; i < fileSize; i += sizeof(int)) {
-      int randValue = random();
-      *(reinterpret_cast<int*>(current)) = randValue;
-      current += sizeof(int);
+    if (textData) {
+      for (int i = 0; i < fileSize; i++) {
+        int randValue = random();
+        data[i] = TEXT_CHARS[randValue % TEXT_LEN];
+      }
+    } else {
+      for (int i = 0; i < fileSize; i += sizeof(int)) {
+        int randValue = random();
+        *(reinterpret_cast<int*>(current)) = randValue;
+        current += sizeof(int);
+      }
     }
     for (int i = 0; i < batchSize; i++) {
       // For each batch
@@ -101,14 +114,21 @@ void GenerateFlowFile::onTrigger(core::ProcessContext 
*context, core::ProcessSes
     delete[] data;
   } else {
     if (!_data) {
-      // We have not create the unique data yet
+      // We have not created the unique data yet
       _data = new char[fileSize];
       _dataSize = fileSize;
       char *current = _data;
-      for (int i = 0; i < fileSize; i += sizeof(int)) {
-        int randValue = random();
-        *(reinterpret_cast<int*>(current)) = randValue;
-        current += sizeof(int);
+      if (textData) {
+        for (int i = 0; i < fileSize; i++) {
+          int randValue = random();
+          _data[i] = TEXT_CHARS[randValue % TEXT_LEN];
+        }
+      } else {
+        for (int i = 0; i < fileSize; i += sizeof(int)) {
+          int randValue = random();
+          *(reinterpret_cast<int*>(current)) = randValue;
+          current += sizeof(int);
+        }
       }
     }
     GenerateFlowFile::WriteCallback callback(_data, _dataSize);

Reply via email to