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 2016/10/13 15:07:36 UTC

[18/18] nifi-minifi-cpp git commit: MINIFI-34 Establishing CMake build system to provide build functionality equivalent to pre-existing Makefile.

MINIFI-34 Establishing CMake build system to provide build functionality equivalent to pre-existing Makefile.

Updating .travis.yml to support CMake build system.


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/b02af540
Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/b02af540
Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/b02af540

Branch: refs/heads/master
Commit: b02af540c4bc664be77174b32c4350dd7971b13d
Parents: 8beb377
Author: Aldrin Piri <al...@apache.org>
Authored: Thu May 5 17:32:57 2016 -0400
Committer: Aldrin Piri <al...@apache.org>
Committed: Thu Oct 13 11:06:55 2016 -0400

----------------------------------------------------------------------
 .gitignore                                      |    7 +
 .travis.yml                                     |    2 +-
 CMakeLists.txt                                  |   74 +
 Makefile                                        |  109 -
 README.md                                       |   90 +-
 inc/Configure.h                                 |  115 -
 inc/Connection.h                                |  201 --
 inc/Exception.h                                 |   95 -
 inc/FlowControlProtocol.h                       |  339 --
 inc/FlowController.h                            |  248 --
 inc/FlowFileRecord.h                            |  220 --
 inc/GenerateFlowFile.h                          |   87 -
 inc/GetFile.h                                   |  117 -
 inc/ListenSyslog.h                              |  209 --
 inc/LogAttribute.h                              |  128 -
 inc/Logger.h                                    |  154 -
 inc/ProcessContext.h                            |   99 -
 inc/ProcessGroup.h                              |  182 -
 inc/ProcessSession.h                            |  116 -
 inc/Processor.h                                 |  346 --
 inc/Property.h                                  |  344 --
 inc/RealTimeDataCollector.h                     |  131 -
 inc/Relationship.h                              |   87 -
 inc/RemoteProcessorGroupPort.h                  |   96 -
 inc/ResourceClaim.h                             |   92 -
 inc/SchedulingAgent.h                           |   98 -
 inc/Site2SiteClientProtocol.h                   |  638 ----
 inc/Site2SitePeer.h                             |  364 --
 inc/TailFile.h                                  |   93 -
 inc/TimeUtil.h                                  |   82 -
 inc/TimerDrivenSchedulingAgent.h                |   66 -
 inc/spdlog/async_logger.h                       |   90 -
 inc/spdlog/common.h                             |  116 -
 inc/spdlog/details/async_log_helper.h           |  326 --
 inc/spdlog/details/async_logger_impl.h          |   82 -
 inc/spdlog/details/file_helper.h                |  144 -
 inc/spdlog/details/format.cc                    | 1353 --------
 inc/spdlog/details/format.h                     | 3155 ------------------
 inc/spdlog/details/line_logger.h                |  221 --
 inc/spdlog/details/log_msg.h                    |   98 -
 inc/spdlog/details/logger_impl.h                |  320 --
 inc/spdlog/details/mpmc_bounded_q.h             |  175 -
 inc/spdlog/details/null_mutex.h                 |   43 -
 inc/spdlog/details/os.h                         |  198 --
 inc/spdlog/details/pattern_formatter_impl.h     |  628 ----
 inc/spdlog/details/registry.h                   |  180 -
 inc/spdlog/details/spdlog_impl.h                |  154 -
 inc/spdlog/formatter.h                          |   58 -
 inc/spdlog/logger.h                             |  132 -
 inc/spdlog/sinks/base_sink.h                    |   66 -
 inc/spdlog/sinks/file_sinks.h                   |  232 --
 inc/spdlog/sinks/null_sink.h                    |   52 -
 inc/spdlog/sinks/ostream_sink.h                 |   67 -
 inc/spdlog/sinks/sink.h                         |   42 -
 inc/spdlog/sinks/stdout_sinks.h                 |   71 -
 inc/spdlog/sinks/syslog_sink.h                  |  102 -
 inc/spdlog/spdlog.h                             |  155 -
 inc/spdlog/tweakme.h                            |   74 -
 include/spdlog/async_logger.h                   |   90 +
 include/spdlog/common.h                         |  116 +
 include/spdlog/details/async_log_helper.h       |  326 ++
 include/spdlog/details/async_logger_impl.h      |   82 +
 include/spdlog/details/file_helper.h            |  144 +
 include/spdlog/details/format.cc                | 1353 ++++++++
 include/spdlog/details/format.h                 | 3155 ++++++++++++++++++
 include/spdlog/details/line_logger.h            |  221 ++
 include/spdlog/details/log_msg.h                |   98 +
 include/spdlog/details/logger_impl.h            |  320 ++
 include/spdlog/details/mpmc_bounded_q.h         |  175 +
 include/spdlog/details/null_mutex.h             |   43 +
 include/spdlog/details/os.h                     |  198 ++
 include/spdlog/details/pattern_formatter_impl.h |  628 ++++
 include/spdlog/details/registry.h               |  180 +
 include/spdlog/details/spdlog_impl.h            |  154 +
 include/spdlog/formatter.h                      |   58 +
 include/spdlog/logger.h                         |  132 +
 include/spdlog/sinks/base_sink.h                |   66 +
 include/spdlog/sinks/file_sinks.h               |  232 ++
 include/spdlog/sinks/null_sink.h                |   52 +
 include/spdlog/sinks/ostream_sink.h             |   67 +
 include/spdlog/sinks/sink.h                     |   42 +
 include/spdlog/sinks/stdout_sinks.h             |   71 +
 include/spdlog/sinks/syslog_sink.h              |  102 +
 include/spdlog/spdlog.h                         |  155 +
 include/spdlog/tweakme.h                        |   74 +
 libminifi/CMakeLists.txt                        |   51 +
 libminifi/include/Configure.h                   |  115 +
 libminifi/include/Connection.h                  |  201 ++
 libminifi/include/Exception.h                   |   95 +
 libminifi/include/FlowControlProtocol.h         |  339 ++
 libminifi/include/FlowController.h              |  248 ++
 libminifi/include/FlowFileRecord.h              |  220 ++
 libminifi/include/GenerateFlowFile.h            |   87 +
 libminifi/include/GetFile.h                     |  117 +
 libminifi/include/ListenSyslog.h                |  209 ++
 libminifi/include/LogAttribute.h                |  128 +
 libminifi/include/Logger.h                      |  154 +
 libminifi/include/ProcessContext.h              |   99 +
 libminifi/include/ProcessGroup.h                |  182 +
 libminifi/include/ProcessSession.h              |  116 +
 libminifi/include/Processor.h                   |  346 ++
 libminifi/include/Property.h                    |  344 ++
 libminifi/include/RealTimeDataCollector.h       |  131 +
 libminifi/include/Relationship.h                |   87 +
 libminifi/include/RemoteProcessorGroupPort.h    |   96 +
 libminifi/include/ResourceClaim.h               |   92 +
 libminifi/include/SchedulingAgent.h             |   98 +
 libminifi/include/Site2SiteClientProtocol.h     |  638 ++++
 libminifi/include/Site2SitePeer.h               |  364 ++
 libminifi/include/TailFile.h                    |   93 +
 libminifi/include/TimeUtil.h                    |   82 +
 libminifi/include/TimerDrivenSchedulingAgent.h  |   66 +
 libminifi/src/Configure.cpp                     |  167 +
 libminifi/src/Connection.cpp                    |  160 +
 libminifi/src/FlowControlProtocol.cpp           |  541 +++
 libminifi/src/FlowController.cpp                | 1190 +++++++
 libminifi/src/FlowFileRecord.cpp                |  231 ++
 libminifi/src/GenerateFlowFile.cpp              |  134 +
 libminifi/src/GetFile.cpp                       |  295 ++
 libminifi/src/ListenSyslog.cpp                  |  342 ++
 libminifi/src/LogAttribute.cpp                  |  158 +
 libminifi/src/Logger.cpp                        |   27 +
 libminifi/src/ProcessGroup.cpp                  |  314 ++
 libminifi/src/ProcessSession.cpp                |  731 ++++
 libminifi/src/Processor.cpp                     |  451 +++
 libminifi/src/RealTimeDataCollector.cpp         |  482 +++
 libminifi/src/RemoteProcessorGroupPort.cpp      |  100 +
 libminifi/src/ResourceClaim.cpp                 |   45 +
 libminifi/src/SchedulingAgent.cpp               |   86 +
 libminifi/src/Site2SiteClientProtocol.cpp       | 1313 ++++++++
 libminifi/src/Site2SitePeer.cpp                 |  435 +++
 libminifi/src/TailFile.cpp                      |  272 ++
 libminifi/src/TimerDrivenSchedulingAgent.cpp    |  134 +
 libminifi/test/FlowFileRecordTest.cpp           |   28 +
 libminifi/test/Server.cpp                       |  607 ++++
 main/CMakeLists.txt                             |   44 +
 src/Configure.cpp                               |  167 -
 src/Connection.cpp                              |  160 -
 src/FlowControlProtocol.cpp                     |  541 ---
 src/FlowController.cpp                          | 1190 -------
 src/FlowFileRecord.cpp                          |  231 --
 src/GenerateFlowFile.cpp                        |  134 -
 src/GetFile.cpp                                 |  295 --
 src/ListenSyslog.cpp                            |  342 --
 src/LogAttribute.cpp                            |  158 -
 src/Logger.cpp                                  |   27 -
 src/ProcessGroup.cpp                            |  314 --
 src/ProcessSession.cpp                          |  731 ----
 src/Processor.cpp                               |  451 ---
 src/RealTimeDataCollector.cpp                   |  482 ---
 src/RemoteProcessorGroupPort.cpp                |  100 -
 src/ResourceClaim.cpp                           |   45 -
 src/SchedulingAgent.cpp                         |   86 -
 src/Site2SiteClientProtocol.cpp                 | 1313 --------
 src/Site2SitePeer.cpp                           |  435 ---
 src/TailFile.cpp                                |  272 --
 src/TimerDrivenSchedulingAgent.cpp              |  134 -
 test/FlowFileRecordTest.cpp                     |   28 -
 test/Server.cpp                                 |  607 ----
 thirdparty/yaml-cpp-yaml-cpp-0.5.3/Makefile     |   40 -
 160 files changed, 21572 insertions(+), 21493 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 9d78a7f..69c2234 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,10 @@
 # Filter out generated files from the included libuuid
 thirdparty/uuid/tst_uuid*
 assemblies
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Makefile
+cmake_install.cmake
+install_manifest.txt
+CTestTestfile.cmake

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index b9c9d20..eb2baa5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -20,7 +20,7 @@ script:
   # Establish updated toolchain as default
   - sudo unlink /usr/bin/gcc && sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
   - sudo unlink /usr/bin/g++ && sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++
