You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2018/12/10 15:54:48 UTC

nifi-minifi-cpp git commit: MINIFICPP-691: Add method for getting processor description. Internal API change, but is strictly voluntary for contributors

Repository: nifi-minifi-cpp
Updated Branches:
  refs/heads/master 627d8fe2c -> 524118e13


MINIFICPP-691: Add method for getting processor description. Internal API change, but is strictly voluntary for contributors

This closes #457.

Signed-off-by: Aldrin Piri <al...@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/524118e1
Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/524118e1
Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/524118e1

Branch: refs/heads/master
Commit: 524118e137f50957ad0b38ee8c38faba76d98825
Parents: 627d8fe
Author: Marc Parisi <ph...@apache.org>
Authored: Thu Dec 6 07:25:37 2018 -0500
Committer: Aldrin Piri <al...@apache.org>
Committed: Mon Dec 10 10:53:10 2018 -0500

----------------------------------------------------------------------
 CMakeLists.txt                                  |   3 +-
 PROCESSORS.md                                   |   1 +
 extensions/bustache/ApplyTemplate.cpp           |   2 +-
 extensions/bustache/ApplyTemplate.h             |   3 +-
 extensions/bustache/CMakeLists.txt              |   2 +-
 extensions/civetweb/processors/ListenHTTP.h     |   7 +-
 extensions/gps/CMakeLists.txt                   |   2 +-
 extensions/gps/GetGPS.h                         |   3 +
 extensions/http-curl/processors/InvokeHTTP.h    |   4 +-
 extensions/http-curl/protocols/AgentPrinter.h   |   2 +-
 extensions/http-curl/protocols/RESTReceiver.h   |   2 +-
 extensions/http-curl/protocols/RESTSender.h     |   2 +-
 .../tests/ControllerServiceIntegrationTests.cpp |   4 +-
 extensions/libarchive/BinFiles.h                |   2 +-
 extensions/libarchive/CompressContent.h         |   2 +-
 extensions/libarchive/FocusArchiveEntry.h       |   4 +-
 extensions/libarchive/ManipulateArchive.h       |   2 +-
 extensions/libarchive/MergeContent.h            |   4 +-
 extensions/libarchive/UnfocusArchiveEntry.h     |   2 +-
 extensions/librdkafka/PublishKafka.h            |   4 +-
 .../mqtt/processors/AbstractMQTTProcessor.h     |   1 -
 extensions/mqtt/processors/ConsumeMQTT.h        |   2 +-
 extensions/mqtt/processors/PublishMQTT.h        |   2 +-
 extensions/mqtt/protocol/MQTTC2Protocol.cpp     |   2 +-
 extensions/pcap/CapturePacket.h                 |   4 +-
 extensions/script/ExecuteScript.h               |   6 +-
 extensions/sensors/GetEnvironmentalSensors.h    |   2 +-
 extensions/sensors/GetMovementSensors.h         |   2 +-
 extensions/sqlite/ExecuteSQL.h                  |   5 +-
 extensions/sqlite/PutSQL.h                      |   5 +-
 extensions/tensorflow/TFApplyGraph.h            |   4 +-
 extensions/tensorflow/TFConvertImageToTensor.h  |   2 +-
 extensions/tensorflow/TFExtractTopLabels.h      |   2 +-
 extensions/usb-camera/GetUSBCamera.h            |   2 +-
 extensions/windows-event-log/TailEventLog.h     |   2 +-
 libminifi/include/agent/agent_docs.h            | 108 ++++++++++---------
 libminifi/include/c2/ControllerSocketProtocol.h |   2 +-
 .../include/c2/triggers/FileUpdateTrigger.h     |   2 +-
 .../controllers/LinuxPowerManagementService.h   |   2 +-
 .../controllers/NetworkPrioritizerService.h     |   2 +-
 .../include/controllers/SSLContextService.h     |   2 +-
 .../controllers/UpdatePolicyControllerService.h |   3 +-
 libminifi/include/core/Core.h                   |   2 +
 libminifi/include/core/Resource.h               |  10 +-
 .../include/core/state/nodes/AgentInformation.h |   6 +-
 .../include/core/state/nodes/BuildInformation.h |   2 +-
 .../core/state/nodes/DeviceInformation.h        |   2 +-
 .../include/core/state/nodes/FlowInformation.h  |   2 +-
 .../include/core/state/nodes/ProcessMetrics.h   |   2 +-
 .../include/core/state/nodes/SystemMetrics.h    |   2 +-
 libminifi/include/processors/AppendHostInfo.h   |   2 +-
 libminifi/include/processors/ExecuteProcess.h   |  13 ++-
 libminifi/include/processors/ExtractText.h      |   2 +-
 libminifi/include/processors/GenerateFlowFile.h |   2 +-
 libminifi/include/processors/GetFile.h          |   2 +-
 libminifi/include/processors/GetTCP.h           |   2 +-
 libminifi/include/processors/HashContent.h      |   2 +-
 libminifi/include/processors/ListenSyslog.h     |   7 +-
 libminifi/include/processors/LogAttribute.h     |   2 +-
 libminifi/include/processors/PutFile.h          |   2 +-
 libminifi/include/processors/RouteOnAttribute.h |   2 +-
 libminifi/include/processors/TailFile.h         |   7 +-
 libminifi/include/processors/UpdateAttribute.h  |   3 +-
 libminifi/test/unit/ProcessorTests.cpp          |   2 +-
 main/Main.h                                     |   3 +-
 nanofi/include/cxx/CallbackProcessor.h          |   2 +-
 66 files changed, 182 insertions(+), 122 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7c81edb..6859b3f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -357,7 +357,8 @@ endif()
 if(BOOTSTRAP)
     add_subdirectory(thirdparty/cxxopts)
     createExtension(BOOTSTRAP "BOOTSTRAP" "Bootstraps documentation and other features" "extensions/bootstrap")