-  - make
+  - mkdir ./build && cd ./build && cmake .. && make
 
 addons:
   apt:

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..1cc95c2
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,74 @@
+# 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.
+#
+
+cmake_minimum_required(VERSION 2.6)
+
+set(PROJECT "nifi-minifi-cpp")
+set(VERSION "0.1.0")
+
+#### Establish Project Configuration ####
+# Enable usage of the VERSION specifier
+# https://cmake.org/cmake/help/v3.0/policy/CMP0048.html#policy:CMP0048
+cmake_policy(SET CMP0048 NEW)
+
+project(${PROJECT}
+        VERSION ${VERSION})
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+# Provide custom modules for the project
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+
+#file(GLOB SOURCES "libminifi/src/*.cpp")
+add_subdirectory(thirdparty/yaml-cpp-yaml-cpp-0.5.3)
+add_subdirectory(libminifi)
+add_subdirectory(main)
+
+# Generate source assembly
+set(ASSEMBLY_BASE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
+set(CPACK_SOURCE_GENERATOR "TGZ")
+set(CPACK_SOURCE_PACKAGE_FILE_NAME "${ASSEMBLY_BASE_NAME}-source")
+set(CPACK_SOURCE_IGNORE_FILES "/build/;/.bzr/;~$;${CPACK_SOURCE_IGNORE_FILES}")
+
+# Generate binary assembly
+install(FILES conf/minifi.properties
+        DESTINATION conf
+        COMPONENT bin)
+
+install(PROGRAMS bin/minifi.sh
+        DESTINATION bin
+        COMPONENT bin)
+
+install(FILES LICENSE README.md NOTICE
+        DESTINATION .
+        COMPONENT bin)
+
+set(CPACK_GENERATOR "TGZ")
+set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Apache NiFi MiNiFi C++ version ${VERSION}")
+set(CPACK_PACKAGE_VENDOR "Apache NiFi")
+set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
+set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
+set(CPACK_PACKAGE_FILE_NAME "${ASSEMBLY_BASE_NAME}")
+set(CPACK_BINARY_TGZ, "ON")
+
+set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
+set(CPACK_COMPONENTS_ALL bin)
+
+include(CPack)

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/Makefile
----------------------------------------------------------------------
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 0b03842..0000000
--- a/Makefile
+++ /dev/null
@@ -1,109 +0,0 @@
-# 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
-
-
-# for ARM make CROSS_COMPILE=arm-linux-gnueabi ARCH=arm
-VERSION=0.1.0
-CC=$(CROSS_COMPILE)-g++
-AR=$(CROSS_COMPILE)-ar
-BUILD_DIR= ./build
-TARGET_DIR=./target
-ASSEMBLIES_DIR = ./assemblies
-TARGET_LIB=libminifi.a
-PROJECT=minifi
-TARGET_EXE=$(PROJECT)
-CFLAGS=-Os -fexceptions -fpermissive -Wno-write-strings -std=c++11 -fPIC -Wall -g -Wno-unused-private-field
-INCLUDES=-I./inc -I./src -I./test -I./thirdparty -I/usr/include/libxml2 -I./thirdparty/yaml-cpp-yaml-cpp-0.5.3/include
-LDDIRECTORY=-L./build -L./thirdparty/uuid -L./thirdparty/yaml-cpp-yaml-cpp-0.5.3/lib/
-LDFLAGS=-lminifi -lxml2 -pthread -luuid -lyaml-cpp
-
-UNAME_S := $(shell uname -s)
-ifeq ($(UNAME_S),Linux)
-  LDFLAGS += -lrt
-endif
-ifeq ($(UNAME_S),Darwin)
-endif
-
-OBJS:=$(shell /bin/ls src/*.cpp | xargs -n1 basename 2>/dev/null |  awk '/\.cpp$$/{a=$$0; gsub("\\.cpp$$",".o", a); print "$(BUILD_DIR)/" a}')
-TESTS:=Server
-
-all: thirdparty/yaml-cpp-yaml-cpp-0.5.3/lib/libyaml-cpp.a directory $(BUILD_DIR)/$(TARGET_LIB) minifi tests assembly-pkgs
-
-thirdparty/yaml-cpp-yaml-cpp-0.5.3/lib/libyaml-cpp.a:
-	make -C thirdparty/yaml-cpp-yaml-cpp-0.5.3
-
-
-.PHONY: directory
-directory:
-	mkdir -p $(BUILD_DIR)
-	mkdir -p $(TARGET_DIR)
-	make -C thirdparty/uuid
-
-$(BUILD_DIR)/%.o: src/%.cpp
-	$(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $<
-
-$(BUILD_DIR)/$(TARGET_LIB): $(OBJS)
-	$(AR) crs $@ $(OBJS)
-
-minifi: $(BUILD_DIR)/$(TARGET_LIB) thirdparty/yaml-cpp-yaml-cpp-0.5.3/lib/libyaml-cpp.a
-	$(CC) $(CFLAGS) $(INCLUDES) -o $(BUILD_DIR)/$(TARGET_EXE) main/MiNiFiMain.cpp $(LDDIRECTORY) $(LDFLAGS)
-	cp $(BUILD_DIR)/$(TARGET_EXE) $(TARGET_DIR)/$(TARGET_EXE)
-	cp $(BUILD_DIR)/$(TARGET_EXE) bin/$(TARGET_EXE)
-
-.PHONY: tests
-tests: $(BUILD_DIR)/$(TARGET_LIB) thirdparty/yaml-cpp-yaml-cpp-0.5.3/lib/libyaml-cpp.a
-	$(foreach TEST_NAME, $(TESTS),\
-	$(CC) $(CFLAGS) $(INCLUDES) -o $(BUILD_DIR)/$(TEST_NAME) test/$(TEST_NAME).cpp $(LDDIRECTORY) $(LDFLAGS))
-
-$(ASSEMBLIES_DIR) :
-	mkdir -p $(ASSEMBLIES_DIR)
-
-.PHONY: assembly-pkgs
-assembly-pkgs: $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-bin.tar.gz  $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-source.tar.gz
-
-$(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-source.tar.gz : $(ASSEMBLIES_DIR)
-	mkdir -p $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-source
-	cp -r LICENSE \
-    NOTICE \
-    README.md \
-    inc \
-    src \
-    main \
-    bin \
-    conf \
-    thirdparty \
-    Makefile \
-    $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-source
-	tar -czf $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-source.tar.gz  -C $(ASSEMBLIES_DIR) $(PROJECT)-$(VERSION)-source
-
-$(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-bin.tar.gz : $(ASSEMBLIES_DIR) $(TARGET_EXE)
-	mkdir -p $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-bin
-	cp -R LICENSE \
-    NOTICE \
-    README.md \
-    conf \
-    bin \
-    $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-bin
-	cp target/minifi $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-bin/bin/
-	tar -czf $(ASSEMBLIES_DIR)/$(PROJECT)-$(VERSION)-bin.tar.gz  -C $(ASSEMBLIES_DIR) $(PROJECT)-$(VERSION)-bin
-
-.PHONY: clean
-clean:
-	rm -rf $(BUILD_DIR)
-	rm -rf $(TARGET_DIR)
-	rm -rf $(ASSEMBLIES_DIR)
-	make -C thirdparty/yaml-cpp-yaml-cpp-0.5.3 clean
-	make -C thirdparty/uuid clean

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 0b4ac50..c8abc33 100644
--- a/README.md
+++ b/README.md
@@ -58,7 +58,8 @@ Perspectives of the role of MiNiFi should be from the perspective of the agent a
 ### To build
 
 #### Utilities
-* Make
+* CMake
+  * 2.8 or greater
 * gcc
   * 4.8.4 or greater
 * g++
@@ -77,33 +78,84 @@ Perspectives of the role of MiNiFi should be from the perspective of the agent a
 ## Getting Started
 
 ### Building
-From your source checkout, perform `make` in the root of the directory where the Makefile is located.  For parallel building, the '-j' or '--jobs' option maybe used.  On an average development machine, a serial build takes approximately 90 seconds.
+- From your source checkout, create a directory to perform the build (e.g. build) and cd into that directory.
+
+
+    # ~/Development/code/apache/nifi-minifi-cpp on git:master
+    $ mkdir build
+    # ~/Development/code/apache/nifi-minifi-cpp on git:master
+    $ cd build
+
+
+- Perform a `cmake ..` to generate the project files
+
+
+    # ~/Development/code/apache/nifi-minifi-cpp on git:master
+    $ cmake ..
+    ...
+    -- Configuring done
+    -- Generating done
+    -- Build files have been written to: /Users/apiri/Development/code/apache/nifi-minifi-cpp/build
+
+
+- Perform a build
+
 
     # ~/Development/code/apache/nifi-minifi-cpp on git:master
     $ make
-    make -C thirdparty/yaml-cpp-yaml-cpp-0.5.3
-    mkdir -p ./build
-    g++ -Os -I./include  -c -o build/parse.o src/parse.cpp
-    mkdir -p ./build
-    g++ -Os -I./include  -c -o build/parser.o src/parser.cpp
-    mkdir -p ./build
-    g++ -Os -I./include  -c -o build/regex_yaml.o src/regex_yaml.cpp
+    Scanning dependencies of target gmock_main
+    Scanning dependencies of target gmock
+    Scanning dependencies of target minifi
+    Scanning dependencies of target gtest
+    Scanning dependencies of target yaml-cpp
+    [  1%] Building CXX object thirdparty/yaml-cpp-yaml-cpp-0.5.3/test/gmock-1.7.0/gtest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
+    [  3%] Building CXX object thirdparty/yaml-cpp-yaml-cpp-0.5.3/test/gmock-1.7.0/CMakeFiles/gmock.dir/gtest/src/gtest-all.cc.o
+    [  3%] Building CXX object thirdparty/yaml-cpp-yaml-cpp-0.5.3/test/gmock-1.7.0/CMakeFiles/gmock.dir/src/gmock-all.cc.o
+    [  6%] Building CXX object thirdparty/yaml-cpp-yaml-cpp-0.5.3/test/gmock-1.7.0/CMakeFiles/gmock_main.dir/gtest/src/gtest-all.cc.o
+    [  6%] Building CXX object thirdparty/yaml-cpp-yaml-cpp-0.5.3/test/gmock-1.7.0/CMakeFiles/gmock_main.dir/src/gmock-all.cc.o
+    [  7%] Building CXX object libminifi/CMakeFiles/minifi.dir/src/Configure.cpp.o
+
     ...
 
+    [ 97%] Linking CXX executable minifi
+    [ 97%] Built target minifiexe
+    [ 98%] Building CXX object thirdparty/yaml-cpp-yaml-cpp-0.5.3/test/CMakeFiles/run-tests.dir/node/node_test.cpp.o
+    [100%] Linking CXX executable run-tests
+    [100%] Built target run-tests
+
+
+
+- Create a binary assembly located in your build directory with suffix -bin.tar.gz
+
+
+    ~/Development/code/apache/nifi-minifi-cpp/build
+    $ make package
+    Run CPack packaging tool for source...
+    CPack: Create package using TGZ
+    CPack: Install projects
+    CPack: - Install directory: ~/Development/code/apache/nifi-minifi-cpp
+    CPack: Create package
+    CPack: - package: ~/Development/code/apache/nifi-minifi-cpp/build/nifi-minifi-cpp-0.1.0-bin.tar.gz generated.
+
+
+- Create a source assembly located in your build directory with suffix -source.tar.gz
+
+
+    ~/Development/code/apache/nifi-minifi-cpp/build
+    $ make package_source
+    Run CPack packaging tool for source...
+    CPack: Create package using TGZ
+    CPack: Install projects
+    CPack: - Install directory: ~/Development/code/apache/nifi-minifi-cpp
+    CPack: Create package
+    CPack: - package: ~/Development/code/apache/nifi-minifi-cpp/build/nifi-minifi-cpp-0.1.0-source.tar.gz generated.
+
 
 ### Cleaning
-Generated files and artifacts can be removed by performing a `make clean`.
+Remove the build directory created above.
 
     # ~/Development/code/apache/nifi-minifi-cpp on git:master
-    $ make clean
-    rm -rf ./build
-    rm -rf ./target
-    rm -rf ./assemblies
-    make -C thirdparty/yaml-cpp-yaml-cpp-0.5.3 clean
-    rm -rf ./lib ./build
-    make -C thirdparty/uuid clean
-    rm -f *.o libuuid.a
-    find ./ -iname "*.o" -exec rm -f {} \;
+    $ rm -rf ./build
 
 ### Configuring
 The 'conf' directory in the root contains a template flow.yml document.  

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/Configure.h
----------------------------------------------------------------------
diff --git a/inc/Configure.h b/inc/Configure.h
deleted file mode 100644
index d325fa0..0000000
--- a/inc/Configure.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/**
- * @file Configure.h
- * Configure class declaration
- *
- * 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.
- */
-#ifndef __CONFIGURE_H__
-#define __CONFIGURE_H__
-
-#include <stdio.h>
-#include <string>
-#include <map>
-#include <stdlib.h>
-#include <errno.h>
-#include <iostream>
-#include <fstream>
-#include "Logger.h"
-
-class Configure {
-public:
-	//! Get the singleton logger instance
-	static Configure * getConfigure()
-	{
-		if (!_configure)
-		{
-			_configure = new Configure();
-		}
-		return _configure;
-	}
-	//! nifi.flow.configuration.file
-	static const char *nifi_flow_configuration_file;
-	static const char *nifi_administrative_yield_duration;
-	static const char *nifi_bored_yield_duration;
-	static const char *nifi_server_name;
-	static const char *nifi_server_port;
-	static const char *nifi_server_report_interval;
-
-	//! Clear the load config
-	void clear()
-	{
-		std::lock_guard<std::mutex> lock(_mtx);
-		_properties.clear();
-	}
-	//! Set the config value
-	void set(std::string key, std::string value)
-	{
-		std::lock_guard<std::mutex> lock(_mtx);
-		_properties[key] = value;
-	}
-	//! Check whether the config value existed
-	bool has(std::string key)
-	{
-		std::lock_guard<std::mutex> lock(_mtx);
-		return (_properties.find(key) != _properties.end());
-	}
-	//! Get the config value
-	bool get(std::string key, std::string &value);
-	// Trim String utils
-	std::string trim(const std::string& s);
-	std::string trimLeft(const std::string& s);
-	std::string trimRight(const std::string& s);
-	//! Parse one line in configure file like key=value
-	void parseConfigureFileLine(char *buf);
-	//! Load Configure File
-	void loadConfigureFile(const char *fileName);
-    //! Set the determined MINIFI_HOME
-    void setHome(std::string minifiHome)
-    {
-        _minifiHome = minifiHome;
-    }
-
-    //! Get the determined MINIFI_HOME
-    std::string getHome()
-    {
-        return _minifiHome;
-    }
-    //! Parse Command Line
-    void parseCommandLine(int argc, char **argv);
-
-private:
-	//! Mutex for protection
-	std::mutex _mtx;
-	//! Logger
-	Logger *_logger;
-	//! Home location for this executable
-	std::string _minifiHome;
-
-	Configure()
-	{
-		_logger = Logger::getLogger();
-	}
-	virtual ~Configure()
-	{
-
-	}
-	static Configure *_configure;
-
-protected:
-	std::map<std::string,std::string> _properties;
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/Connection.h
----------------------------------------------------------------------
diff --git a/inc/Connection.h b/inc/Connection.h
deleted file mode 100644
index dc6b94b..0000000
--- a/inc/Connection.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/**
- * @file Connection.h
- * Connection class declaration
- *
- * 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.
- */
-#ifndef __CONNECTION_H__
-#define __CONNECTION_H__
-
-#include <uuid/uuid.h>
-#include <vector>
-#include <queue>
-#include <map>
-#include <mutex>
-#include <atomic>
-#include <algorithm>
-
-#include "FlowFileRecord.h"
-#include "Relationship.h"
-#include "Logger.h"
-
-//! Forwarder declaration
-class Processor;
-
-//! Connection Class
-class Connection
-{
-public:
-	//! Constructor
-	/*!
-	 * Create a new processor
-	 */
-	Connection(std::string name, uuid_t uuid = NULL, uuid_t srcUUID = NULL, uuid_t destUUID = NULL);
-	//! Destructor
-	virtual ~Connection() {}
-	//! Set Connection Name
-	void setName(std::string name) {
-		_name = name;
-	}
-	//! Get Process Name
-	std::string getName(void) {
-		return (_name);
-	}
-	//! Set UUID
-	void setUUID(uuid_t uuid) {
-		uuid_copy(_uuid, uuid);
-	}
-	//! Set Source Processor UUID
-	void setSourceProcessorUUID(uuid_t uuid) {
-		uuid_copy(_srcUUID, uuid);
-	}
-	//! Set Destination Processor UUID
-	void setDestinationProcessorUUID(uuid_t uuid) {
-		uuid_copy(_destUUID, uuid);
-	}
-	//! Get Source Processor UUID
-	void getSourceProcessorUUID(uuid_t uuid) {
-		uuid_copy(uuid, _srcUUID);
-	}
-	//! Get Destination Processor UUID
-	void getDestinationProcessorUUID(uuid_t uuid) {
-		uuid_copy(uuid, _destUUID);
-	}
-	//! Get UUID
-	bool getUUID(uuid_t uuid) {
-		if (uuid)
-		{
-			uuid_copy(uuid, _uuid);
-			return true;
-		}
-		else
-			return false;
-	}
-	//! Set Connection Source Processor
-	void setSourceProcessor(Processor *source) {
-		_srcProcessor = source;
-	}
-	// ! Get Connection Source Processor
-	Processor *getSourceProcessor() {
-		return _srcProcessor;
-	}
-	//! Set Connection Destination Processor
-	void setDestinationProcessor(Processor *dest) {
-		_destProcessor = dest;
-	}
-	// ! Get Connection Destination Processor
-	Processor *getDestinationProcessor() {
-		return _destProcessor;
-	}
-	//! Set Connection relationship
-	void setRelationship(Relationship relationship) {
-		_relationship = relationship;
-	}
-	// ! Get Connection relationship
-	Relationship getRelationship() {
-		return _relationship;
-	}
-	//! Set Max Queue Size
-	void setMaxQueueSize(uint64_t size)
-	{
-		_maxQueueSize = size;
-	}
-	//! Get Max Queue Size
-	uint64_t getMaxQueueSize()
-	{
-		return _maxQueueSize;
-	}
-	//! Set Max Queue Data Size
-	void setMaxQueueDataSize(uint64_t size)
-	{
-		_maxQueueDataSize = size;
-	}
-	//! Get Max Queue Data Size
-	uint64_t getMaxQueueDataSize()
-	{
-		return _maxQueueDataSize;
-	}
-	//! Set Flow expiration duration in millisecond
-	void setFlowExpirationDuration(uint64_t duration)
-	{
-		_expiredDuration = duration;
-	}
-	//! Get Flow expiration duration in millisecond
-	uint64_t getFlowExpirationDuration()
-	{
-		return _expiredDuration;
-	}
-	//! Check whether the queue is empty
-	bool isEmpty();
-	//! Check whether the queue is full to apply back pressure
-	bool isFull();
-	//! Get queue size
-	uint64_t getQueueSize() {
-		std::lock_guard<std::mutex> lock(_mtx);
-		return _queue.size();
-	}
-	//! Get queue data size
-	uint64_t getQueueDataSize()
-	{
-		return _maxQueueDataSize;
-	}
-	//! Put the flow file into queue
-	void put(FlowFileRecord *flow);
-	//! Poll the flow file from queue, the expired flow file record also being returned
-	FlowFileRecord *poll(std::set<FlowFileRecord *> &expiredFlowRecords);
-	//! Drain the flow records
-	void drain();
-
-protected:
-	//! A global unique identifier
-	uuid_t _uuid;
-	//! Source Processor UUID
-	uuid_t _srcUUID;
-	//! Destination Processor UUID
-	uuid_t _destUUID;
-	//! Connection Name
-	std::string _name;
-	//! Relationship for this connection
-	Relationship _relationship;
-	//! Source Processor (ProcessNode/Port)
-	Processor *_srcProcessor;
-	//! Destination Processor (ProcessNode/Port)
-	Processor *_destProcessor;
-	//! Max queue size to apply back pressure
-	std::atomic<uint64_t> _maxQueueSize;
-	//! Max queue data size to apply back pressure
-	std::atomic<uint64_t> _maxQueueDataSize;
-	//! Flow File Expiration Duration in= MilliSeconds
-	std::atomic<uint64_t> _expiredDuration;
-
-
-private:
-	//! Mutex for protection
-	std::mutex _mtx;
-	//! Queued data size
-	std::atomic<uint64_t> _queuedDataSize;
-	//! Queue for the Flow File
-	std::queue<FlowFileRecord *> _queue;
-	//! Logger
-	Logger *_logger;
-	// Prevent default copy constructor and assignment operation
-	// Only support pass by reference or pointer
-	Connection(const Connection &parent);
-	Connection &operator=(const Connection &parent);
-
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/Exception.h
----------------------------------------------------------------------
diff --git a/inc/Exception.h b/inc/Exception.h
deleted file mode 100644
index d321454..0000000
--- a/inc/Exception.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * @file Exception.h
- * Exception class declaration
- *
- * 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.
- */
-#ifndef __EXCEPTION_H__
-#define __EXCEPTION_H__
-
-#include <sstream>
-#include <exception>
-#include <stdexcept>
-#include <errno.h>
-#include <string.h>
-
-//! ExceptionType 
-enum ExceptionType 
-{
-	FILE_OPERATION_EXCEPTION = 0,
-	FLOW_EXCEPTION,
-	PROCESSOR_EXCEPTION,
-	PROCESS_SESSION_EXCEPTION,
-	PROCESS_SCHEDULE_EXCEPTION,
-	SITE2SITE_EXCEPTION,
-	GENERAL_EXCEPTION,
-	MAX_EXCEPTION
-};
-
-//! Exception String 
-static const char *ExceptionStr[MAX_EXCEPTION] =
-{
-		"File Operation",
-		"Flow File Operation",
-		"Processor Operation",
-		"Process Session Operation",
-		"Process Schedule Operation",
-		"Site2Site Protocol",
-		"General Operation"
-};
-
-//! Exception Type to String 
-inline const char *ExceptionTypeToString(ExceptionType type)
-{
-	if (type < MAX_EXCEPTION)
-		return ExceptionStr[type];
-	else
-		return NULL;
-}
-
-//! Exception Class
-class Exception : public std::exception
-{
-public:
-	//! Constructor
-	/*!
-	 * Create a new flow record
-	 */
-	Exception(ExceptionType type, const char *errorMsg) : _type(type), _errorMsg(errorMsg) {
-	}
-	//! Destructor
-	virtual ~Exception() throw () {}
-	virtual const char * what() const throw () {
-
-		_whatStr = ExceptionTypeToString(_type);
-
-		_whatStr += ":" + _errorMsg;
-		return _whatStr.c_str();
-	}
-
-protected:
-
-private:
-	//! Exception type
-	ExceptionType _type;
-	//! Exception detailed information
-	std::string _errorMsg;
-	//! Hold the what result
-	mutable std::string _whatStr;
-
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/FlowControlProtocol.h
----------------------------------------------------------------------
diff --git a/inc/FlowControlProtocol.h b/inc/FlowControlProtocol.h
deleted file mode 100644
index 23f2d49..0000000
--- a/inc/FlowControlProtocol.h
+++ /dev/null
@@ -1,339 +0,0 @@
-/**
- * @file FlowControlProtocol.h
- * FlowControlProtocol class declaration
- *
- * 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.
- */
-#ifndef __FLOW_CONTROL_PROTOCOL_H__
-#define __FLOW_CONTROL_PROTOCOL_H__
-
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <fcntl.h>
-#include <netdb.h>
-#include <string>
-#include <errno.h>
-#include <chrono>
-#include <thread>
-#include "Logger.h"
-#include "Configure.h"
-#include "Property.h"
-
-//! Forwarder declaration
-class FlowController;
-
-#define DEFAULT_NIFI_SERVER_PORT 9000
-#define DEFAULT_REPORT_INTERVAL 1000 // 1 sec
-#define MAX_READ_TIMEOUT 30000 // 30 seconds
-
-//! FlowControl Protocol Msg Type
-typedef enum {
-	REGISTER_REQ, // Device Register Request from device to server which contain device serial number, current running flow xml version
-	REGISTER_RESP, // Device Register Respond from server to device, may contain new flow.xml from server ask device to apply and also device report interval
-	REPORT_REQ, // Period Device Report from device to server which contain device serial number, current running flow xml name/version and other period report info
-	REPORT_RESP, // Report Respond from server to device, may ask device to update flow xml or processor property
-	MAX_FLOW_CONTROL_MSG_TYPE
-} FlowControlMsgType;
-
-//! FlowControl Protocol Msg Type String
-static const char *FlowControlMsgTypeStr[MAX_FLOW_CONTROL_MSG_TYPE] =
-{
-		"REGISTER_REQ",
-		"REGISTER_RESP",
-		"REPORT_REQ",
-		"REPORT_RESP"
-};
-
-//! Flow Control Msg Type to String
-inline const char *FlowControlMsgTypeToStr(FlowControlMsgType type)
-{
-	if (type < MAX_FLOW_CONTROL_MSG_TYPE)
-		return FlowControlMsgTypeStr[type];
-	else
-		return NULL;
-}
-
-//! FlowControll Protocol Msg ID (Some Messages are fix length, Some are variable length (TLV)
-typedef enum {
-	//Fix length 8 bytes: client to server in register request, required field
-	FLOW_SERIAL_NUMBER,
-	// Flow XML name TLV: client to server in register request and report request, required field
-	FLOW_XML_NAME,
-	// Flow XML content, TLV: server to client in register respond, option field in case server want to ask client to load xml from server
-	FLOW_XML_CONTENT,
-	// Fix length, 4 bytes Report interval in msec: server to client in register respond, option field
-	REPORT_INTERVAL,
-	// Processor Name TLV:  server to client in report respond, option field in case server want to ask client to update processor property
-	PROCESSOR_NAME,
-	// Processor Property Name TLV: server to client in report respond, option field in case server want to ask client to update processor property
-	PROPERTY_NAME,
-	// Processor Property Value TLV: server to client in report respond, option field in case server want to ask client to update processor property
-	PROPERTY_VALUE,
-	// Report Blob TLV: client to server in report request, option field in case client want to pickyback the report blob in report request to server
-	REPORT_BLOB,
-	MAX_FLOW_MSG_ID
-} FlowControlMsgID;
-
-//! FlowControl Protocol Msg ID String
-static const char *FlowControlMsgIDStr[MAX_FLOW_MSG_ID] =
-{
-		"FLOW_SERIAL_NUMBER",
-		"FLOW_XML_NAME",
-		"FLOW_XML_CONTENT",
-		"REPORT_INTERVAL",
-		"PROCESSOR_NAME"
-		"PROPERTY_NAME",
-		"PROPERTY_VALUE",
-		"REPORT_BLOB"
-};
-
-#define TYPE_HDR_LEN 4 // Fix Hdr Type
-#define TLV_HDR_LEN 8 // Type 4 bytes and Len 4 bytes
-
-//! FlowControl Protocol Msg Len
-inline int FlowControlMsgIDEncodingLen(FlowControlMsgID id, int payLoadLen)
-{
-	if (id == FLOW_SERIAL_NUMBER)
-		return (TYPE_HDR_LEN + 8);
-	else if (id == REPORT_INTERVAL)
-		return (TYPE_HDR_LEN + 4);
-	else if (id < MAX_FLOW_MSG_ID)
-		return (TLV_HDR_LEN + payLoadLen);
-	else
-		return -1;
-}
-
-//! Flow Control Msg Id to String
-inline const char *FlowControlMsgIdToStr(FlowControlMsgID id)
-{
-	if (id < MAX_FLOW_MSG_ID)
-		return FlowControlMsgIDStr[id];
-	else
-		return NULL;
-}
-
-//! Flow Control Respond status code
-typedef enum {
-	RESP_SUCCESS,
-	RESP_TRIGGER_REGISTER, // Server respond to client report to re trigger register
-	RESP_START_FLOW_CONTROLLER, // Server respond to client to start flow controller
-	RESP_STOP_FLOW_CONTROLLER, // Server respond to client to stop flow controller
-	RESP_FAILURE,
-	MAX_RESP_CODE
-} FlowControlRespCode;
-
-//! FlowControl Resp Code str
-static const char *FlowControlRespCodeStr[MAX_RESP_CODE] =
-{
-		"RESP_SUCCESS",
-		"RESP_TRIGGER_REGISTER",
-		"RESP_START_FLOW_CONTROLLER",
-		"RESP_STOP_FLOW_CONTROLLER",
-		"RESP_FAILURE"
-};
-
-//! Flow Control Resp Code to String
-inline const char *FlowControlRespCodeToStr(FlowControlRespCode code)
-{
-	if (code < MAX_RESP_CODE)
-		return FlowControlRespCodeStr[code];
-	else
-		return NULL;
-}
-
-//! Common FlowControlProtocol Header
-typedef struct {
-	uint32_t msgType; //! Msg Type
-	uint32_t seqNumber; //! Seq Number to match Req with Resp
-	uint32_t status; //! Resp Code, see FlowControlRespCode
-	uint32_t payloadLen; //! Msg Payload length
-} FlowControlProtocolHeader;
-
-//! FlowControlProtocol Class
-class FlowControlProtocol
-{
-public:
-	//! Constructor
-	/*!
-	 * Create a new control protocol
-	 */
-	FlowControlProtocol(FlowController *controller) {
-		_controller = controller;
-		_logger = Logger::getLogger();
-		_configure = Configure::getConfigure();
-		_socket = 0;
-		_serverName = "localhost";
-		_serverPort = DEFAULT_NIFI_SERVER_PORT;
-		_registered = false;
-		_seqNumber = 0;
-		_reportBlob = NULL;
-		_reportBlobLen = 0;
-		_reportInterval = DEFAULT_REPORT_INTERVAL;
-		_running = false;
-
-		std::string value;
-
-		if (_configure->get(Configure::nifi_server_name, value))
-		{
-			_serverName = value;
-			_logger->log_info("NiFi Server Name %s", _serverName.c_str());
-		}
-		if (_configure->get(Configure::nifi_server_port, value) && Property::StringToInt(value, _serverPort))
-		{
-			_logger->log_info("NiFi Server Port: [%d]", _serverPort);
-		}
-		if (_configure->get(Configure::nifi_server_report_interval, value))
-		{
-			TimeUnit unit;
-			if (Property::StringToTime(value, _reportInterval, unit) &&
-						Property::ConvertTimeUnitToMS(_reportInterval, unit, _reportInterval))
-			{
-				_logger->log_info("NiFi server report interval: [%d] ms", _reportInterval);
-			}
-		}
-	}
-	//! Destructor
-	virtual ~FlowControlProtocol()
-	{
-		stop();
-		if (_socket)
-			close(_socket);
-		if (_reportBlob)
-			delete [] _reportBlob;
-		if (this->_thread)
-			delete this->_thread;
-	}
-
-public:
-
-	//! SendRegisterRequest and Process Register Respond, return 0 for success
-	int sendRegisterReq();
-	//! SendReportReq and Process Report Respond, return 0 for success
-	int sendReportReq();
-	//! Start the flow control protocol
-	void start();
-	//! Stop the flow control protocol
-	void stop();
-	//! Set Report BLOB for periodically report
-	void setReportBlob(char *blob, int len)
-	{
-		std::lock_guard<std::mutex> lock(_mtx);
-		if (_reportBlob && _reportBlobLen >= len)
-		{
-			memcpy(_reportBlob, blob, len);
-			_reportBlobLen = len;
-		}
-		else
-		{
-			if (_reportBlob)
-				delete[] _reportBlob;
-			_reportBlob = new char[len];
-			_reportBlobLen = len;
-		}
-	}
-	//! Run function for the thread
-	static void run(FlowControlProtocol *protocol);
-	//! set 8 bytes SerialNumber
-	void setSerialNumber(uint8_t *number)
-	{
-		memcpy(_serialNumber, number, 8);
-	}
-
-protected:
-
-private:
-	//! Connect to the socket, return sock descriptor if success, 0 for failure
-	int connectServer(const char *host, uint16_t port);
-	//! Send Data via the socket, return -1 for failure
-	int sendData(uint8_t *buf, int buflen);
-	//! Read length into buf, return -1 for failure and 0 for EOF
-	int readData(uint8_t *buf, int buflen);
-	//! Select on the socket
-	int selectClient(int msec);
-	//! Read the header
-	int readHdr(FlowControlProtocolHeader *hdr);
-	//! encode uint32_t
-	uint8_t *encode(uint8_t *buf, uint32_t value)
-	{
-		*buf++ = (value & 0xFF000000) >> 24;
-		*buf++ = (value & 0x00FF0000) >> 16;
-		*buf++ = (value & 0x0000FF00) >> 8;
-		*buf++ = (value & 0x000000FF);
-		return buf;
-	}
-	//! encode uint32_t
-	uint8_t *decode(uint8_t *buf, uint32_t &value)
-	{
-		value = ((buf[0]<<24)|(buf[1]<<16)|(buf[2]<<8)|(buf[3]));
-		return (buf + 4);
-	}
-	//! encode byte array
-	uint8_t *encode(uint8_t *buf, uint8_t *bufArray, int size)
-	{
-		memcpy(buf, bufArray, size);
-		buf += size;
-		return buf;
-	}
-	//! encode std::string
-	uint8_t *encode(uint8_t *buf, std::string value)
-	{
-		// add the \0 for size
-		buf = encode(buf, value.size()+1);
-		buf = encode(buf, (uint8_t *) value.c_str(), value.size()+1);
-		return buf;
-	}
-	//! Mutex for protection
-	std::mutex _mtx;
-	//! Logger
-	Logger *_logger;
-	//! Configure
-	Configure *_configure;
-	//! NiFi server Name
-	std::string _serverName;
-	//! NiFi server port
-	int64_t _serverPort;
-	//! Serial Number
-	uint8_t _serialNumber[8];
-	//! socket to server
-	int _socket;
-	//! report interal in msec
-	int64_t _reportInterval;
-	//! whether it was registered to the NiFi server
-	bool _registered;
-	//! seq number
-	uint32_t _seqNumber;
-	//! FlowController
-	FlowController *_controller;
-	//! report Blob
-	char *_reportBlob;
-	//! report Blob len;
-	int _reportBlobLen;
-	//! thread
-	std::thread *_thread;
-	//! whether it is running
-	bool _running;
-	// Prevent default copy constructor and assignment operation
-	// Only support pass by reference or pointer
-	FlowControlProtocol(const FlowControlProtocol &parent);
-	FlowControlProtocol &operator=(const FlowControlProtocol &parent);
-
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/FlowController.h
----------------------------------------------------------------------
diff --git a/inc/FlowController.h b/inc/FlowController.h
deleted file mode 100644
index 0d758df..0000000
--- a/inc/FlowController.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/**
- * @file FlowController.h
- * FlowController class declaration
- *
- * 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.
- */
-#ifndef __FLOW_CONTROLLER_H__
-#define __FLOW_CONTROLLER_H__
-
-#include <uuid/uuid.h>
-#include <vector>
-#include <queue>
-#include <map>
-#include <mutex>
-#include <atomic>
-#include <algorithm>
-#include <set>
-#include <libxml/parser.h>
-#include <libxml/tree.h>
-#include <yaml-cpp/yaml.h>
-
-#include "Configure.h"
-#include "Property.h"
-#include "Relationship.h"
-#include "FlowFileRecord.h"
-#include "Connection.h"
-#include "Processor.h"
-#include "ProcessContext.h"
-#include "ProcessSession.h"
-#include "ProcessGroup.h"
-#include "GenerateFlowFile.h"
-#include "LogAttribute.h"
-#include "RealTimeDataCollector.h"
-#include "TimerDrivenSchedulingAgent.h"
-#include "FlowControlProtocol.h"
-#include "RemoteProcessorGroupPort.h"
-#include "GetFile.h"
-#include "TailFile.h"
-#include "ListenSyslog.h"
-#include "ExecuteProcess.h"
-
-//! Default NiFi Root Group Name
-#define DEFAULT_ROOT_GROUP_NAME ""
-#define DEFAULT_FLOW_XML_FILE_NAME "conf/flow.xml"
-#define DEFAULT_FLOW_YAML_FILE_NAME "conf/flow.yml"
-#define CONFIG_YAML_PROCESSORS_KEY "Processors"
-
-enum class ConfigFormat { XML, YAML };
-
-struct ProcessorConfig {
-	std::string name;
-	std::string javaClass;
-	std::string maxConcurrentTasks;
-	std::string schedulingStrategy;
-	std::string schedulingPeriod;
-	std::string penalizationPeriod;
-	std::string yieldPeriod;
-	std::string runDurationNanos;
-	std::vector<std::string> autoTerminatedRelationships;
-	std::vector<Property> properties;
-};
-
-//! FlowController Class
-class FlowController
-{
-public:
-    static const int DEFAULT_MAX_TIMER_DRIVEN_THREAD = 10;
-    static const int DEFAULT_MAX_EVENT_DRIVEN_THREAD = 5;
-	//! Constructor
-	/*!
-	 * Create a new Flow Controller
-	 */
-	FlowController(std::string name = DEFAULT_ROOT_GROUP_NAME);
-	//! Destructor
-	virtual ~FlowController();
-	//! Set FlowController Name
-	void setName(std::string name) {
-		_name = name;
-	}
-	//! Get Flow Controller Name
-	std::string getName(void) {
-		return (_name);
-	}
-	//! Set UUID
-	void setUUID(uuid_t uuid) {
-		uuid_copy(_uuid, uuid);
-	}
-	//! Get UUID
-	bool getUUID(uuid_t uuid) {
-		if (uuid)
-		{
-			uuid_copy(uuid, _uuid);
-			return true;
-		}
-		else
-			return false;
-	}
-	//! Set MAX TimerDrivenThreads
-	void setMaxTimerDrivenThreads(int number)
-	{
-		_maxTimerDrivenThreads = number;
-	}
-	//! Get MAX TimerDrivenThreads
-	int getMaxTimerDrivenThreads()
-	{
-		return _maxTimerDrivenThreads;
-	}
-	//! Set MAX EventDrivenThreads
-	void setMaxEventDrivenThreads(int number)
-	{
-		_maxEventDrivenThreads = number;
-	}
-	//! Get MAX EventDrivenThreads
-	int getMaxEventDrivenThreads()
-	{
-		return _maxEventDrivenThreads;
-	}
-	//! Create FlowFile Repository
-	bool createFlowFileRepository();
-	//! Create Content Repository
-	bool createContentRepository();
-
-	//! Life Cycle related function
-	//! Load flow xml from disk, after that, create the root process group and its children, initialize the flows
-	void load(ConfigFormat format);
-	//! Whether the Flow Controller is start running
-	bool isRunning();
-	//! Whether the Flow Controller has already been initialized (loaded flow XML)
-	bool isInitialized();
-	//! Start to run the Flow Controller which internally start the root process group and all its children
-	bool start();
-	//! Stop to run the Flow Controller which internally stop the root process group and all its children
-	void stop(bool force);
-	//! Unload the current flow xml, clean the root process group and all its children
-	void unload();
-	//! Load new xml
-	void reload(std::string xmlFile);
-	//! update property value
-	void updatePropertyValue(std::string processorName, std::string propertyName, std::string propertyValue)
-	{
-		if (_root)
-			_root->updatePropertyValue(processorName, propertyName, propertyValue);
-	}
-
-	//! Create Processor (Node/Input/Output Port) based on the name
-	Processor *createProcessor(std::string name, uuid_t uuid);
-	//! Create Root Processor Group
-	ProcessGroup *createRootProcessGroup(std::string name, uuid_t uuid);
-	//! Create Remote Processor Group
-	ProcessGroup *createRemoteProcessGroup(std::string name, uuid_t uuid);
-	//! Create Connection
-	Connection *createConnection(std::string name, uuid_t uuid);
-	//! set 8 bytes SerialNumber
-	void setSerialNumber(uint8_t *number)
-	{
-		_protocol->setSerialNumber(number);
-	}
-
-protected:
-
-	//! A global unique identifier
-	uuid_t _uuid;
-	//! FlowController Name
-	std::string _name;
-	//! Configuration File Name
-	std::string _configurationFileName;
-	//! NiFi property File Name
-	std::string _propertiesFileName;
-	//! Root Process Group
-	ProcessGroup *_root;
-	//! MAX Timer Driven Threads
-	int _maxTimerDrivenThreads;
-	//! MAX Event Driven Threads
-	int _maxEventDrivenThreads;
-	//! Config
-	//! FlowFile Repo
-	//! Provenance Repo
-	//! Flow Engines
-	//! Flow Scheduler
-	TimerDrivenSchedulingAgent _timerScheduler;
-	//! Controller Service
-	//! Config
-	//! Site to Site Server Listener
-	//! Heart Beat
-	//! FlowControl Protocol
-	FlowControlProtocol *_protocol;
-
-private:
-
-	//! Mutex for protection
-	std::mutex _mtx;
-	//! Logger
-	Logger *_logger;
-	//! Configure
-	Configure *_configure;
-	//! Whether it is running
-	std::atomic<bool> _running;
-	//! Whether it has already been initialized (load the flow XML already)
-	std::atomic<bool> _initialized;
-	//! Process Processor Node XML
-	void parseProcessorNode(xmlDoc *doc, xmlNode *processorNode, ProcessGroup *parent);
-	//! Process Port XML
-	void parsePort(xmlDoc *doc, xmlNode *processorNode, ProcessGroup *parent, TransferDirection direction);
-	//! Process Root Processor Group XML
-	void parseRootProcessGroup(xmlDoc *doc, xmlNode *node);
-	//! Process Property XML
-	void parseProcessorProperty(xmlDoc *doc, xmlNode *node, Processor *processor);
-	//! Process connection XML
-	void parseConnection(xmlDoc *doc, xmlNode *node, ProcessGroup *parent);
-	//! Process Remote Process Group
-	void parseRemoteProcessGroup(xmlDoc *doc, xmlNode *node, ProcessGroup *parent);
-
-	//! Process Processor Node YAML
-	void parseProcessorNodeYaml(YAML::Node processorNode, ProcessGroup *parent);
-	//! Process Port YAML
-	void parsePortYaml(YAML::Node *portNode, ProcessGroup *parent, TransferDirection direction);
-	//! Process Root Processor Group YAML
-	void parseRootProcessGroupYaml(YAML::Node rootNode);
-	//! Process Property YAML
-	void parseProcessorPropertyYaml(YAML::Node *doc, YAML::Node *node, Processor *processor);
-	//! Process connection YAML
-	void parseConnectionYaml(YAML::Node *node, ProcessGroup *parent);
-	//! Process Remote Process Group YAML
-	void parseRemoteProcessGroupYaml(YAML::Node *node, ProcessGroup *parent);
-	//! Parse Properties Node YAML for a processor
-	void parsePropertiesNodeYaml(YAML::Node *propertiesNode, Processor *processor);
-
-	// Prevent default copy constructor and assignment operation
-	// Only support pass by reference or pointer
-	FlowController(const FlowController &parent);
-	FlowController &operator=(const FlowController &parent);
-
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/FlowFileRecord.h
----------------------------------------------------------------------
diff --git a/inc/FlowFileRecord.h b/inc/FlowFileRecord.h
deleted file mode 100644
index 8b7362f..0000000
--- a/inc/FlowFileRecord.h
+++ /dev/null
@@ -1,220 +0,0 @@
-/**
- * @file FlowFileRecord.h
- * Flow file record class declaration
- *
- * 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.
- */
-#ifndef __FLOW_FILE_RECORD_H__
-#define __FLOW_FILE_RECORD_H__
-
-#include <uuid/uuid.h>
-#include <vector>
-#include <queue>
-#include <map>
-#include <mutex>
-#include <atomic>
-#include <iostream>
-#include <sstream>
-#include <fstream>
-#include <set>
-
-#include "TimeUtil.h"
-#include "Logger.h"
-#include "ResourceClaim.h"
-
-class ProcessSession;
-class Connection;
-
-#define DEFAULT_FLOWFILE_PATH "."
-
-//! FlowFile Attribute
-enum FlowAttribute
-{
-	//! The flowfile's path indicates the relative directory to which a FlowFile belongs and does not contain the filename
-	PATH = 0,
-	//! The flowfile's absolute path indicates the absolute directory to which a FlowFile belongs and does not contain the filename
-	ABSOLUTE_PATH,
-	//! The filename of the FlowFile. The filename should not contain any directory structure.
-	FILENAME,
-	//! A unique UUID assigned to this FlowFile.
-	UUID,
-	//! A numeric value indicating the FlowFile priority
-	priority,
-	//! The MIME Type of this FlowFile
-	MIME_TYPE,
-	//! Specifies the reason that a FlowFile is being discarded
-	DISCARD_REASON,
-	//! Indicates an identifier other than the FlowFile's UUID that is known to refer to this FlowFile.
-	ALTERNATE_IDENTIFIER,
-	MAX_FLOW_ATTRIBUTES
-};
-
-//! FlowFile Attribute Key
-static const char *FlowAttributeKeyArray[MAX_FLOW_ATTRIBUTES] =
-{
-		"path",
-		"absolute.path",
-		"filename",
-		"uuid",
-		"priority",
-		"mime.type",
-		"discard.reason",
-		"alternate.identifier"
-};
-
-//! FlowFile Attribute Enum to Key
-inline const char *FlowAttributeKey(FlowAttribute attribute)
-{
-	if (attribute < MAX_FLOW_ATTRIBUTES)
-		return FlowAttributeKeyArray[attribute];
-	else
-		return NULL;
-}
-
-//! FlowFile IO Callback functions for input and output
-//! throw exception for error
-class InputStreamCallback
-{
-public:
-	virtual void process(std::ifstream *stream) = 0;
-};
-class OutputStreamCallback
-{
-public:
-	virtual void process(std::ofstream *stream) = 0;
-};
-
-
-//! FlowFile Record Class
-class FlowFileRecord
-{
-	friend class ProcessSession;
-public:
-	//! Constructor
-	/*!
-	 * Create a new flow record
-	 */
-	FlowFileRecord(std::map<std::string, std::string> attributes, ResourceClaim *claim = NULL);
-	//! Destructor
-	virtual ~FlowFileRecord();
-	//! addAttribute key is enum
-	bool addAttribute(FlowAttribute key, std::string value);
-	//! addAttribute key is string
-	bool addAttribute(std::string key, std::string value);
-	//! removeAttribute key is enum
-	bool removeAttribute(FlowAttribute key);
-	//! removeAttribute key is string
-	bool removeAttribute(std::string key);
-	//! updateAttribute key is enum
-	bool updateAttribute(FlowAttribute key, std::string value);
-	//! updateAttribute key is string
-	bool updateAttribute(std::string key, std::string value);
-	//! getAttribute key is enum
-	bool getAttribute(FlowAttribute key, std::string &value);
-	//! getAttribute key is string
-	bool getAttribute(std::string key, std::string &value);
-	//! setAttribute, if attribute already there, update it, else, add it
-	void setAttribute(std::string key, std::string value) {
-		_attributes[key] = value;
-	}
-	//! Get the UUID as string
-	std::string getUUIDStr() {
-		return _uuidStr;
-	}
-	//! Get Attributes
-	std::map<std::string, std::string> getAttributes() {
-		return _attributes;
-	}
-	//! Check whether it is still being penalized
-	bool isPenalized() {
-		return (_penaltyExpirationMs > 0 ? _penaltyExpirationMs > getTimeMillis() : false);
-	}
-	//! Get Size
-	uint64_t getSize() {
-		return _size;
-	}
-	// ! Get Offset
-	uint64_t getOffset() {
-		return _offset;
-	}
-	// ! Get Entry Date
-	uint64_t getEntryDate() {
-		return _entryDate;
-	}
-	// ! Get Lineage Start Date
-	uint64_t getlineageStartDate() {
-		return _lineageStartDate;
-	}
-	// ! Set Original connection
-	void setOriginalConnection (Connection *connection) {
-		_orginalConnection = connection;
-	}
-	//! Get Resource Claim
-	ResourceClaim *getResourceClaim() {
-		return _claim;
-	}
-
-protected:
-
-	//! Date at which the flow file entered the flow
-	uint64_t _entryDate;
-	//! Date at which the origin of this flow file entered the flow
-	uint64_t _lineageStartDate;
-	//! Date at which the flow file was queued
-	uint64_t _lastQueueDate;
-	//! Size in bytes of the data corresponding to this flow file
-	uint64_t _size;
-	//! A global unique identifier
-	uuid_t _uuid;
-	//! A local unique identifier
-	uint64_t _id;
-	//! Offset to the content
-	uint64_t _offset;
-	//! Penalty expiration
-	uint64_t _penaltyExpirationMs;
-	//! Attributes key/values pairs for the flow record
-	std::map<std::string, std::string> _attributes;
-	//! Pointer to the associated content resource claim
-	ResourceClaim *_claim;
-	//! UUID string
-	std::string _uuidStr;
-	//! UUID string for all parents
-	std::set<std::string> _lineageIdentifiers;
-	//! duplicate the original flow file
-	void duplicate(FlowFileRecord *original);
-
-private:
-
-	//! Local flow sequence ID
-	static std::atomic<uint64_t> _localFlowSeqNumber;
-	//! Mark for deletion
-	bool _markedDelete;
-	//! Connection queue that this flow file will be transfer or current in
-	Connection *_connection;
-	//! Orginal connection queue that this flow file was dequeued from
-	Connection *_orginalConnection;
-	//! Logger
-	Logger *_logger;
-	//! Snapshot flow record for session rollback
-	bool _snapshot;
-	// Prevent default copy constructor and assignment operation
-	// Only support pass by reference or pointer
-	FlowFileRecord(const FlowFileRecord &parent);
-	FlowFileRecord &operator=(const FlowFileRecord &parent);
-
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/GenerateFlowFile.h
----------------------------------------------------------------------
diff --git a/inc/GenerateFlowFile.h b/inc/GenerateFlowFile.h
deleted file mode 100644
index 27aa43b..0000000
--- a/inc/GenerateFlowFile.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * @file GenerateFlowFile.h
- * GenerateFlowFile class declaration
- *
- * 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.
- */
-#ifndef __GENERATE_FLOW_FILE_H__
-#define __GENERATE_FLOW_FILE_H__
-
-#include "FlowFileRecord.h"
-#include "Processor.h"
-#include "ProcessSession.h"
-
-//! GenerateFlowFile Class
-class GenerateFlowFile : public Processor
-{
-public:
-	//! Constructor
-	/*!
-	 * Create a new processor
-	 */
-	GenerateFlowFile(std::string name, uuid_t uuid = NULL)
-	: Processor(name, uuid)
-	{
-		_data = NULL;
-		_dataSize = 0;
-	}
-	//! Destructor
-	virtual ~GenerateFlowFile()
-	{
-		if (_data)
-			delete[] _data;
-	}
-	//! Processor Name
-	static const std::string ProcessorName;
-	//! Supported Properties
-	static Property FileSize;
-	static Property BatchSize;
-	static Property DataFormat;
-	static Property UniqueFlowFiles;
-	static const char *DATA_FORMAT_BINARY;
-	static const char *DATA_FORMAT_TEXT;
-	//! Supported Relationships
-	static Relationship Success;
-	//! Nest Callback Class for write stream
-	class WriteCallback : public OutputStreamCallback
-	{
-		public:
-		WriteCallback(char *data, uint64_t size)
-		: _data(data), _dataSize(size) {}
-		char *_data;
-		uint64_t _dataSize;
-		void process(std::ofstream *stream) {
-			if (_data && _dataSize > 0)
-				stream->write(_data, _dataSize);
-		}
-	};
-
-public:
-	//! OnTrigger method, implemented by NiFi GenerateFlowFile
-	virtual void onTrigger(ProcessContext *context, ProcessSession *session);
-	//! Initialize, over write by NiFi GenerateFlowFile
-	virtual void initialize(void);
-
-protected:
-
-private:
-	//! Generated data
-	char * _data;
-	//! Size of the generate data
-	uint64_t _dataSize;
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/GetFile.h
----------------------------------------------------------------------
diff --git a/inc/GetFile.h b/inc/GetFile.h
deleted file mode 100644
index eb975fd..0000000
--- a/inc/GetFile.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- * @file GetFile.h
- * GetFile class declaration
- *
- * 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.
- */
-#ifndef __GET_FILE_H__
-#define __GET_FILE_H__
-
-#include "FlowFileRecord.h"
-#include "Processor.h"
-#include "ProcessSession.h"
-
-//! GetFile Class
-class GetFile : public Processor
-{
-public:
-	//! Constructor
-	/*!
-	 * Create a new processor
-	 */
-	GetFile(std::string name, uuid_t uuid = NULL)
-	: Processor(name, uuid)
-	{
-		_logger = Logger::getLogger();
-		_directory = ".";
-		_recursive = true;
-		_keepSourceFile = false;
-		_minAge = 0;
-		_maxAge = 0;
-		_minSize = 0;
-		_maxSize = 0;
-		_ignoreHiddenFile = true;
-		_pollInterval = 0;
-		_batchSize = 10;
-		_lastDirectoryListingTime = getTimeMillis();
-		_fileFilter = "[^\\.].*";
-	}
-	//! Destructor
-	virtual ~GetFile()
-	{
-	}
-	//! Processor Name
-	static const std::string ProcessorName;
-	//! Supported Properties
-	static Property Directory;
-	static Property Recurse;
-	static Property KeepSourceFile;
-	static Property MinAge;
-	static Property MaxAge;
-	static Property MinSize;
-	static Property MaxSize;
-	static Property IgnoreHiddenFile;
-	static Property PollInterval;
-	static Property BatchSize;
-	static Property FileFilter;
-	//! Supported Relationships
-	static Relationship Success;
-
-public:
-	//! OnTrigger method, implemented by NiFi GetFile
-	virtual void onTrigger(ProcessContext *context, ProcessSession *session);
-	//! Initialize, over write by NiFi GetFile
-	virtual void initialize(void);
-	//! perform directory listing
-	void performListing(std::string dir);
-
-protected:
-
-private:
-	//! Logger
-	Logger *_logger;
-	//! Queue for store directory list
-	std::queue<std::string> _dirList;
-	//! Get Listing size
-	uint64_t getListingSize() {
-		std::lock_guard<std::mutex> lock(_mtx);
-		return _dirList.size();
-	}
-	//! Whether the directory listing is empty
-	bool isListingEmpty();
-	//! Put full path file name into directory listing
-	void putListing(std::string fileName);
-	//! Poll directory listing for files
-	void pollListing(std::queue<std::string> &list, int maxSize);
-	//! Check whether file can be added to the directory listing
-	bool acceptFile(std::string fileName);
-	//! Mutex for protection of the directory listing
-	std::mutex _mtx;
-	std::string _directory;
-	bool _recursive;
-	bool _keepSourceFile;
-	int64_t _minAge;
-	int64_t _maxAge;
-	int64_t _minSize;
-	int64_t _maxSize;
-	bool _ignoreHiddenFile;
-	int64_t _pollInterval;
-	int64_t _batchSize;
-	uint64_t _lastDirectoryListingTime;
-	std::string _fileFilter;
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/ListenSyslog.h
----------------------------------------------------------------------
diff --git a/inc/ListenSyslog.h b/inc/ListenSyslog.h
deleted file mode 100644
index 81bc92c..0000000
--- a/inc/ListenSyslog.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/**
- * @file ListenSyslog.h
- * ListenSyslog class declaration
- *
- * 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.
- */
-#ifndef __LISTEN_SYSLOG_H__
-#define __LISTEN_SYSLOG_H__
-
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <errno.h>
-#include <sys/select.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <chrono>
-#include <thread>
-#include "FlowFileRecord.h"
-#include "Processor.h"
-#include "ProcessSession.h"
-
-//! SyslogEvent
-typedef struct {
-	uint8_t *payload;
-	uint64_t len;
-} SysLogEvent;
-
-//! ListenSyslog Class
-class ListenSyslog : public Processor
-{
-public:
-	//! Constructor
-	/*!
-	 * Create a new processor
-	 */
-	ListenSyslog(std::string name, uuid_t uuid = NULL)
-	: Processor(name, uuid)
-	{
-		_logger = Logger::getLogger();
-		_eventQueueByteSize = 0;
-		_serverSocket = 0;
-		_recvBufSize = 65507;
-		_maxSocketBufSize = 1024*1024;
-		_maxConnections = 2;
-		_maxBatchSize = 1;
-		_messageDelimiter = "\n";
-		_protocol = "UDP";
-		_port = 514;
-		_parseMessages = false;
-		_serverSocket = 0;
-		_maxFds = 0;
-		FD_ZERO(&_readfds);
-		_thread = NULL;
-		_resetServerSocket = false;
-		_serverTheadRunning = false;
-	}
-	//! Destructor
-	virtual ~ListenSyslog()
-	{
-		_serverTheadRunning = false;
-		if (this->_thread)
-			delete this->_thread;
-		// need to reset the socket
-		std::vector<int>::iterator it;
-		for (it = _clientSockets.begin(); it != _clientSockets.end(); ++it)
-		{
-			int clientSocket = *it;
-			close(clientSocket);
-		}
-		_clientSockets.clear();
-		if (_serverSocket > 0)
-		{
-			_logger->log_info("ListenSysLog Server socket %d close", _serverSocket);
-			close(_serverSocket);
-			_serverSocket = 0;
-		}
-	}
-	//! Processor Name
-	static const std::string ProcessorName;
-	//! Supported Properties
-	static Property RecvBufSize;
-	static Property MaxSocketBufSize;
-	static Property MaxConnections;
-	static Property MaxBatchSize;
-	static Property MessageDelimiter;
-	static Property ParseMessages;
-	static Property Protocol;
-	static Property Port;
-	//! Supported Relationships
-	static Relationship Success;
-	static Relationship Invalid;
-	//! Nest Callback Class for write stream
-	class WriteCallback : public OutputStreamCallback
-	{
-		public:
-		WriteCallback(char *data, uint64_t size)
-		: _data(data), _dataSize(size) {}
-		char *_data;
-		uint64_t _dataSize;
-		void process(std::ofstream *stream) {
-			if (_data && _dataSize > 0)
-				stream->write(_data, _dataSize);
-		}
-	};
-
-public:
-	//! OnTrigger method, implemented by NiFi ListenSyslog
-	virtual void onTrigger(ProcessContext *context, ProcessSession *session);
-	//! Initialize, over write by NiFi ListenSyslog
-	virtual void initialize(void);
-
-protected:
-
-private:
-	//! Logger
-	Logger *_logger;
-	//! Run function for the thread
-	static void run(ListenSyslog *process);
-	//! Run Thread
-	void runThread();
-	//! Queue for store syslog event
-	std::queue<SysLogEvent> _eventQueue;
-	//! Size of Event queue in bytes
-	uint64_t _eventQueueByteSize;
-	//! Get event queue size
-	uint64_t getEventQueueSize() {
-		std::lock_guard<std::mutex> lock(_mtx);
-		return _eventQueue.size();
-	}
-	//! Get event queue byte size
-	uint64_t getEventQueueByteSize() {
-		std::lock_guard<std::mutex> lock(_mtx);
-		return _eventQueueByteSize;
-	}
-	//! Whether the event queue  is empty
-	bool isEventQueueEmpty()
-	{
-		std::lock_guard<std::mutex> lock(_mtx);
-		return _eventQueue.empty();
-	}
-	//! Put event into directory listing
-	void putEvent(uint8_t *payload, uint64_t len)
-	{
-		std::lock_guard<std::mutex> lock(_mtx);
-		SysLogEvent event;
-		event.payload = payload;
-		event.len = len;
-		_eventQueue.push(event);
-		_eventQueueByteSize += len;
-	}
-	//! Read \n terminated line from TCP socket
-	int readline( int fd, char *bufptr, size_t len );
-	//! start server socket and handling client socket
-	void startSocketThread();
-	//! Poll event
-	void pollEvent(std::queue<SysLogEvent> &list, int maxSize)
-	{
-		std::lock_guard<std::mutex> lock(_mtx);
-
-		while (!_eventQueue.empty() && (maxSize == 0 || list.size() < maxSize))
-		{
-			SysLogEvent event = _eventQueue.front();
-			_eventQueue.pop();
-			_eventQueueByteSize -= event.len;
-			list.push(event);
-		}
-		return;
-	}
-	//! Mutex for protection of the directory listing
-	std::mutex _mtx;
-	int64_t _recvBufSize;
-	int64_t _maxSocketBufSize;
-	int64_t _maxConnections;
-	int64_t _maxBatchSize;
-	std::string _messageDelimiter;
-	std::string _protocol;
-	int64_t _port;
-	bool _parseMessages;
-	int _serverSocket;
-	std::vector<int> _clientSockets;
-	int _maxFds;
-	fd_set _readfds;
-	//! thread
-	std::thread *_thread;
-	//! whether to reset the server socket
-	bool _resetServerSocket;
-	bool _serverTheadRunning;
-	//! buffer for read socket
-	uint8_t _buffer[2048];
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/LogAttribute.h
----------------------------------------------------------------------
diff --git a/inc/LogAttribute.h b/inc/LogAttribute.h
deleted file mode 100644
index 125ebf3..0000000
--- a/inc/LogAttribute.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/**
- * @file LogAttribute.h
- * LogAttribute class declaration
- *
- * 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.
- */
-#ifndef __LOG_ATTRIBUTE_H__
-#define __LOG_ATTRIBUTE_H__
-
-#include "FlowFileRecord.h"
-#include "Processor.h"
-#include "ProcessSession.h"
-
-//! LogAttribute Class
-class LogAttribute : public Processor
-{
-public:
-	//! Constructor
-	/*!
-	 * Create a new processor
-	 */
-	LogAttribute(std::string name, uuid_t uuid = NULL)
-	: Processor(name, uuid)
-	{
-		_logger = Logger::getLogger();
-	}
-	//! Destructor
-	virtual ~LogAttribute()
-	{
-	}
-	//! Processor Name
-	static const std::string ProcessorName;
-	//! Supported Properties
-	static Property LogLevel;
-	static Property AttributesToLog;
-	static Property AttributesToIgnore;
-	static Property LogPayload;
-	static Property LogPrefix;
-	//! Supported Relationships
-	static Relationship Success;
-	enum LogAttrLevel {
-        LogAttrLevelTrace, LogAttrLevelDebug, LogAttrLevelInfo, LogAttrLevelWarn, LogAttrLevelError
-    };
-	//! Convert log level from string to enum
-	bool logLevelStringToEnum(std::string logStr, LogAttrLevel &level)
-	{
-		if (logStr == "trace")
-		{
-			level = LogAttrLevelTrace;
-			return true;
-		}
-		else if (logStr == "debug")
-		{
-			level = LogAttrLevelDebug;
-			return true;
-		}
-		else if (logStr == "info")
-		{
-			level = LogAttrLevelInfo;
-			return true;
-		}
-		else if (logStr == "warn")
-		{
-			level = LogAttrLevelWarn;
-			return true;
-		}
-		else if (logStr == "error")
-		{
-			level = LogAttrLevelError;
-			return true;
-		}
-		else
-			return false;
-	}
-	//! Nest Callback Class for read stream
-	class ReadCallback : public InputStreamCallback
-	{
-		public:
-		ReadCallback(uint64_t size)
-		{
-			_bufferSize = size;
-			_buffer = new char[_bufferSize];
-		}
-		~ReadCallback()
-		{
-			if (_buffer)
-				delete[] _buffer;
-		}
-		void process(std::ifstream *stream) {
-
-			stream->read(_buffer, _bufferSize);
-			if (!stream)
-				_readSize = stream->gcount();
-			else
-				_readSize = _bufferSize;
-		}
-		char  *_buffer;
-		uint64_t _bufferSize;
-		uint64_t _readSize;
-	};
-
-public:
-	//! OnTrigger method, implemented by NiFi LogAttribute
-	virtual void onTrigger(ProcessContext *context, ProcessSession *session);
-	//! Initialize, over write by NiFi LogAttribute
-	virtual void initialize(void);
-
-protected:
-
-private:
-	//! Logger
-	Logger *_logger;
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/Logger.h
----------------------------------------------------------------------
diff --git a/inc/Logger.h b/inc/Logger.h
deleted file mode 100644
index 3edad9d..0000000
--- a/inc/Logger.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * @file Logger.h
- * Logger class declaration
- * This is a C++ wrapper for spdlog, a lightweight C++ logging library
- *
- * 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.
- */
-#ifndef __LOGGER_H__
-#define __LOGGER_H__
-
-#include "spdlog/spdlog.h"
-
-using spdlog::stdout_logger_mt;
-using spdlog::rotating_logger_mt;
-using spdlog::logger;
-
-#define LOG_BUFFER_SIZE 1024
-#define FILL_BUFFER  char buffer[LOG_BUFFER_SIZE]; \
-    va_list args; \
-    va_start(args, format); \
-    vsnprintf(buffer, LOG_BUFFER_SIZE,format, args); \
-    va_end(args);
-
-//! 5M default log file size
-#define DEFAULT_LOG_FILE_SIZE (5*1024*1024)
-//! 3 log files rotation
-#define DEFAULT_LOG_FILE_NUMBER 3
-#define LOG_NAME "minifi log"
-#define LOG_FILE_NAME "minifi-app.log"
-
-typedef enum
-{
-    trace    = 0,
-    debug    = 1,
-    info     = 2,
-    notice   = 3,
-    warn     = 4,
-    err      = 5,
-    critical = 6,
-    alert    = 7,
-    emerg    = 8,
-    off      = 9
-} LOG_LEVEL_E;
-
-//! Logger Class
-class Logger {
-
-public:
-
-	//! Get the singleton logger instance
-	static Logger * getLogger() {
-		if (!_logger)
-			_logger = new Logger();
-		return _logger;
-	}
-	void setLogLevel(LOG_LEVEL_E level) {
-		if (_spdlog == NULL)
-			return;
-		_spdlog->set_level((spdlog::level::level_enum) level);
-	}
-	//! Destructor
-	~Logger() {}
-	/**
-	 * @brief Log error message
-	 * @param format format string ('man printf' for syntax)
-	 * @warning does not check @p log or @p format for null. Caller must ensure parameters and format string lengths match
-	 */
-	void log_error(const char *const format, ...) {
-		if(_spdlog == NULL)
-			return;
-		FILL_BUFFER
-	    _spdlog->error(buffer);
-	}
-	/**
-	 * @brief Log warn message
-	 * @param format format string ('man printf' for syntax)
-	 * @warning does not check @p log or @p format for null. Caller must ensure parameters and format string lengths match
-	 */
-	void log_warn(const char *const format, ...) {
-		if(_spdlog == NULL)
-			return;
-		FILL_BUFFER
-	    _spdlog->warn(buffer);
-	}
-	/**
-	 * @brief Log info message
-	 * @param format format string ('man printf' for syntax)
-	 * @warning does not check @p log or @p format for null. Caller must ensure parameters and format string lengths match
-	 */
-	void log_info(const char *const format, ...) {
-		if(_spdlog == NULL)
-			return;
-		FILL_BUFFER
-	    _spdlog->info(buffer);
-	}
-	/**
-	 * @brief Log debug message
-	 * @param format format string ('man printf' for syntax)
-	 * @warning does not check @p log or @p format for null. Caller must ensure parameters and format string lengths match
-	 */
-	void log_debug(const char *const format, ...) {
-		if(_spdlog == NULL)
-			return;
-		FILL_BUFFER
-	    _spdlog->debug(buffer);
-	}
-	/**
-	 * @brief Log trace message
-	 * @param format format string ('man printf' for syntax)
-	 * @warning does not check @p log or @p format for null. Caller must ensure parameters and format string lengths match
-	 */
-	void log_trace(const char *const format, ...) {
-		if(_spdlog == NULL)
-			return;
-		FILL_BUFFER
-	    _spdlog->trace(buffer);
-	}
-
-protected:
-
-private:
-	// Prevent default copy constructor and assignment operation
-	// Only support pass by reference or pointer
-	Logger(const Logger &parent);
-	Logger &operator=(const Logger &parent);
-	//! Constructor
-	/*!
-	 * Create a logger
-	 * */
-	Logger(const std::string logger_name = LOG_NAME, const std::string filename = LOG_FILE_NAME, size_t max_file_size = DEFAULT_LOG_FILE_SIZE, size_t max_files = DEFAULT_LOG_FILE_NUMBER, bool force_flush = true) {
-        _spdlog = rotating_logger_mt(logger_name, filename, max_file_size, max_files, force_flush);
-		_spdlog->set_level((spdlog::level::level_enum) debug);
-	}
-	//! spdlog
-	std::shared_ptr<logger> _spdlog;
-
-	//! Singleton logger instance
-	static Logger *_logger;
-};
-
-#endif

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b02af540/inc/ProcessContext.h
----------------------------------------------------------------------
diff --git a/inc/ProcessContext.h b/inc/ProcessContext.h
deleted file mode 100644
index 2a88b93..0000000
--- a/inc/ProcessContext.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * @file ProcessContext.h
- * ProcessContext class declaration
- *
- * 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.
- */
-#ifndef __PROCESS_CONTEXT_H__
-#define __PROCESS_CONTEXT_H__
-
-#include <uuid/uuid.h>
-#include <vector>
-#include <queue>
-#include <map>
-#include <mutex>
-#include <atomic>
-#include <algorithm>
-
-#include "Logger.h"
-#include "Processor.h"
-
-//! ProcessContext Class
-class ProcessContext
-{
-public:
-	//! Constructor
-	/*!
-	 * Create a new process context associated with the processor/controller service/state manager
-	 */
-	ProcessContext(Processor *processor = NULL) : _processor(processor) {
-		_logger = Logger::getLogger();
-	}
-	//! Destructor
-	virtual ~ProcessContext() {}
-	//! Get Processor associated with the Process Context
-	Processor *getProcessor() {
-		return _processor;
-	}
-	bool getProperty(std::string name, std::string &value) {
-		if (_processor)
-			return _processor->getProperty(name, value);
-		else
-			return false;
-	}
-	//! Whether the relationship is supported
-	bool isSupportedRelationship(Relationship relationship) {
-		if (_processor)
-			return _processor->isSupportedRelationship(relationship);
-		else
-			return false;
-	}
-	//! Check whether the relationship is auto terminated
-	bool isAutoTerminated(Relationship relationship) {
-		if (_processor)
-			return _processor->isAutoTerminated(relationship);
-		else
-			return false;
-	}
-	//! Get ProcessContext Maximum Concurrent Tasks
-	uint8_t getMaxConcurrentTasks(void) {
-		if (_processor)
-			return _processor->getMaxConcurrentTasks();
-		else
-			return 0;
-	}
-	//! Yield based on the yield period
-	void yield() {
-		if (_processor)
-			_processor->yield();
-	}
-
-protected:
-
-private:
-
-	//! Processor
-	Processor *_processor;
-	// Prevent default copy constructor and assignment operation
-	// Only support pass by reference or pointer
-	ProcessContext(const ProcessContext &parent);
-	ProcessContext &operator=(const ProcessContext &parent);
-	//! Logger
-	Logger *_logger;
-
-};
-
-#endif