-	execute_process(COMMAND ${CMAKE_BINARY_DIR}/extensions/bootstrap/bstrp --inputc2docs "${CMAKE_SOURCE_DIR}/PROCESSORS.md" --outputc2docs "${CMAKE_SOURCE_DIR}/libminifi/include/agent/agent_docs.h")
+    # we don't currently need this route. A follow on should help re-write processor documentation from what exists in code, so this will remain here 
+	# execute_process(COMMAND ${CMAKE_BINARY_DIR}/extensions/bootstrap/bstrp --inputc2docs "${CMAKE_SOURCE_DIR}/PROCESSORS.md" --outputc2docs "${CMAKE_SOURCE_DIR}/libminifi/include/agent/agent_docs.h")
     return()
 endif()
 

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/PROCESSORS.md
----------------------------------------------------------------------
diff --git a/PROCESSORS.md b/PROCESSORS.md
index 9b77a61..2090632 100644
--- a/PROCESSORS.md
+++ b/PROCESSORS.md
@@ -33,6 +33,7 @@
 - [GenerateFlowFile](#generateflowfile)
 - [GetFile](#getfile)
 - [GetUSBCamera](#getusbcamera)
+- [GetTCP](#gettcp)
 - [HashContent](#hashcontent)
 - [InvokeHTTP](#invokehttp)
 - [ListenHTTP](#listenhttp)

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/bustache/ApplyTemplate.cpp
----------------------------------------------------------------------
diff --git a/extensions/bustache/ApplyTemplate.cpp b/extensions/bustache/ApplyTemplate.cpp
index a9ca4d0..5dad2bb 100644
--- a/extensions/bustache/ApplyTemplate.cpp
+++ b/extensions/bustache/ApplyTemplate.cpp
@@ -57,7 +57,7 @@ void ApplyTemplate::onTrigger(const std::shared_ptr<core::ProcessContext> &conte
   }
 
   std::string template_file;
-  context->getProperty(Template.getName(), template_file, flow_file);
+  context->getProperty(Template, template_file, flow_file);
   WriteCallback cb(template_file, flow_file);
   session->write(flow_file, &cb);
   session->transfer(flow_file, Success);

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/bustache/ApplyTemplate.h
----------------------------------------------------------------------
diff --git a/extensions/bustache/ApplyTemplate.h b/extensions/bustache/ApplyTemplate.h
index 9da0cca..2b5c9ec 100644
--- a/extensions/bustache/ApplyTemplate.h
+++ b/extensions/bustache/ApplyTemplate.h
@@ -73,7 +73,8 @@ class ApplyTemplate : public core::Processor {
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(ApplyTemplate);
+REGISTER_RESOURCE(ApplyTemplate, "Applies the mustache template specified by the \"Template\" property and writes the output to the flow file content. "
+    "FlowFile attributes are used as template parameters.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/bustache/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/extensions/bustache/CMakeLists.txt b/extensions/bustache/CMakeLists.txt
index 36814f4..4ae25a0 100644
--- a/extensions/bustache/CMakeLists.txt
+++ b/extensions/bustache/CMakeLists.txt
@@ -19,7 +19,7 @@
 
 cmake_minimum_required(VERSION 2.6)
 
-include_directories(../../libminifi/include  ../../libminifi/include/core  ../../thirdparty/spdlog-20170710/include ../../thirdparty/concurrentqueue ../../thirdparty/yaml-cpp-yaml-cpp-0.5.3/include ../../thirdparty/civetweb-1.9.1/include ../../thirdparty/) 
+include(${CMAKE_SOURCE_DIR}/extensions/ExtensionHeader.txt) 
 
 find_package(Boost COMPONENTS system filesystem iostreams REQUIRED)
 include_directories(${Boost_INCLUDE_DIRS})

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/civetweb/processors/ListenHTTP.h
----------------------------------------------------------------------
diff --git a/extensions/civetweb/processors/ListenHTTP.h b/extensions/civetweb/processors/ListenHTTP.h
index d7e5531..bce0b9e 100644
--- a/extensions/civetweb/processors/ListenHTTP.h
+++ b/extensions/civetweb/processors/ListenHTTP.h
@@ -169,7 +169,12 @@ class ListenHTTP : public core::Processor {
   std::unique_ptr<Handler> handler_;
 };
 
-REGISTER_RESOURCE(ListenHTTP);
+REGISTER_RESOURCE(ListenHTTP, "Starts an HTTP Server and listens on a given base path to transform incoming requests into FlowFiles. The default URI of the Service will be "
+    "http://{hostname}:{port}/contentListener. Only HEAD, POST, and GET requests are supported. PUT, and DELETE will result in an error and the HTTP response status code 405."
+    " The response body text for all requests, by default, is empty (length of 0). A static response body can be set for a given URI by sending input files to ListenHTTP with "
+    "the http.type attribute set to response_body. The response body FlowFile filename attribute is appended to the Base Path property (separated by a /) when mapped to incoming requests. "
+    "The mime.type attribute of the response body FlowFile is used for the Content-type header in responses. Response body content can be cleared by sending an empty (size 0) "
+    "FlowFile for a given URI mapping.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/gps/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/extensions/gps/CMakeLists.txt b/extensions/gps/CMakeLists.txt
index 8ef013d..8d6dd35 100644
--- a/extensions/gps/CMakeLists.txt
+++ b/extensions/gps/CMakeLists.txt
@@ -19,7 +19,7 @@
 
 cmake_minimum_required(VERSION 2.6)
 
-include_directories(../../libminifi/include  ../../libminifi/include/core/yaml  ../../libminifi/include/core  ../../thirdparty/spdlog-20170710/include ../../thirdparty/concurrentqueue ../../thirdparty/yaml-cpp-yaml-cpp-0.5.3/include ${CIVET_THIRDPARTY_ROOT}/include ../../thirdparty/) 
+include(${CMAKE_SOURCE_DIR}/extensions/ExtensionHeader.txt) 
 
 find_package(LibGPS REQUIRED)
 

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/gps/GetGPS.h
----------------------------------------------------------------------
diff --git a/extensions/gps/GetGPS.h b/extensions/gps/GetGPS.h
index b7df0a3..ba10ab1 100644
--- a/extensions/gps/GetGPS.h
+++ b/extensions/gps/GetGPS.h
@@ -82,6 +82,9 @@ private:
   std::shared_ptr<logging::Logger> logger_;
 };
 
+REGISTER_RESOURCE(GetGPS, "Obtains GPS coordinates from the GPSDHost and port.");
+
+
 } /* namespace processors */
 } /* namespace minifi */
 } /* namespace nifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/http-curl/processors/InvokeHTTP.h
----------------------------------------------------------------------
diff --git a/extensions/http-curl/processors/InvokeHTTP.h b/extensions/http-curl/processors/InvokeHTTP.h
index 3019c9c..3b83d9c 100644
--- a/extensions/http-curl/processors/InvokeHTTP.h
+++ b/extensions/http-curl/processors/InvokeHTTP.h
@@ -173,7 +173,9 @@ class InvokeHTTP : public core::Processor {
   static std::shared_ptr<utils::IdGenerator> id_generator_;
 };
 
-REGISTER_RESOURCE(InvokeHTTP)
+REGISTER_RESOURCE(InvokeHTTP,"An HTTP client processor which can interact with a configurable HTTP Endpoint. "
+    "The destination URL and HTTP Method are configurable. FlowFile attributes are converted to HTTP headers and the "
+    "FlowFile contents are included as the body of the request (if the HTTP Method is PUT, POST or PATCH).")
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/http-curl/protocols/AgentPrinter.h
----------------------------------------------------------------------
diff --git a/extensions/http-curl/protocols/AgentPrinter.h b/extensions/http-curl/protocols/AgentPrinter.h
index 6a9f12d..50000fe 100644
--- a/extensions/http-curl/protocols/AgentPrinter.h
+++ b/extensions/http-curl/protocols/AgentPrinter.h
@@ -69,7 +69,7 @@ class AgentPrinter : public RESTProtocol, public HeartBeatReporter {
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(AgentPrinter);
+REGISTER_RESOURCE(AgentPrinter, "Encapsulates printing agent information.");
 
 } /* namesapce c2 */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/http-curl/protocols/RESTReceiver.h
----------------------------------------------------------------------
diff --git a/extensions/http-curl/protocols/RESTReceiver.h b/extensions/http-curl/protocols/RESTReceiver.h
index 37258b0..6253c73 100644
--- a/extensions/http-curl/protocols/RESTReceiver.h
+++ b/extensions/http-curl/protocols/RESTReceiver.h
@@ -98,7 +98,7 @@ class RESTReceiver : public RESTProtocol, public HeartBeatReporter {
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(RESTReceiver);
+REGISTER_RESOURCE(RESTReceiver, "Provides a webserver to display C2 heartbeat information");
 
 } /* namesapce c2 */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/http-curl/protocols/RESTSender.h
----------------------------------------------------------------------
diff --git a/extensions/http-curl/protocols/RESTSender.h b/extensions/http-curl/protocols/RESTSender.h
index 44fdae8..4873ae3 100644
--- a/extensions/http-curl/protocols/RESTSender.h
+++ b/extensions/http-curl/protocols/RESTSender.h
@@ -67,7 +67,7 @@ class RESTSender : public RESTProtocol, public C2Protocol {
   std::string ack_uri_;
 };
 
-REGISTER_RESOURCE(RESTSender);
+REGISTER_RESOURCE(RESTSender, "Encapsulates the restful protocol that is built upon C2Protocol.");
 
 } /* namesapce c2 */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/http-curl/tests/ControllerServiceIntegrationTests.cpp
----------------------------------------------------------------------
diff --git a/extensions/http-curl/tests/ControllerServiceIntegrationTests.cpp b/extensions/http-curl/tests/ControllerServiceIntegrationTests.cpp
index 8fb1daf..e098760 100644
--- a/extensions/http-curl/tests/ControllerServiceIntegrationTests.cpp
+++ b/extensions/http-curl/tests/ControllerServiceIntegrationTests.cpp
@@ -41,8 +41,8 @@
 #include "unit/MockClasses.h"
 #include "unit/ProvenanceTestHelper.h"
 
-REGISTER_RESOURCE(MockControllerService);
-REGISTER_RESOURCE(MockProcessor);
+REGISTER_RESOURCE(MockControllerService, "");
+REGISTER_RESOURCE(MockProcessor, "");
 
 std::shared_ptr<core::controller::StandardControllerServiceNode> newCsNode(std::shared_ptr<core::controller::ControllerServiceProvider> provider, const std::string id) {
   std::shared_ptr<core::controller::ControllerService> service = std::make_shared<MockControllerService>();

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/libarchive/BinFiles.h
----------------------------------------------------------------------
diff --git a/extensions/libarchive/BinFiles.h b/extensions/libarchive/BinFiles.h
index 52dbcb1..1fcbfbe 100644
--- a/extensions/libarchive/BinFiles.h
+++ b/extensions/libarchive/BinFiles.h
@@ -295,7 +295,7 @@ class BinFiles : public core::Processor {
   int maxBinCount_;
 };
 
-REGISTER_RESOURCE(BinFiles);
+REGISTER_RESOURCE(BinFiles, "Bins flow files into buckets based on the number of entries or size of entries");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/libarchive/CompressContent.h
----------------------------------------------------------------------
diff --git a/extensions/libarchive/CompressContent.h b/extensions/libarchive/CompressContent.h
index fcd163c..871c690 100644
--- a/extensions/libarchive/CompressContent.h
+++ b/extensions/libarchive/CompressContent.h
@@ -369,7 +369,7 @@ private:
   std::map<std::string, std::string> fileExtension_;
 };
 
-REGISTER_RESOURCE (CompressContent);
+REGISTER_RESOURCE (CompressContent, "Compresses or decompresses the contents of FlowFiles using a user-specified compression algorithm and updates the mime.type attribute as appropriate");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/libarchive/FocusArchiveEntry.h
----------------------------------------------------------------------
diff --git a/extensions/libarchive/FocusArchiveEntry.h b/extensions/libarchive/FocusArchiveEntry.h
index 8a87df7..6f4ff2f 100644
--- a/extensions/libarchive/FocusArchiveEntry.h
+++ b/extensions/libarchive/FocusArchiveEntry.h
@@ -92,7 +92,9 @@ class FocusArchiveEntry : public core::Processor {
   static std::shared_ptr<utils::IdGenerator> id_generator_;
 };
 
-REGISTER_RESOURCE(FocusArchiveEntry);
+REGISTER_RESOURCE(FocusArchiveEntry, "Allows manipulation of entries within an archive (e.g. TAR) by focusing on one entry within the archive at a time. "
+    "When an archive entry is focused, that entry is treated as the content of the FlowFile and may be manipulated independently of the rest of the archive."
+    " To restore the FlowFile to its original state, use UnfocusArchiveEntry.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/libarchive/ManipulateArchive.h
----------------------------------------------------------------------
diff --git a/extensions/libarchive/ManipulateArchive.h b/extensions/libarchive/ManipulateArchive.h
index 18a8b6f..7980c35 100644
--- a/extensions/libarchive/ManipulateArchive.h
+++ b/extensions/libarchive/ManipulateArchive.h
@@ -86,7 +86,7 @@ private:
 	std::string before_, after_, operation_, destination_, targetEntry_;
 };
 
-REGISTER_RESOURCE(ManipulateArchive);
+REGISTER_RESOURCE(ManipulateArchive, "Performs an operation which manipulates an archive without needing to split the archive into multiple FlowFiles.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/libarchive/MergeContent.h
----------------------------------------------------------------------
diff --git a/extensions/libarchive/MergeContent.h b/extensions/libarchive/MergeContent.h
index 7e694db..3c38055 100644
--- a/extensions/libarchive/MergeContent.h
+++ b/extensions/libarchive/MergeContent.h
@@ -334,7 +334,9 @@ class MergeContent : public processors::BinFiles {
   std::string readContent(std::string path);
 };
 
-REGISTER_RESOURCE(MergeContent);
+REGISTER_RESOURCE(MergeContent, "Merges a Group of FlowFiles together based on a user-defined strategy and packages them into a single FlowFile. "
+    "MergeContent should be configured with only one incoming connection as it won't create grouped Flow Files."
+    "This processor updates the mime.type attribute as appropriate.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/libarchive/UnfocusArchiveEntry.h
----------------------------------------------------------------------
diff --git a/extensions/libarchive/UnfocusArchiveEntry.h b/extensions/libarchive/UnfocusArchiveEntry.h
index 99c7e4c..0ae71d5 100644
--- a/extensions/libarchive/UnfocusArchiveEntry.h
+++ b/extensions/libarchive/UnfocusArchiveEntry.h
@@ -87,7 +87,7 @@ class UnfocusArchiveEntry : public core::Processor {
   std::shared_ptr<Logger> logger_;
 };
 
-REGISTER_RESOURCE(UnfocusArchiveEntry);
+REGISTER_RESOURCE(UnfocusArchiveEntry, "Restores a FlowFile which has had an archive entry focused via FocusArchiveEntry to its original state.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/librdkafka/PublishKafka.h
----------------------------------------------------------------------
diff --git a/extensions/librdkafka/PublishKafka.h b/extensions/librdkafka/PublishKafka.h
index a8af6ef..8160dbd 100644
--- a/extensions/librdkafka/PublishKafka.h
+++ b/extensions/librdkafka/PublishKafka.h
@@ -62,6 +62,7 @@ public:
       core::Processor(name, uuid), logger_(logging::LoggerFactory<PublishKafka>::getLogger()) {
     conf_ = nullptr;
     rk_ = nullptr;
+    max_seg_size_  = -1;
     topic_conf_ = nullptr;
     rkt_ = nullptr;
   }
@@ -202,7 +203,8 @@ private:
   std::regex attributeNameRegex;
 };
 
-REGISTER_RESOURCE (PublishKafka);
+REGISTER_RESOURCE (PublishKafka, "This Processor puts the contents of a FlowFile to a Topic in Apache Kafka. The content of a FlowFile becomes the contents of a Kafka message. "
+    "This message is optionally assigned a key by using the <Kafka Key> Property.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/mqtt/processors/AbstractMQTTProcessor.h
----------------------------------------------------------------------
diff --git a/extensions/mqtt/processors/AbstractMQTTProcessor.h b/extensions/mqtt/processors/AbstractMQTTProcessor.h
index aa271bc..cabdae4 100644
--- a/extensions/mqtt/processors/AbstractMQTTProcessor.h
+++ b/extensions/mqtt/processors/AbstractMQTTProcessor.h
@@ -157,7 +157,6 @@ class AbstractMQTTProcessor : public core::Processor {
   std::string securityPrivateKeyPassWord_;
 };
 
-REGISTER_RESOURCE(AbstractMQTTProcessor);
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/mqtt/processors/ConsumeMQTT.h
----------------------------------------------------------------------
diff --git a/extensions/mqtt/processors/ConsumeMQTT.h b/extensions/mqtt/processors/ConsumeMQTT.h
index 2951035..a1ea13d 100644
--- a/extensions/mqtt/processors/ConsumeMQTT.h
+++ b/extensions/mqtt/processors/ConsumeMQTT.h
@@ -115,7 +115,7 @@ class ConsumeMQTT : public processors::AbstractMQTTProcessor {
   moodycamel::ConcurrentQueue<MQTTClient_message *> queue_;
 };
 
-REGISTER_RESOURCE(ConsumeMQTT);
+REGISTER_RESOURCE(ConsumeMQTT, "This Processor gets the contents of a FlowFile from a MQTT broker for a specified topic. The the payload of the MQTT message becomes content of a FlowFile");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/mqtt/processors/PublishMQTT.h
----------------------------------------------------------------------
diff --git a/extensions/mqtt/processors/PublishMQTT.h b/extensions/mqtt/processors/PublishMQTT.h
index fac83e2..f6c01ab 100644
--- a/extensions/mqtt/processors/PublishMQTT.h
+++ b/extensions/mqtt/processors/PublishMQTT.h
@@ -137,7 +137,7 @@ class PublishMQTT : public processors::AbstractMQTTProcessor {
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(PublishMQTT);
+REGISTER_RESOURCE(PublishMQTT, "PublishMQTT serializes FlowFile content as an MQTT payload, sending the message to the configured topic and broker.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/mqtt/protocol/MQTTC2Protocol.cpp
----------------------------------------------------------------------
diff --git a/extensions/mqtt/protocol/MQTTC2Protocol.cpp b/extensions/mqtt/protocol/MQTTC2Protocol.cpp
index dceeedf..7590617 100644
--- a/extensions/mqtt/protocol/MQTTC2Protocol.cpp
+++ b/extensions/mqtt/protocol/MQTTC2Protocol.cpp
@@ -23,7 +23,7 @@ namespace nifi {
 namespace minifi {
 namespace c2 {
 
-MQTTC2Protocol::MQTTC2Protocol(std::string name, utils::Identifier uuid = utils::Identifier())
+MQTTC2Protocol::MQTTC2Protocol(std::string name, utils::Identifier uuid)
     : C2Protocol(name, uuid),
       logger_(logging::LoggerFactory<Connectable>::getLogger()) {
 }

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/pcap/CapturePacket.h
----------------------------------------------------------------------
diff --git a/extensions/pcap/CapturePacket.h b/extensions/pcap/CapturePacket.h
index c4c0f5f..1ec145d 100644
--- a/extensions/pcap/CapturePacket.h
+++ b/extensions/pcap/CapturePacket.h
@@ -165,7 +165,9 @@ class CapturePacket : public core::Processor {
   static std::shared_ptr<utils::IdGenerator> id_generator_;
 };
 
-REGISTER_RESOURCE(CapturePacket)
+REGISTER_RESOURCE(CapturePacket, "CapturePacket captures and writes one or more packets into a PCAP file that will be used as the content of a flow file."
+    " Configuration options exist to adjust the batching of PCAP files. PCAP batching will place a single PCAP into a flow file. "
+    "A regular expression selects network interfaces. Bluetooth network interfaces can be selected through a separate option.")
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/script/ExecuteScript.h
----------------------------------------------------------------------
diff --git a/extensions/script/ExecuteScript.h b/extensions/script/ExecuteScript.h
index 49b61cd..0a81b6c 100644
--- a/extensions/script/ExecuteScript.h
+++ b/extensions/script/ExecuteScript.h
@@ -88,7 +88,11 @@ class ExecuteScript : public core::Processor {
   }
 };
 
-REGISTER_RESOURCE(ExecuteScript); // NOLINT
+REGISTER_RESOURCE(ExecuteScript, "Executes a script given the flow file and a process session. The script is responsible for handling the incoming flow file (transfer to SUCCESS or remove, e.g.) "
+    "as well as any flow files created by the script. If the handling is incomplete or incorrect, the session will be rolled back.Scripts must define an onTrigger function which accepts NiFi Context"
+    " and Property objects. For efficiency, scripts are executed once when the processor is run, then the onTrigger method is called for each incoming flowfile. This enables scripts to keep state "
+    "if they wish, although there will be a script context per concurrent task of the processor. In order to, e.g., compute an arithmetic sum based on incoming flow file information, set the "
+    "concurrent tasks to 1."); // NOLINT
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/sensors/GetEnvironmentalSensors.h
----------------------------------------------------------------------
diff --git a/extensions/sensors/GetEnvironmentalSensors.h b/extensions/sensors/GetEnvironmentalSensors.h
index 3515174..0163e6c 100644
--- a/extensions/sensors/GetEnvironmentalSensors.h
+++ b/extensions/sensors/GetEnvironmentalSensors.h
@@ -75,7 +75,7 @@ class GetEnvironmentalSensors : public SensorBase {
   static std::shared_ptr<utils::IdGenerator> id_generator_;
 };
 
-REGISTER_RESOURCE(GetEnvironmentalSensors)
+REGISTER_RESOURCE(GetEnvironmentalSensors, "Provides sensor information from known sensors to include humidity and pressure data")
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/sensors/GetMovementSensors.h
----------------------------------------------------------------------
diff --git a/extensions/sensors/GetMovementSensors.h b/extensions/sensors/GetMovementSensors.h
index 4ee3de2..d462591 100644
--- a/extensions/sensors/GetMovementSensors.h
+++ b/extensions/sensors/GetMovementSensors.h
@@ -67,7 +67,7 @@ class GetMovementSensors : public SensorBase {
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(GetMovementSensors)
+REGISTER_RESOURCE(GetMovementSensors, "Defines a processor that is able to retrieve sensor information from a class of known servo sensors")
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/sqlite/ExecuteSQL.h
----------------------------------------------------------------------
diff --git a/extensions/sqlite/ExecuteSQL.h b/extensions/sqlite/ExecuteSQL.h
index 907c682..2f7d55e 100644
--- a/extensions/sqlite/ExecuteSQL.h
+++ b/extensions/sqlite/ExecuteSQL.h
@@ -72,7 +72,10 @@ class ExecuteSQL : public core::Processor {
   std::string sql_;
 };
 
-REGISTER_RESOURCE(ExecuteSQL); // NOLINT
+REGISTER_RESOURCE(ExecuteSQL, "Execute provided SQL query. Query result rows will be outputted as new flow files with attribute keys equal to "
+    "result column names and values equal to result values. There will be one output FlowFile per result row. This processor can be scheduled to "
+    "run using the standard timer-based scheduling methods, or it can be triggered by an incoming FlowFile. If it is triggered by an incoming FlowFile, "
+    "then attributes of that FlowFile will be available when evaluating the query."); // NOLINT
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/sqlite/PutSQL.h
----------------------------------------------------------------------
diff --git a/extensions/sqlite/PutSQL.h b/extensions/sqlite/PutSQL.h
index 5e11efe..abf9178 100644
--- a/extensions/sqlite/PutSQL.h
+++ b/extensions/sqlite/PutSQL.h
@@ -35,6 +35,7 @@ class PutSQL : public core::Processor {
  public:
   explicit PutSQL(const std::string &name, utils::Identifier uuid = utils::Identifier())
       : Processor(name, uuid),
+        batch_size_(100),
         logger_(logging::LoggerFactory<PutSQL>::getLogger()) {
   }
 
@@ -74,7 +75,9 @@ class PutSQL : public core::Processor {
   std::string sql_;
 };
 
-REGISTER_RESOURCE(PutSQL); // NOLINT
+REGISTER_RESOURCE(PutSQL, "Executes a SQL UPDATE or INSERT command. The content of an incoming FlowFile is expected to be the SQL command to execute. "
+    "The SQL command may use the ? character to bind parameters. In this case, the parameters to use must exist as FlowFile attributes with the naming "
+    "convention sql.args.N.type and sql.args.N.value, where N is a positive integer. The content of the FlowFile is expected to be in UTF-8 format."); // NOLINT
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/tensorflow/TFApplyGraph.h
----------------------------------------------------------------------
diff --git a/extensions/tensorflow/TFApplyGraph.h b/extensions/tensorflow/TFApplyGraph.h
index 7b2f58a..33fe7d1 100644
--- a/extensions/tensorflow/TFApplyGraph.h
+++ b/extensions/tensorflow/TFApplyGraph.h
@@ -104,7 +104,9 @@ class TFApplyGraph : public core::Processor {
   moodycamel::ConcurrentQueue<std::shared_ptr<TFContext>> tf_context_q_;
 };
 
-REGISTER_RESOURCE(TFApplyGraph); // NOLINT
+REGISTER_RESOURCE(TFApplyGraph, "Applies a TensorFlow graph to the tensor protobuf supplied as input. The tensor is fed into the node specified by the Input Node property. "
+    "The output FlowFile is a tensor protobuf extracted from the node specified by the Output Node property. TensorFlow graphs are read dynamically by feeding a graph "
+    "protobuf to the processor with the tf.type property set to graph."); // NOLINT
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/tensorflow/TFConvertImageToTensor.h
----------------------------------------------------------------------
diff --git a/extensions/tensorflow/TFConvertImageToTensor.h b/extensions/tensorflow/TFConvertImageToTensor.h
index 796903c..e65c0cb 100644
--- a/extensions/tensorflow/TFConvertImageToTensor.h
+++ b/extensions/tensorflow/TFConvertImageToTensor.h
@@ -107,7 +107,7 @@ class TFConvertImageToTensor : public core::Processor {
   moodycamel::ConcurrentQueue<std::shared_ptr<TFContext>> tf_context_q_;
 };
 
-REGISTER_RESOURCE(TFConvertImageToTensor); // NOLINT
+REGISTER_RESOURCE(TFConvertImageToTensor, "Converts the input image file into a tensor protobuf. The image will be resized to the given output tensor dimensions."); // NOLINT
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/tensorflow/TFExtractTopLabels.h
----------------------------------------------------------------------
diff --git a/extensions/tensorflow/TFExtractTopLabels.h b/extensions/tensorflow/TFExtractTopLabels.h
index ab1ece8..65a3651 100644
--- a/extensions/tensorflow/TFExtractTopLabels.h
+++ b/extensions/tensorflow/TFExtractTopLabels.h
@@ -81,7 +81,7 @@ class TFExtractTopLabels : public core::Processor {
   std::mutex labels_mtx_;
 };
 
-REGISTER_RESOURCE(TFExtractTopLabels); // NOLINT
+REGISTER_RESOURCE(TFExtractTopLabels, "Extracts the top 5 labels for categorical inference models"); // NOLINT
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/usb-camera/GetUSBCamera.h
----------------------------------------------------------------------
diff --git a/extensions/usb-camera/GetUSBCamera.h b/extensions/usb-camera/GetUSBCamera.h
index edfbe5f..0699c7c 100644
--- a/extensions/usb-camera/GetUSBCamera.h
+++ b/extensions/usb-camera/GetUSBCamera.h
@@ -138,7 +138,7 @@ class GetUSBCamera : public core::Processor {
   void cleanupUvc();
 };
 
-REGISTER_RESOURCE(GetUSBCamera);
+REGISTER_RESOURCE(GetUSBCamera, "Gets images from USB Video Class (UVC)-compatible devices. Outputs one flow file per frame at the rate specified by the FPS property in the format specified by the Format property.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/extensions/windows-event-log/TailEventLog.h
----------------------------------------------------------------------
diff --git a/extensions/windows-event-log/TailEventLog.h b/extensions/windows-event-log/TailEventLog.h
index 8f5828e..c921387 100644
--- a/extensions/windows-event-log/TailEventLog.h
+++ b/extensions/windows-event-log/TailEventLog.h
@@ -154,7 +154,7 @@ private:
   // Logger
   std::shared_ptr<logging::Logger> logger_;
 };
-REGISTER_RESOURCE(TailEventLog);
+REGISTER_RESOURCE(TailEventLog, "Windows event log reader that functions as a stateful tail of the provided windows event log name");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/agent/agent_docs.h
----------------------------------------------------------------------
diff --git a/libminifi/include/agent/agent_docs.h b/libminifi/include/agent/agent_docs.h
index 6b48eb3..343dd92 100644
--- a/libminifi/include/agent/agent_docs.h
+++ b/libminifi/include/agent/agent_docs.h
@@ -1,60 +1,64 @@
 /*** Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements.  See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License.  You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 #ifndef AGENT_DOCS_H
 #define AGENT_DOCS_H
 #include <string>
 #include <stdlib.h>
 #include <utils/StringUtils.h>
 namespace org {
- namespace apache { 
-namespace nifi { 
-namespace minifi { 
-class AgentDocs{ 
- public: 
-     static std::string getDescription(const std::string &feature){ 
-      static std::map<std::string,std::string>  extensions; 
-       if (extensions.empty()){ 
-     extensions.insert(std::make_pair("AppendHostInfo",utils::StringUtils::hex_ascii("417070656e647320686f737420696e666f726d6174696f6e2073756368206173204950206164647265737320616e6420686f73746e616d652020617320616e2061747472696275746520746f0a696e636f6d696e6720666c6f7766696c65732e")));
-     extensions.insert(std::make_pair("ApplyTemplate",utils::StringUtils::hex_ascii("4170706c69657320746865206d757374616368652074656d706c6174652073706563696669656420627920746865202254656d706c617465222070726f706572747920616e64207772697465730a746865206f757470757420746f2074686520666c6f772066696c6520636f6e74656e742e20466c6f7746696c6520617474726962757465732061726520757365642061732074656d706c6174650a706172616d65746572732e")));
-     extensions.insert(std::make_pair("CapturePacket",utils::StringUtils::hex_ascii("436170747572655061636b657420636170747572657320616e6420777269746573206f6e65206f72206d6f7265207061636b65747320696e746f206120504341502066696c6520746861742077696c6c20626520757365642061732074686520636f6e74656e740a6f66206120666c6f772066696c652e20436f6e66696775726174696f6e206f7074696f6e7320657869737420746f2061646a75737420746865206261746368696e67206f6620504341502066696c65732e2050434150206261746368696e672077696c6c200a706c61636520612073696e676c65205043415020696e746f206120666c6f772066696c652e204120726567756c61722065787072657373696f6e2073656c65637473206e6574776f726b20696e74657266616365732e20426c7565746f6f7468200a6e6574776f726b20696e74657266616365732063616e2062652073656c6563746564207468726f7567682061207365706172617465206f7074696f6e2e")));
-     extensions.insert(std::make_pair("HashContent",utils::StringUtils::hex_ascii("48617368436f6e74656e742063616c63756c617465732074686520636865636b73756d206f662074686520636f6e74656e74206f662074686520666c6f7766696c6520616e64206164647320697420617320616e206174747269627574652e0a436f6e66696775726174696f6e206f7074696f6e7320657869737420746f2073656c6563742068617368696e6720616c676f726974686d20616e642073657420746865206e616d65206f6620746865206174747269627574652e")));
-     extensions.insert(std::make_pair("ExecuteProcess",utils::StringUtils::hex_ascii("52756e7320616e206f7065726174696e672073797374656d20636f6d6d616e642073706563696669656420627920746865207573657220616e642077726974657320746865206f7574707574206f660a7468617420636f6d6d616e6420746f206120466c6f7746696c652e2049662074686520636f6d6d616e6420697320657870656374656420746f206265206c6f6e672d72756e6e696e672c207468650a50726f636573736f722063616e206f757470757420746865207061727469616c2064617461206f6e20612073706563696669656420696e74657276616c2e205768656e2074686973206f7074696f6e0a697320757365642c20746865206f757470757420697320657870656374656420746f20626520696e207465787475616c20666f726d61742c206173206974207479706963616c6c7920646f65730a6e6f74206d616b652073656e736520746f2073706c69742062696e6172792064617461206f6e206172626974726172792074696d652d626173656420696e74657276616c732e")));
-     extensions.insert(std::make_pair("ExecuteScript",utils::StringUtils::hex_ascii("457865637574657320612073637269707420676976656e2074686520666c6f772066696c6520616e6420612070726f636573732073657373696f6e2e20546865207363726970742069730a726573706f6e7369626c6520666f722068616e646c696e672074686520696e636f6d696e6720666c6f772066696c6520287472616e7366657220746f2053554343455353206f722072656d6f76652c0a652e672e292061732077656c6c20617320616e7920666c6f772066696c6573206372656174656420627920746865207363726970742e204966207468652068616e646c696e672069730a696e636f6d706c657465206f7220696e636f72726563742c207468652073657373696f6e2077696c6c20626520726f6c6c6564206261636b2e0a0a53637269707473206d75737420646566696e6520616e206f6e547269676765722066756e6374696f6e2077686963682061636365707473204e69466920436f6e7465787420616e640a50726f7065727479206f626a656374732e20466f7220656666696369656e63792c207363726970747320617265206578656375746564206f6e6365207768656e207468652070726f636573736f720a69732072756e2c207468656e20746865
 206f6e54726967676572206d6574686f642069732063616c6c656420666f72206561636820696e636f6d696e6720666c6f7766696c652e20546869730a656e61626c6573207363726970747320746f206b656570207374617465206966207468657920776973682c20616c74686f7567682074686572652077696c6c2062652061207363726970740a636f6e746578742070657220636f6e63757272656e74207461736b206f66207468652070726f636573736f722e20496e206f7264657220746f2c20652e672e2c20636f6d7075746520616e0a61726974686d657469632073756d206261736564206f6e20696e636f6d696e6720666c6f772066696c6520696e666f726d6174696f6e2c207365742074686520636f6e63757272656e740a7461736b7320746f20312e0a0a4d756c7469706c65207661726961626c6573206172652070726f7669646564206175746f6d61746963616c6c7920746f2073637269707420636f6e74657874733a0a0a7c204e616d65207c20507572706f7365207c0a7c202d207c202d207c0a7c20606c6f6760207c20746865206c6f6767696e67206f626a656374207573656420666f72206c6f6767696e672064656275672c20696e666f2c207761726e2c20616e64206572726f72207c0a7c206052454c5f5355434345535360207c207468652022737
 56363657373222072656c6174696f6e73686970207c0a7c206052454c5f4641494c55524560207c2074686520226661696c757265222072656c6174696f6e73686970207c")));
-     extensions.insert(std::make_pair("ExecuteSQL",utils::StringUtils::hex_ascii("457865637574652070726f76696465642053514c2071756572792e20517565727920726573756c7420726f77732077696c6c206265206f7574707574746564206173206e657720666c6f770a66696c6573207769746820617474726962757465206b65797320657175616c20746f20726573756c7420636f6c756d6e206e616d657320616e642076616c75657320657175616c20746f0a726573756c742076616c7565732e2054686572652077696c6c206265206f6e65206f757470757420466c6f7746696c652070657220726573756c7420726f772e20546869732070726f636573736f720a63616e206265207363686564756c656420746f2072756e207573696e6720746865207374616e646172642074696d65722d6261736564207363686564756c696e67206d6574686f64732c206f720a69742063616e2062652074726967676572656420627920616e20696e636f6d696e6720466c6f7746696c652e2049662069742069732074726967676572656420627920616e20696e636f6d696e670a466c6f7746696c652c207468656e2061747472696275746573206f66207468617420466c6f7746696c652077696c6c20626520617661696c61626c65207768656e206576616
 c756174696e670a7468652071756572792e")));
-     extensions.insert(std::make_pair("GetFile",utils::StringUtils::hex_ascii("4372656174657320466c6f7746696c65732066726f6d2066696c657320696e2061206469726563746f72792e204e6946692077696c6c2069676e6f72652066696c657320697420646f65736e27740a68617665206174206c656173742072656164207065726d697373696f6e7320666f722e")));
-     extensions.insert(std::make_pair("GetUSBCamera",utils::StringUtils::hex_ascii("4765747320696d616765732066726f6d2055534220566964656f20436c6173732028555643292d636f6d70617469626c6520646576696365732e204f757470757473206f6e6520666c6f770a66696c6520706572206672616d6520617420746865207261746520737065636966696564206279207468652060465053602070726f706572747920696e2074686520666f726d61740a737065636966696564206279207468652060466f726d6174602070726f70657274792e0a0a43616d657261206672616d65732061726520636170747572656420696e2061207365706172617465206261636b67726f756e642074687265616420616e642061726520656d69747465642061730a666c6f772066696c65732075706f6e20636170747572652e20546865206f6e54726967676572206f6620746869732070726f636573736f722069732061204e4f4f5020616e642077696c6c0a7265706f727420616e206572726f7220696620696e707574732061726520666c6f77656420696e746f207468652070726f636573736f722e2042656361757365206f6620746869732c207468650a7374616e64617264206576656e742f74696d65722064726976656e207363686564756c696e672
 06f7074696f6e732068617665206e6f206566666563742e0a0a4966207468652057696474682f4865696768742070726f7065727469657320617265207365742c2074686520636c6f7365737420737570706f7274656420696d616765206672616d650a64696d656e73696f6e7320746f2074686520676976656e2057696474682f4865696768742070726f706572746965732061726520757365642e0a0a4966206e6f2057696474682f4865696768742070726f7065727469657320617265207365742c20616e64207468652063616d65726120737570706f727473206d756c7469706c6520696d6167650a73697a652f7175616c6974792073657474696e67732c207468652068696768657374207175616c6974792069732063686f73656e20666f722074686520676976656e204650532e20466f720a6578616d706c653a0a0a2d204966207468652046505320697320313020616e64207468652063616d65726120737570706f7274732061206d6178696d756d206f66203139323078313038302061742074686973204650532c0a20206f757470757420696d616765732077696c6c2062652031393230783738300a2d204966207468652046505320697320363020616e64207468652063616d65726120737570706f7274732061206d6178696d756d206f66203332307832343020
 61742074686973204650532c0a20206f757470757420696d616765732077696c6c2062652033323078323430")));
-     extensions.insert(std::make_pair("GenerateFlowFile",utils::StringUtils::hex_ascii("546869732070726f636573736f72206372656174657320466c6f7746696c657320776974682072616e646f6d2064617461206f7220637573746f6d20636f6e74656e742e0a47656e6572617465466c6f7746696c652069732075736566756c20666f72206c6f61642074657374696e672c20636f6e66696775726174696f6e2c20616e642073696d756c6174696f6e2e")));
-     extensions.insert(std::make_pair("InvokeHTTP",utils::StringUtils::hex_ascii("416e204854545020636c69656e742070726f636573736f722077686963682063616e20696e7465726163742077697468206120636f6e666967757261626c65204854545020456e64706f696e742e0a5468652064657374696e6174696f6e2055524c20616e642048545450204d6574686f642061726520636f6e666967757261626c652e20466c6f7746696c652061747472696275746573206172650a636f6e76657274656420746f2048545450206865616465727320616e642074686520466c6f7746696c6520636f6e74656e74732061726520696e636c756465642061732074686520626f6479206f660a746865207265717565737420286966207468652048545450204d6574686f64206973205055542c20504f5354206f72205041544348292e")));
-     extensions.insert(std::make_pair("LogAttribute",utils::StringUtils::hex_ascii("4c6f67732061747472696275746573206f6620666c6f772066696c657320696e20746865204d694e694669206170706c69636174696f6e206c6f672e")));
-     extensions.insert(std::make_pair("ListenHTTP",utils::StringUtils::hex_ascii("53746172747320616e20485454502053657276657220616e64206c697374656e73206f6e206120676976656e2062617365207061746820746f207472616e73666f726d20696e636f6d696e670a726571756573747320696e746f20466c6f7746696c65732e205468652064656661756c7420555249206f662074686520536572766963652077696c6c2062650a60687474703a2f2f7b686f73746e616d657d3a7b706f72747d2f636f6e74656e744c697374656e6572602e204f6e6c7920484541442c20504f53542c20616e6420474554207265717565737473206172650a737570706f727465642e205055542c20616e642044454c4554452077696c6c20726573756c7420696e20616e206572726f7220616e6420746865204854545020726573706f6e73650a73746174757320636f6465203430352e0a0a54686520726573706f6e736520626f6479207465787420666f7220616c6c2072657175657374732c2062792064656661756c742c20697320656d70747920286c656e677468206f662030292e20410a73746174696320726573706f6e736520626f64792063616e2062652073657420666f72206120676976656e205552492062792073656e64696e6720696e7075742
 066696c657320746f0a4c697374656e485454502077697468207468652060687474702e7479706560206174747269627574652073657420746f2060726573706f6e73655f626f6479602e2054686520726573706f6e73650a626f647920466c6f7746696c65206066696c656e616d65602061747472696275746520697320617070656e64656420746f207468652060426173652050617468602070726f70657274790a28736570617261746564206279206120602f6029207768656e206d617070656420746f20696e636f6d696e672072657175657374732e2054686520606d696d652e74797065600a617474726962757465206f662074686520726573706f6e736520626f647920466c6f7746696c65206973207573656420666f72207468652060436f6e74656e742d7479706560206865616465720a696e20726573706f6e7365732e20526573706f6e736520626f647920636f6e74656e742063616e20626520636c65617265642062792073656e64696e6720616e20656d707479202873697a652030290a466c6f7746696c6520666f72206120676976656e20555249206d617070696e672e")));
-     extensions.insert(std::make_pair("ListenSyslog",utils::StringUtils::hex_ascii("4c697374656e7320666f72205379736c6f67206d65737361676573206265696e672073656e7420746f206120676976656e20706f7274206f76657220544350206f72205544502e0a496e636f6d696e67206d657373616765732061726520636865636b656420616761696e737420726567756c61722065787072657373696f6e7320666f72205246433534323420616e640a5246433331363420666f726d6174746564206d657373616765732e2054686520666f726d6174206f662065616368206d6573736167652069733a0a285c3c5052494f524954595c3e292856455253494f4e20292854494d455354414d50292028484f53544e414d45292028424f4459292077686572652076657273696f6e2069730a6f7074696f6e616c2e205468652074696d657374616d702063616e20626520616e20524643353432342074696d657374616d702077697468206120666f726d6174206f660a22797979792d4d4d2d646427542748483a6d6d3a73732e535a22206f722022797979792d4d4d2d646427542748483a6d6d3a73732e532b68683a6d6d222c206f722069742063616e20626520616e0a524643333136342074696d657374616d702077697468206120666f726d6174206
 f6620224d4d4d20642048483a6d6d3a7373222e20496620616e20696e636f6d696e67206d657373616765730a6d617463686573206f6e65206f66207468657365207061747465726e732c20746865206d6573736167652077696c6c2062652070617273656420616e642074686520696e646976696475616c0a7069656365732077696c6c20626520706c6163656420696e20466c6f7746696c6520617474726962757465732c207769746820746865206f726967696e616c206d65737361676520696e207468650a636f6e74656e74206f662074686520466c6f7746696c652e20496620616e20696e636f6d696e67206d65737361676520646f6573206e6f74206d61746368206f6e65206f662074686573650a7061747465726e732069742077696c6c206e6f742062652070617273656420616e6420746865207379736c6f672e76616c6964206174747269627574652077696c6c2062652073657420746f0a66616c7365207769746820746865206f726967696e616c206d65737361676520696e2074686520636f6e74656e74206f662074686520466c6f7746696c652e2056616c6964206d657373616765730a77696c6c206265207472616e73666572726564206f6e2074686520737563636573732072656c6174696f6e736869702c20616e6420696e76616c6964206d65737361
 6765732077696c6c2062650a7472616e73666572726564206f6e2074686520696e76616c69642072656c6174696f6e736869702e")));
-     extensions.insert(std::make_pair("PutFile",utils::StringUtils::hex_ascii("5772697465732074686520636f6e74656e7473206f66206120466c6f7746696c6520746f20746865206c6f63616c2066696c652073797374656d")));
-     extensions.insert(std::make_pair("PutSQL",utils::StringUtils::hex_ascii("457865637574657320612053514c20555044415445206f7220494e5345525420636f6d6d616e642e2054686520636f6e74656e74206f6620616e20696e636f6d696e6720466c6f7746696c652069730a657870656374656420746f206265207468652053514c20636f6d6d616e6420746f20657865637574652e205468652053514c20636f6d6d616e64206d6179207573652074686520603f600a63686172616374657220746f2062696e6420706172616d65746572732e20496e207468697320636173652c2074686520706172616d657465727320746f20757365206d7573742065786973742061730a466c6f7746696c652061747472696275746573207769746820746865206e616d696e6720636f6e76656e74696f6e206073716c2e617267732e4e2e747970656020616e640a6073716c2e617267732e4e2e76616c7565602c20776865726520604e60206973206120706f73697469766520696e74656765722e2054686520636f6e74656e74206f66207468650a466c6f7746696c6520697320657870656374656420746f20626520696e205554462d3820666f726d61742e")));
-     extensions.insert(std::make_pair("RouteOnAttribute",utils::StringUtils::hex_ascii("526f7574657320466c6f7746696c6573206261736564206f6e2074686569722041747472696275746573207573696e6720746865204174747269627574652045787072657373696f6e204c616e67756167652e")));
-     extensions.insert(std::make_pair("TailFile",utils::StringUtils::hex_ascii("225461696c732220612066696c652c206f722061206c697374206f662066696c65732c20696e67657374696e6720646174612066726f6d207468652066696c652061732069742069730a7772697474656e20746f207468652066696c652e205468652066696c6520697320657870656374656420746f206265207465787475616c2e204461746120697320696e676573746564206f6e6c790a7768656e2061206e6577206c696e6520697320656e636f756e7465726564202863617272696167652072657475726e206f72206e65772d6c696e6520636861726163746572206f720a636f6d62696e6174696f6e292e204966207468652066696c6520746f207461696c20697320706572696f646963616c6c792022726f6c6c6564206f766572222c2061732069730a67656e6572616c6c792074686520636173652077697468206c6f672066696c65732c20616e206f7074696f6e616c20526f6c6c696e672046696c656e616d65205061747465726e2063616e2062650a7573656420746f20726574726965766520646174612066726f6d2066696c65732074686174206861766520726f6c6c6564206f7665722c206576656e2069662074686520726f6c6c6f7665720a6f636375727
 26564207768696c65204e69466920776173206e6f742072756e6e696e67202870726f76696465642074686174207468652064617461207374696c6c206578697374732075706f6e0a72657374617274206f66204e694669292e2049742069732067656e6572616c6c7920616476697361626c6520746f20736574207468652052756e205363686564756c6520746f2061206665770a7365636f6e64732c20726174686572207468616e2072756e6e696e672077697468207468652064656661756c742076616c7565206f66203020736563732c20617320746869730a50726f636573736f722077696c6c20636f6e73756d652061206c6f74206f66207265736f7572636573206966207363686564756c6564207665727920616767726573736976656c792e2041740a746869732074696d652c20746869732050726f636573736f7220646f6573206e6f7420737570706f727420696e67657374696e672066696c657320746861742068617665206265656e0a636f6d70726573736564207768656e2027726f6c6c6564206f766572272e")));
-     extensions.insert(std::make_pair("TFApplyGraph",utils::StringUtils::hex_ascii("4170706c69657320612054656e736f72466c6f7720677261706820746f207468652074656e736f722070726f746f62756620737570706c69656420617320696e7075742e205468652074656e736f720a69732066656420696e746f20746865206e6f646520737065636966696564206279207468652060496e707574204e6f6465602070726f70657274792e20546865206f75747075740a466c6f7746696c6520697320612074656e736f722070726f746f627566206578747261637465642066726f6d20746865206e6f6465207370656369666965642062792074686520604f75747075740a4e6f6465602070726f70657274792e0a0a54656e736f72466c6f77206772617068732061726520726561642064796e616d6963616c6c792062792066656564696e6720612067726170682070726f746f62756620746f207468650a70726f636573736f72207769746820746865206074662e74797065602070726f70657274792073657420746f20606772617068602e")));
-     extensions.insert(std::make_pair("TFConvertImageToTensor",utils::StringUtils::hex_ascii("436f6e76657274732074686520696e70757420696d6167652066696c6520696e746f20612074656e736f722070726f746f6275662e2054686520696d6167652077696c6c20626520726573697a65640a746f2074686520676976656e206f75747075742074656e736f722064696d656e73696f6e732e")));
-     extensions.insert(std::make_pair("TFExtractTopLabels",utils::StringUtils::hex_ascii("45787472616374732074686520746f702035206c6162656c7320666f722063617465676f726963616c20696e666572656e6365206d6f64656c732e0a0a4c6162656c732061726520666564206173206e65776c696e652028605c6e6029202d64656c696d697465642066696c65732077686572652065616368206c696e652069732061206c6162656c0a666f72207468652074656e736f7220696e646578206571756976616c656e7420746f20746865206c696e65206e756d6265722e204c6162656c2066696c6573206d7573742062652066656420696e0a7769746820746865206074662e74797065602070726f70657274792073657420746f20606c6162656c73602e0a0a54686520746f702035206c6162656c7320617265207772697474656e20746f2074686520666f6c6c6f77696e6720617474726962757465733a0a0a2d2060746f705f6c6162656c5f30600a2d2060746f705f6c6162656c5f31600a2d2060746f705f6c6162656c5f32600a2d2060746f705f6c6162656c5f33600a2d2060746f705f6c6162656c5f3460")));
+namespace apache {
+namespace nifi {
+namespace minifi {
+class AgentDocs {
+ private:
+  static std::map<std::string, std::string> &getDescriptions() {
+    static std::map<std::string, std::string> extensions;
+    return extensions;
+  }
+
+ public:
+
+  /**
+   * Updates the internal map with the feature description
+   * @param feature feature ( CS or processor ) whose description is being provided.
+   * @param description provided description.
+   * @return true if update occurred.
+   */
+  static bool putDescription(const std::string &feature, const std::string &description) {
+    return getDescriptions().insert(std::make_pair(feature, description)).second;
+  }
+
+  /**
+   * Gets the description for the provided feature.
+   * @param feature feature whose description we will provide
+   * @return true if found, false otherwise
+   */
+  static bool getDescription(const std::string &feature, std::string &value) {
+    const std::map<std::string, std::string> &extensions = getDescriptions();
+    auto iff = extensions.find(feature);
+    if (iff != extensions.end()) {
+      value = iff->second;
+      return true;
+    } else {
+      return false;
+    }
+  }
+};
 }
-    return extensions[feature]; 
- 
-} 
-}; 
-} 
-} 
-} 
-} 
-#endif
\ No newline at end of file
+}
+}
+}
+#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/c2/ControllerSocketProtocol.h
----------------------------------------------------------------------
diff --git a/libminifi/include/c2/ControllerSocketProtocol.h b/libminifi/include/c2/ControllerSocketProtocol.h
index 4481409..061fbac 100644
--- a/libminifi/include/c2/ControllerSocketProtocol.h
+++ b/libminifi/include/c2/ControllerSocketProtocol.h
@@ -83,7 +83,7 @@ class ControllerSocketProtocol : public HeartBeatReporter {
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(ControllerSocketProtocol);
+REGISTER_RESOURCE(ControllerSocketProtocol, "Creates a reporter that can handle basic c2 operations for a localized environment through a simple TCP socket.");
 
 } /* namesapce c2 */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/c2/triggers/FileUpdateTrigger.h
----------------------------------------------------------------------
diff --git a/libminifi/include/c2/triggers/FileUpdateTrigger.h b/libminifi/include/c2/triggers/FileUpdateTrigger.h
index 031a245..466685f 100644
--- a/libminifi/include/c2/triggers/FileUpdateTrigger.h
+++ b/libminifi/include/c2/triggers/FileUpdateTrigger.h
@@ -115,7 +115,7 @@ class FileUpdateTrigger : public C2Trigger {
   std::shared_ptr<logging::Logger> logger_;
 };
 // add the trigger to the known resources.
-REGISTER_RESOURCE(FileUpdateTrigger)
+REGISTER_RESOURCE(FileUpdateTrigger, "Defines a file update trigger when the last write time of a file has been changed.")
 
 } /* namesapce c2 */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/controllers/LinuxPowerManagementService.h
----------------------------------------------------------------------
diff --git a/libminifi/include/controllers/LinuxPowerManagementService.h b/libminifi/include/controllers/LinuxPowerManagementService.h
index 4800161..9e729b1 100644
--- a/libminifi/include/controllers/LinuxPowerManagementService.h
+++ b/libminifi/include/controllers/LinuxPowerManagementService.h
@@ -136,7 +136,7 @@ class LinuxPowerManagerService : public ThreadManagementService {
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(LinuxPowerManagerService);
+REGISTER_RESOURCE(LinuxPowerManagerService, "Linux power management service that enables control of power usage in the agent through Linux power management information");
 
 } /* namespace controllers */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/controllers/NetworkPrioritizerService.h
----------------------------------------------------------------------
diff --git a/libminifi/include/controllers/NetworkPrioritizerService.h b/libminifi/include/controllers/NetworkPrioritizerService.h
index 4a09fff..3d15a72 100644
--- a/libminifi/include/controllers/NetworkPrioritizerService.h
+++ b/libminifi/include/controllers/NetworkPrioritizerService.h
@@ -136,7 +136,7 @@ class NetworkPrioritizerService : public core::controller::ControllerService, pu
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(NetworkPrioritizerService);
+REGISTER_RESOURCE(NetworkPrioritizerService, "Enables selection of networking interfaces on defined parameters to include ouput and payload size");
 
 } /* namespace controllers */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/controllers/SSLContextService.h
----------------------------------------------------------------------
diff --git a/libminifi/include/controllers/SSLContextService.h b/libminifi/include/controllers/SSLContextService.h
index c8677e0..c513ed1 100644
--- a/libminifi/include/controllers/SSLContextService.h
+++ b/libminifi/include/controllers/SSLContextService.h
@@ -214,7 +214,7 @@ class SSLContextService : public core::controller::ControllerService {
   std::shared_ptr<logging::Logger> logger_;
 };
 typedef int (SSLContextService::*ptr)(char *, int, int, void *);
-REGISTER_RESOURCE(SSLContextService);
+REGISTER_RESOURCE(SSLContextService, "Controller service that provides SSL/TLS capabilities to consuming interfaces");
 
 } /* namespace controllers */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/controllers/UpdatePolicyControllerService.h
----------------------------------------------------------------------
diff --git a/libminifi/include/controllers/UpdatePolicyControllerService.h b/libminifi/include/controllers/UpdatePolicyControllerService.h
index dd50a1c..d1f7338 100644
--- a/libminifi/include/controllers/UpdatePolicyControllerService.h
+++ b/libminifi/include/controllers/UpdatePolicyControllerService.h
@@ -90,7 +90,8 @@ class UpdatePolicyControllerService : public core::controller::ControllerService
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(UpdatePolicyControllerService);
+REGISTER_RESOURCE(UpdatePolicyControllerService, "UpdatePolicyControllerService allows a flow specific policy on allowing or disallowing updates. "
+    "Since the flow dictates the purpose of a device it will also be used to dictate updates to specific components.");
 
 } /* namespace controllers */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/core/Core.h
----------------------------------------------------------------------
diff --git a/libminifi/include/core/Core.h b/libminifi/include/core/Core.h
index aaf5bc7..2938e27 100644
--- a/libminifi/include/core/Core.h
+++ b/libminifi/include/core/Core.h
@@ -17,7 +17,9 @@
  */
 #ifndef LIBMINIFI_INCLUDE_CORE_CORE_H_
 #define LIBMINIFI_INCLUDE_CORE_CORE_H_
+#ifndef WIN32_LEAN_AND_MEAN
 #define WIN32_LEAN_AND_MEAN 1
+#endif
 #include <cstdlib>
 #include <iostream>
 #include <memory>

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/core/Resource.h
----------------------------------------------------------------------
diff --git a/libminifi/include/core/Resource.h b/libminifi/include/core/Resource.h
index 5acb844..06d05a3 100644
--- a/libminifi/include/core/Resource.h
+++ b/libminifi/include/core/Resource.h
@@ -23,6 +23,7 @@
 #endif
 
 #include "ClassLoader.h"
+#include "agent/agent_docs.h"
 
 namespace org {
 namespace apache {
@@ -37,8 +38,11 @@ template<class T>
 class StaticClassType {
  public:
 
-  StaticClassType(const std::string &name) {
+  StaticClassType(const std::string &name, const std::string &description = "") {
     // Notify when the static member is created
+    if (!description.empty()){
+      minifi::AgentDocs::putDescription(name,description);
+    }
 #ifdef MODULE_NAME
     ClassLoader::getDefaultClassLoader().registerClass(name, std::unique_ptr<ObjectFactory>(new DefautObjectFactory<T>(MAKESTRING(MODULE_NAME))));
 #else
@@ -47,9 +51,9 @@ class StaticClassType {
   }
 };
 
-#define REGISTER_RESOURCE(CLASSNAME) \
+#define REGISTER_RESOURCE(CLASSNAME,DESC) \
         static core::StaticClassType<CLASSNAME> \
-        CLASSNAME##_registrar( #CLASSNAME );
+        CLASSNAME##_registrar( #CLASSNAME, DESC );
 
 #define REGISTER_RESOURCE_AS(CLASSNAME,NAME) \
         static core::StaticClassType<CLASSNAME> \

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/core/state/nodes/AgentInformation.h
----------------------------------------------------------------------
diff --git a/libminifi/include/core/state/nodes/AgentInformation.h b/libminifi/include/core/state/nodes/AgentInformation.h
index bd8ec01..3e08acc 100644
--- a/libminifi/include/core/state/nodes/AgentInformation.h
+++ b/libminifi/include/core/state/nodes/AgentInformation.h
@@ -245,9 +245,9 @@ class ComponentManifest : public DeviceInformation {
           int nameLength = group.class_name_.length() - lastOfIdx;
           processorName = group.class_name_.substr(lastOfIdx, nameLength);
         }
-        auto description = AgentDocs::getDescription(processorName);
+        std::string description;
 
-        if (!description.empty()) {
+        if (AgentDocs::getDescription(processorName, description)) {
           SerializedResponseNode proc_desc;
           proc_desc.name = "typeDescription";
           proc_desc.value = description;
@@ -591,7 +591,7 @@ class AgentInformation : public DeviceInformation, public AgentMonitor, public A
 
 };
 
-REGISTER_RESOURCE(AgentInformation);
+REGISTER_RESOURCE(AgentInformation, "Node part of an AST that defines all agent information, to include the manifest, and bundle information as part of a healthy hearbeat.");
 
 } /* namespace metrics */
 } /* namespace state */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/core/state/nodes/BuildInformation.h
----------------------------------------------------------------------
diff --git a/libminifi/include/core/state/nodes/BuildInformation.h b/libminifi/include/core/state/nodes/BuildInformation.h
index 7290a75..62cebd5 100644
--- a/libminifi/include/core/state/nodes/BuildInformation.h
+++ b/libminifi/include/core/state/nodes/BuildInformation.h
@@ -128,7 +128,7 @@ class BuildInformation : public DeviceInformation {
   }
 };
 
-REGISTER_RESOURCE(BuildInformation);
+REGISTER_RESOURCE(BuildInformation, "Node part of an AST that defines the pertinent build information for this agent binary");
 
 } /* namespace metrics */
 } /* namespace state */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/core/state/nodes/DeviceInformation.h
----------------------------------------------------------------------
diff --git a/libminifi/include/core/state/nodes/DeviceInformation.h b/libminifi/include/core/state/nodes/DeviceInformation.h
index f0e6ccd..a41cee9 100644
--- a/libminifi/include/core/state/nodes/DeviceInformation.h
+++ b/libminifi/include/core/state/nodes/DeviceInformation.h
@@ -473,7 +473,7 @@ class DeviceInfoNode : public DeviceInformation {
   std::string device_id_;
 };
 
-REGISTER_RESOURCE(DeviceInfoNode);
+REGISTER_RESOURCE(DeviceInfoNode, "Node part of an AST that defines device characteristics to the C2 protocol");
 
 } /* namespace metrics */
 } /* namespace state */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/core/state/nodes/FlowInformation.h
----------------------------------------------------------------------
diff --git a/libminifi/include/core/state/nodes/FlowInformation.h b/libminifi/include/core/state/nodes/FlowInformation.h
index b7c2768..a1a2e89 100644
--- a/libminifi/include/core/state/nodes/FlowInformation.h
+++ b/libminifi/include/core/state/nodes/FlowInformation.h
@@ -250,7 +250,7 @@ class FlowInformation : public FlowMonitor {
 
 };
 
-REGISTER_RESOURCE(FlowInformation);
+REGISTER_RESOURCE(FlowInformation, "Node part of an AST that defines the flow ID and flow URL deployed to this agent");
 
 } /* namespace response */
 } /* namespace state */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/core/state/nodes/ProcessMetrics.h
----------------------------------------------------------------------
diff --git a/libminifi/include/core/state/nodes/ProcessMetrics.h b/libminifi/include/core/state/nodes/ProcessMetrics.h
index 7d210cc..b8e2230 100644
--- a/libminifi/include/core/state/nodes/ProcessMetrics.h
+++ b/libminifi/include/core/state/nodes/ProcessMetrics.h
@@ -94,7 +94,7 @@ class ProcessMetrics : public ResponseNode {
 
 };
 
-REGISTER_RESOURCE(ProcessMetrics);
+REGISTER_RESOURCE(ProcessMetrics, "Node part of an AST that defines the Processor information and metrics subtree");
 
 } /* namespace metrics */
 } /* namespace state */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/core/state/nodes/SystemMetrics.h
----------------------------------------------------------------------
diff --git a/libminifi/include/core/state/nodes/SystemMetrics.h b/libminifi/include/core/state/nodes/SystemMetrics.h
index 5668e8f..a6ab091 100644
--- a/libminifi/include/core/state/nodes/SystemMetrics.h
+++ b/libminifi/include/core/state/nodes/SystemMetrics.h
@@ -107,7 +107,7 @@ class SystemInformation : public DeviceInformation {
 
 };
 
-REGISTER_RESOURCE(SystemInformation);
+REGISTER_RESOURCE(SystemInformation, "Node part of an AST that defines the System information and metrics subtree");
 } /* namespace metrics */
 } /* namespace state */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/AppendHostInfo.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/AppendHostInfo.h b/libminifi/include/processors/AppendHostInfo.h
index 17f6389..928c53f 100644
--- a/libminifi/include/processors/AppendHostInfo.h
+++ b/libminifi/include/processors/AppendHostInfo.h
@@ -71,7 +71,7 @@ class AppendHostInfo : public core::Processor {
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(AppendHostInfo);
+REGISTER_RESOURCE(AppendHostInfo, "Appends host information such as IP address and hostname as an attribute to incoming flowfiles.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/ExecuteProcess.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/ExecuteProcess.h b/libminifi/include/processors/ExecuteProcess.h
index cd3a371..a1c9197 100644
--- a/libminifi/include/processors/ExecuteProcess.h
+++ b/libminifi/include/processors/ExecuteProcess.h
@@ -55,7 +55,7 @@ class ExecuteProcess : public core::Processor {
   /*!
    * Create a new processor
    */
-  ExecuteProcess(std::string name,  utils::Identifier uuid = utils::Identifier())
+  ExecuteProcess(std::string name, utils::Identifier uuid = utils::Identifier())
       : Processor(name, uuid),
         logger_(logging::LoggerFactory<ExecuteProcess>::getLogger()) {
     _redirectErrorStream = false;
@@ -113,7 +113,8 @@ class ExecuteProcess : public core::Processor {
   std::string _command;
   std::string _commandArgument;
   std::string _workingDir;
-  int64_t _batchDuration;bool _redirectErrorStream;
+  int64_t _batchDuration;
+  bool _redirectErrorStream;
   // Full command
   std::string _fullCommand;
   // whether the process is running
@@ -122,9 +123,13 @@ class ExecuteProcess : public core::Processor {
   pid_t _pid;
 };
 
-REGISTER_RESOURCE(ExecuteProcess);
+REGISTER_RESOURCE(ExecuteProcess, "Runs an operating system command specified by the user and writes the output of that command to a FlowFile. If the command is expected to be long-running,"
+                  "the Processor can output the partial data on a specified interval. When this option is used, the output is expected to be in textual format,"
+                  "as it typically does not make sense to split binary data on arbitrary time-based intervals.")
+;
 #endif
-} /* namespace processors */
+}
+/* namespace processors */
 } /* namespace minifi */
 } /* namespace nifi */
 } /* namespace apache */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/ExtractText.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/ExtractText.h b/libminifi/include/processors/ExtractText.h
index fcaf09d..4caf349 100644
--- a/libminifi/include/processors/ExtractText.h
+++ b/libminifi/include/processors/ExtractText.h
@@ -79,7 +79,7 @@ private:
     std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(ExtractText);
+REGISTER_RESOURCE(ExtractText,"Extracts the content of a FlowFile and places it into an attribute.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/GenerateFlowFile.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/GenerateFlowFile.h b/libminifi/include/processors/GenerateFlowFile.h
index d3c4c44..e7afc8f 100644
--- a/libminifi/include/processors/GenerateFlowFile.h
+++ b/libminifi/include/processors/GenerateFlowFile.h
@@ -91,7 +91,7 @@ class GenerateFlowFile : public core::Processor {
   uint64_t _dataSize;
 };
 
-REGISTER_RESOURCE(GenerateFlowFile);
+REGISTER_RESOURCE(GenerateFlowFile, "This processor creates FlowFiles with random data or custom content. GenerateFlowFile is useful for load testing, configuration, and simulation.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/GetFile.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/GetFile.h b/libminifi/include/processors/GetFile.h
index fb1191e..38f0251 100644
--- a/libminifi/include/processors/GetFile.h
+++ b/libminifi/include/processors/GetFile.h
@@ -194,7 +194,7 @@ class GetFile : public core::Processor, public state::response::MetricsNodeSourc
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(GetFile);
+REGISTER_RESOURCE(GetFile,"Creates FlowFiles from files in a directory. MiNiFi will ignore files for which it doesn't have read permissions.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/GetTCP.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/GetTCP.h b/libminifi/include/processors/GetTCP.h
index 85b449f..79d76e8 100644
--- a/libminifi/include/processors/GetTCP.h
+++ b/libminifi/include/processors/GetTCP.h
@@ -286,7 +286,7 @@ class GetTCP : public core::Processor, public state::response::MetricsNodeSource
 
 };
 
-REGISTER_RESOURCE(GetTCP);
+REGISTER_RESOURCE(GetTCP, "Establishes a TCP Server that defines and retrieves one or more byte messages from clients");
 
 
 } /* namespace processors */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/HashContent.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/HashContent.h b/libminifi/include/processors/HashContent.h
index 28b865a..4fdc68c 100644
--- a/libminifi/include/processors/HashContent.h
+++ b/libminifi/include/processors/HashContent.h
@@ -186,7 +186,7 @@ class HashContent : public core::Processor {
   bool failOnEmpty_;
 };
 
-REGISTER_RESOURCE(HashContent);
+REGISTER_RESOURCE(HashContent,"HashContent calculates the checksum of the content of the flowfile and adds it as an attribute. Configuration options exist to select hashing algorithm and set the name of the attribute.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/ListenSyslog.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/ListenSyslog.h b/libminifi/include/processors/ListenSyslog.h
index 69223c4..9d3bc12 100644
--- a/libminifi/include/processors/ListenSyslog.h
+++ b/libminifi/include/processors/ListenSyslog.h
@@ -213,7 +213,12 @@ class ListenSyslog : public core::Processor {
   char _buffer[2048];
 };
 
-REGISTER_RESOURCE(ListenSyslog);
+REGISTER_RESOURCE(ListenSyslog,"Listens for Syslog messages being sent to a given port over TCP or UDP. Incoming messages are checked against regular expressions for RFC5424 and RFC3164 formatted messages. "
+                  "The format of each message is: (<PRIORITY>)(VERSION )(TIMESTAMP) (HOSTNAME) (BODY) where version is optional. The timestamp can be an RFC5424 timestamp with a format of "
+                  "\"yyyy-MM-dd'T'HH:mm:ss.SZ\" or \"yyyy-MM-dd'T'HH:mm:ss.S+hh:mm\", or it can be an RFC3164 timestamp with a format of \"MMM d HH:mm:ss\". If an incoming messages matches "
+                  "one of these patterns, the message will be parsed and the individual pieces will be placed in FlowFile attributes, with the original message in the content of the FlowFile. "
+                  "If an incoming message does not match one of these patterns it will not be parsed and the syslog.valid attribute will be set to false with the original message in the content "
+                  "of the FlowFile. Valid messages will be transferred on the success relationship, and invalid messages will be transferred on the invalid relationship.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/LogAttribute.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/LogAttribute.h b/libminifi/include/processors/LogAttribute.h
index 412e068..1c5b2e4 100644
--- a/libminifi/include/processors/LogAttribute.h
+++ b/libminifi/include/processors/LogAttribute.h
@@ -123,7 +123,7 @@ class LogAttribute : public core::Processor {
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(LogAttribute);
+REGISTER_RESOURCE(LogAttribute, "Logs attributes of flow files in the MiNiFi application log.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/PutFile.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/PutFile.h b/libminifi/include/processors/PutFile.h
index ba410d5..cfc8924 100644
--- a/libminifi/include/processors/PutFile.h
+++ b/libminifi/include/processors/PutFile.h
@@ -114,7 +114,7 @@ class PutFile : public core::Processor {
   static std::shared_ptr<utils::IdGenerator> id_generator_;
 };
 
-REGISTER_RESOURCE(PutFile);
+REGISTER_RESOURCE(PutFile,"Writes the contents of a FlowFile to the local file system");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/RouteOnAttribute.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/RouteOnAttribute.h b/libminifi/include/processors/RouteOnAttribute.h
index 0737f8f..f2c0c9a 100644
--- a/libminifi/include/processors/RouteOnAttribute.h
+++ b/libminifi/include/processors/RouteOnAttribute.h
@@ -73,7 +73,7 @@ class RouteOnAttribute : public core::Processor {
   std::map<std::string, core::Relationship> route_rels_;
 };
 
-REGISTER_RESOURCE(RouteOnAttribute);
+REGISTER_RESOURCE(RouteOnAttribute, "Routes FlowFiles based on their Attributes using the Attribute Expression Language.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/TailFile.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/TailFile.h b/libminifi/include/processors/TailFile.h
index a98e990..c781f4d 100644
--- a/libminifi/include/processors/TailFile.h
+++ b/libminifi/include/processors/TailFile.h
@@ -101,7 +101,12 @@ class TailFile : public core::Processor {
   std::shared_ptr<logging::Logger> logger_;
 };
 
-REGISTER_RESOURCE(TailFile);
+REGISTER_RESOURCE(TailFile, "\"Tails\" a file, or a list of files, ingesting data from the file as it is written to the file. The file is expected to be textual."
+    " Data is ingested only when a new line is encountered (carriage return or new-line character or combination). If the file to tail is periodically \"rolled over\","
+    " as is generally the case with log files, an optional Rolling Filename Pattern can be used to retrieve data from files that have rolled over, even if the rollover"
+    " occurred while NiFi was not running (provided that the data still exists upon restart of NiFi). It is generally advisable to set the Run Schedule to a few seconds,"
+    " rather than running with the default value of 0 secs, as this Processor will consume a lot of resources if scheduled very aggressively. At this time, this Processor"
+    " does not support ingesting files that have been compressed when 'rolled over'.");
 
 // Matched File Item for Roll over check
 typedef struct {

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/include/processors/UpdateAttribute.h
----------------------------------------------------------------------
diff --git a/libminifi/include/processors/UpdateAttribute.h b/libminifi/include/processors/UpdateAttribute.h
index a768a87..04c1d9c 100644
--- a/libminifi/include/processors/UpdateAttribute.h
+++ b/libminifi/include/processors/UpdateAttribute.h
@@ -67,7 +67,8 @@ class UpdateAttribute : public core::Processor {
   std::vector<core::Property> attributes_;
 };
 
-REGISTER_RESOURCE(UpdateAttribute);
+REGISTER_RESOURCE(UpdateAttribute, "This processor updates the attributes of a FlowFile using properties that are added by the user. "
+    "This allows you to set default attribute changes that affect every FlowFile going through the processor, equivalent to the \"basic\" usage in Apache NiFi.");
 
 } /* namespace processors */
 } /* namespace minifi */

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/libminifi/test/unit/ProcessorTests.cpp
----------------------------------------------------------------------
diff --git a/libminifi/test/unit/ProcessorTests.cpp b/libminifi/test/unit/ProcessorTests.cpp
index 88f9b77..bbc68ac 100644
--- a/libminifi/test/unit/ProcessorTests.cpp
+++ b/libminifi/test/unit/ProcessorTests.cpp
@@ -362,7 +362,7 @@ class TestProcessorNoContent : public minifi::core::Processor {
   }
 };
 
-REGISTER_RESOURCE(TestProcessorNoContent);
+REGISTER_RESOURCE(TestProcessorNoContent, "test resource");
 
 TEST_CASE("TestEmptyContent", "[emptyContent]") {
   TestController testController;

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/main/Main.h
----------------------------------------------------------------------
diff --git a/main/Main.h b/main/Main.h
index 5f30ebb..d306ea8 100644
--- a/main/Main.h
+++ b/main/Main.h
@@ -24,8 +24,9 @@
 #else
 #define FILE_SEPARATOR "/"
 #endif
-
+#ifndef WIN32_LEAN_AND_MEAN
 #define WIN32_LEAN_AND_MEAN
+#endif
 //! Main thread sleep interval 1 second
 #define SLEEP_INTERVAL 1
 //! Main thread stop wait time

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/524118e1/nanofi/include/cxx/CallbackProcessor.h
----------------------------------------------------------------------
diff --git a/nanofi/include/cxx/CallbackProcessor.h b/nanofi/include/cxx/CallbackProcessor.h
index 81c5546..21e8200 100644
--- a/nanofi/include/cxx/CallbackProcessor.h
+++ b/nanofi/include/cxx/CallbackProcessor.h
@@ -90,7 +90,7 @@ class CallbackProcessor : public core::Processor {
 
 };
 
-REGISTER_RESOURCE(CallbackProcessor);
+REGISTER_RESOURCE(CallbackProcessor, "");
 
 } /* namespace processors */
 } /* namespace minifi */