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/07/21 18:45:10 UTC

[51/52] [abbrv] [partial] nifi-minifi-cpp git commit: MINIFI-6: More infra works

MINIFI-6: More infra works


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

Branch: refs/heads/MINIFI-6
Commit: 7956696ef23ad38b541af9db9e0b82b48dbea9e7
Parents: 86d03de
Author: Bin Qiu <be...@gmail.com>
Authored: Tue Jun 7 07:26:07 2016 -0700
Committer: Aldrin Piri <al...@apache.org>
Committed: Thu Jul 21 14:30:39 2016 -0400

----------------------------------------------------------------------
 Makefile                                        |    46 +-
 conf/flow.xml                                   |   130 +
 conf/flowTest.xml                               |   172 +
 conf/nifi.properties                            |   185 +
 inc/Configure.h                                 |     3 +
 inc/Connection.h                                |     2 +
 inc/FlowControlProtocol.h                       |   332 +
 inc/FlowController.h                            |    14 +-
 inc/LogAttribute.h                              |    26 +
 inc/Logger.h                                    |     6 +-
 inc/ProcessGroup.h                              |     2 +
 inc/ProcessSession.h                            |     2 +
 inc/Processor.h                                 |     3 +
 inc/Property.h                                  |    20 +
 main/MiNiFiMain.cpp                             |    39 +-
 src/Configure.cpp                               |     4 +
 src/Connection.cpp                              |    14 +
 src/FlowControlProtocol.cpp                     |   540 +
 src/FlowController.cpp                          |    50 +-
 src/FlowFileRecord.cpp                          |     4 +
 src/LogAttribute.cpp                            |    25 +
 src/ProcessGroup.cpp                            |    39 +
 src/ProcessSession.cpp                          |    97 +-
 src/Processor.cpp                               |    11 +-
 src/SchedulingAgent.cpp                         |     1 +
 src/TimerDrivenSchedulingAgent.cpp              |     3 +-
 target/conf/nifi.properties                     |     6 +
 test/Server.cpp                                 |   607 +
 thirdparty/libxml2/AUTHORS                      |     5 +
 thirdparty/libxml2/ChangeLog                    | 19678 +++++++
 thirdparty/libxml2/Copyright                    |    23 +
 thirdparty/libxml2/DOCBparser.c                 |   305 +
 thirdparty/libxml2/HTMLparser.c                 |  7121 +++
 thirdparty/libxml2/HTMLtree.c                   |  1281 +
 thirdparty/libxml2/INSTALL                      |   370 +
 thirdparty/libxml2/Makefile.am                  |  1279 +
 thirdparty/libxml2/Makefile.in                  |  2935 +
 thirdparty/libxml2/Makefile.tests               |    41 +
 thirdparty/libxml2/NEWS                         |  2642 +
 thirdparty/libxml2/README                       |    39 +
 thirdparty/libxml2/README.tests                 |    39 +
 thirdparty/libxml2/SAX.c                        |   180 +
 thirdparty/libxml2/SAX2.c                       |  3045 +
 thirdparty/libxml2/TODO                         |   278 +
 thirdparty/libxml2/TODO_SCHEMAS                 |    31 +
 thirdparty/libxml2/VxWorks/Makefile             |    68 +
 thirdparty/libxml2/VxWorks/README               |    86 +
 thirdparty/libxml2/VxWorks/build.sh             |    85 +
 thirdparty/libxml2/acinclude.m4                 |    28 +
 thirdparty/libxml2/aclocal.m4                   |  1373 +
 thirdparty/libxml2/bakefile/Bakefiles.bkgen     |    15 +
 thirdparty/libxml2/bakefile/Readme.txt          |    92 +
 thirdparty/libxml2/bakefile/libxml2.bkl         |   749 +
 thirdparty/libxml2/buf.c                        |  1345 +
 thirdparty/libxml2/buf.h                        |    72 +
 thirdparty/libxml2/c14n.c                       |  2238 +
 thirdparty/libxml2/catalog.c                    |  3825 ++
 thirdparty/libxml2/check-relaxng-test-suite.py  |   394 +
 thirdparty/libxml2/check-relaxng-test-suite2.py |   418 +
 thirdparty/libxml2/check-xinclude-test-suite.py |   221 +
 thirdparty/libxml2/check-xml-test-suite.py      |   409 +
 thirdparty/libxml2/check-xsddata-test-suite.py  |   420 +
 thirdparty/libxml2/chvalid.c                    |   336 +
 thirdparty/libxml2/compile                      |   347 +
 thirdparty/libxml2/config.guess                 |  1421 +
 thirdparty/libxml2/config.h.in                  |   332 +
 thirdparty/libxml2/config.sub                   |  1807 +
 thirdparty/libxml2/configure                    | 18613 ++++++
 thirdparty/libxml2/configure.ac                 |  1667 +
 thirdparty/libxml2/dbgen.pl                     |    43 +
 thirdparty/libxml2/dbgenattr.pl                 |    42 +
 thirdparty/libxml2/debugXML.c                   |  3428 ++
 thirdparty/libxml2/depcomp                      |   791 +
 thirdparty/libxml2/dict.c                       |  1262 +
 thirdparty/libxml2/doc/APIchunk0.html           |   301 +
 thirdparty/libxml2/doc/APIchunk1.html           |   382 +
 thirdparty/libxml2/doc/APIchunk10.html          |   675 +
 thirdparty/libxml2/doc/APIchunk11.html          |   339 +
 thirdparty/libxml2/doc/APIchunk12.html          |   927 +
 thirdparty/libxml2/doc/APIchunk13.html          |   681 +
 thirdparty/libxml2/doc/APIchunk14.html          |   470 +
 thirdparty/libxml2/doc/APIchunk15.html          |   454 +
 thirdparty/libxml2/doc/APIchunk16.html          |   375 +
 thirdparty/libxml2/doc/APIchunk17.html          |   580 +
 thirdparty/libxml2/doc/APIchunk18.html          |   457 +
 thirdparty/libxml2/doc/APIchunk19.html          |   373 +
 thirdparty/libxml2/doc/APIchunk2.html           |   416 +
 thirdparty/libxml2/doc/APIchunk20.html          |   330 +
 thirdparty/libxml2/doc/APIchunk21.html          |   399 +
 thirdparty/libxml2/doc/APIchunk22.html          |   599 +
 thirdparty/libxml2/doc/APIchunk23.html          |   668 +
 thirdparty/libxml2/doc/APIchunk24.html          |  1001 +
 thirdparty/libxml2/doc/APIchunk25.html          |   451 +
 thirdparty/libxml2/doc/APIchunk26.html          |   332 +
 thirdparty/libxml2/doc/APIchunk27.html          |   349 +
 thirdparty/libxml2/doc/APIchunk28.html          |   565 +
 thirdparty/libxml2/doc/APIchunk29.html          |   131 +
 thirdparty/libxml2/doc/APIchunk3.html           |   360 +
 thirdparty/libxml2/doc/APIchunk4.html           |   351 +
 thirdparty/libxml2/doc/APIchunk5.html           |   293 +
 thirdparty/libxml2/doc/APIchunk6.html           |   294 +
 thirdparty/libxml2/doc/APIchunk7.html           |   330 +
 thirdparty/libxml2/doc/APIchunk8.html           |   307 +
 thirdparty/libxml2/doc/APIchunk9.html           |   273 +
 thirdparty/libxml2/doc/APIconstructors.html     |   595 +
 thirdparty/libxml2/doc/APIfiles.html            |  3591 ++
 thirdparty/libxml2/doc/APIfunctions.html        |  2347 +
 thirdparty/libxml2/doc/APIsymbols.html          |  3587 ++
 thirdparty/libxml2/doc/ChangeLog.xsl            |   117 +
 thirdparty/libxml2/doc/DOM.gif                  |   Bin 0 -> 3166 bytes
 thirdparty/libxml2/doc/DOM.html                 |    17 +
 thirdparty/libxml2/doc/FAQ.html                 |   299 +
 thirdparty/libxml2/doc/Libxml2-Logo-180x168.gif |   Bin 0 -> 8195 bytes
 thirdparty/libxml2/doc/Libxml2-Logo-90x34.gif   |   Bin 0 -> 3070 bytes
 thirdparty/libxml2/doc/Makefile.am              |   351 +
 thirdparty/libxml2/doc/Makefile.in              |  1157 +
 thirdparty/libxml2/doc/README.docs              |    24 +
 thirdparty/libxml2/doc/XMLinfo.html             |    35 +
 thirdparty/libxml2/doc/XSLT.html                |    13 +
 thirdparty/libxml2/doc/api.xsl                  |   394 +
 thirdparty/libxml2/doc/apibuild.py              |  2151 +
 thirdparty/libxml2/doc/architecture.html        |    24 +
 thirdparty/libxml2/doc/bugs.html                |    70 +
 thirdparty/libxml2/doc/catalog.gif              |   Bin 0 -> 6105 bytes
 thirdparty/libxml2/doc/catalog.html             |   261 +
 thirdparty/libxml2/doc/checkapisym.xsl          |    48 +
 thirdparty/libxml2/doc/contribs.html            |    41 +
 thirdparty/libxml2/doc/devhelp/Makefile.am      |    79 +
 thirdparty/libxml2/doc/devhelp/Makefile.in      |   681 +
 thirdparty/libxml2/doc/devhelp/devhelp.xsl      |   127 +
 thirdparty/libxml2/doc/devhelp/general.html     |    38 +
 thirdparty/libxml2/doc/devhelp/home.png         |   Bin 0 -> 654 bytes
 thirdparty/libxml2/doc/devhelp/html.xsl         |   602 +
 thirdparty/libxml2/doc/devhelp/index.html       |    67 +
 thirdparty/libxml2/doc/devhelp/left.png         |   Bin 0 -> 459 bytes
 .../libxml2/doc/devhelp/libxml2-DOCBparser.html |   138 +
 .../libxml2/doc/devhelp/libxml2-HTMLparser.html |   373 +
 .../libxml2/doc/devhelp/libxml2-HTMLtree.html   |   172 +
 thirdparty/libxml2/doc/devhelp/libxml2-SAX.html |   243 +
 .../libxml2/doc/devhelp/libxml2-SAX2.html       |   247 +
 .../libxml2/doc/devhelp/libxml2-c14n.html       |    91 +
 .../libxml2/doc/devhelp/libxml2-catalog.html    |   278 +
 .../libxml2/doc/devhelp/libxml2-chvalid.html    |   241 +
 .../libxml2/doc/devhelp/libxml2-debugXML.html   |   225 +
 .../libxml2/doc/devhelp/libxml2-dict.html       |   134 +
 .../libxml2/doc/devhelp/libxml2-encoding.html   |   218 +
 .../libxml2/doc/devhelp/libxml2-entities.html   |   166 +
 .../libxml2/doc/devhelp/libxml2-globals.html    |   383 +
 .../libxml2/doc/devhelp/libxml2-hash.html       |   214 +
 .../libxml2/doc/devhelp/libxml2-list.html       |   226 +
 .../libxml2/doc/devhelp/libxml2-nanoftp.html    |   187 +
 .../libxml2/doc/devhelp/libxml2-nanohttp.html   |   142 +
 .../libxml2/doc/devhelp/libxml2-parser.html     |   766 +
 .../doc/devhelp/libxml2-parserInternals.html    |   688 +
 .../libxml2/doc/devhelp/libxml2-pattern.html    |   166 +
 .../libxml2/doc/devhelp/libxml2-relaxng.html    |   278 +
 .../doc/devhelp/libxml2-schemasInternals.html   |   860 +
 .../libxml2/doc/devhelp/libxml2-schematron.html |   166 +
 .../libxml2/doc/devhelp/libxml2-threads.html    |   161 +
 .../libxml2/doc/devhelp/libxml2-tree.html       |  1598 +
 thirdparty/libxml2/doc/devhelp/libxml2-uri.html |   154 +
 .../libxml2/doc/devhelp/libxml2-valid.html      |   528 +
 .../libxml2/doc/devhelp/libxml2-xinclude.html   |   169 +
 .../libxml2/doc/devhelp/libxml2-xlink.html      |   160 +
 .../libxml2/doc/devhelp/libxml2-xmlIO.html      |   347 +
 .../doc/devhelp/libxml2-xmlautomata.html        |   176 +
 .../libxml2/doc/devhelp/libxml2-xmlerror.html   |   953 +
 .../libxml2/doc/devhelp/libxml2-xmlexports.html |    87 +
 .../libxml2/doc/devhelp/libxml2-xmlmemory.html  |   186 +
 .../libxml2/doc/devhelp/libxml2-xmlmodule.html  |    97 +
 .../libxml2/doc/devhelp/libxml2-xmlreader.html  |   565 +
 .../libxml2/doc/devhelp/libxml2-xmlregexp.html  |   280 +
 .../libxml2/doc/devhelp/libxml2-xmlsave.html    |   133 +
 .../libxml2/doc/devhelp/libxml2-xmlschemas.html |   314 +
 .../doc/devhelp/libxml2-xmlschemastypes.html    |   237 +
 .../libxml2/doc/devhelp/libxml2-xmlstring.html  |   217 +
 .../libxml2/doc/devhelp/libxml2-xmlunicode.html |   887 +
 .../libxml2/doc/devhelp/libxml2-xmlversion.html |   292 +
 .../libxml2/doc/devhelp/libxml2-xmlwriter.html  |   479 +
 .../libxml2/doc/devhelp/libxml2-xpath.html      |   542 +
 .../doc/devhelp/libxml2-xpathInternals.html     |   787 +
 .../libxml2/doc/devhelp/libxml2-xpointer.html   |   171 +
 thirdparty/libxml2/doc/devhelp/libxml2.devhelp  |  3574 ++
 thirdparty/libxml2/doc/devhelp/right.png        |   Bin 0 -> 472 bytes
 thirdparty/libxml2/doc/devhelp/style.css        |    66 +
 thirdparty/libxml2/doc/devhelp/up.png           |   Bin 0 -> 406 bytes
 thirdparty/libxml2/doc/docs.html                |    34 +
 thirdparty/libxml2/doc/downloads.html           |    40 +
 thirdparty/libxml2/doc/elfgcchack.xsl           |   160 +
 thirdparty/libxml2/doc/encoding.html            |   217 +
 thirdparty/libxml2/doc/entities.html            |    64 +
 thirdparty/libxml2/doc/example.html             |   187 +
 thirdparty/libxml2/doc/examples/Makefile.am     |   135 +
 thirdparty/libxml2/doc/examples/Makefile.in     |   976 +
 thirdparty/libxml2/doc/examples/examples.xml    |   751 +
 thirdparty/libxml2/doc/examples/examples.xsl    |   174 +
 thirdparty/libxml2/doc/examples/index.html      |    14 +
 thirdparty/libxml2/doc/examples/index.py        |   314 +
 thirdparty/libxml2/doc/examples/io1.c           |   166 +
 thirdparty/libxml2/doc/examples/io1.res         |     5 +
 thirdparty/libxml2/doc/examples/io2.c           |    58 +
 thirdparty/libxml2/doc/examples/io2.res         |     2 +
 thirdparty/libxml2/doc/examples/parse1.c        |    56 +
 thirdparty/libxml2/doc/examples/parse2.c        |    72 +
 thirdparty/libxml2/doc/examples/parse3.c        |    60 +
 thirdparty/libxml2/doc/examples/parse4.c        |   143 +
 thirdparty/libxml2/doc/examples/reader1.c       |   107 +
 thirdparty/libxml2/doc/examples/reader1.res     |    14 +
 thirdparty/libxml2/doc/examples/reader2.c       |   122 +
 thirdparty/libxml2/doc/examples/reader3.c       |   120 +
 thirdparty/libxml2/doc/examples/reader3.res     |    13 +
 thirdparty/libxml2/doc/examples/reader4.c       |   122 +
 thirdparty/libxml2/doc/examples/reader4.res     |     3 +
 thirdparty/libxml2/doc/examples/test1.xml       |     1 +
 thirdparty/libxml2/doc/examples/test2.xml       |    13 +
 thirdparty/libxml2/doc/examples/test3.xml       |    39 +
 thirdparty/libxml2/doc/examples/testWriter.c    |  1198 +
 thirdparty/libxml2/doc/examples/tree1.c         |    94 +
 thirdparty/libxml2/doc/examples/tree1.res       |     4 +
 thirdparty/libxml2/doc/examples/tree2.c         |   118 +
 thirdparty/libxml2/doc/examples/tree2.res       |    18 +
 thirdparty/libxml2/doc/examples/tst.xml         |     7 +
 thirdparty/libxml2/doc/examples/writer.xml      |     2 +
 thirdparty/libxml2/doc/examples/xpath1.c        |   250 +
 thirdparty/libxml2/doc/examples/xpath1.res      |     5 +
 thirdparty/libxml2/doc/examples/xpath2.c        |   190 +
 thirdparty/libxml2/doc/examples/xpath2.res      |    30 +
 thirdparty/libxml2/doc/guidelines.html          |   374 +
 thirdparty/libxml2/doc/help.html                |    26 +
 thirdparty/libxml2/doc/html/book1.html          |    13 +
 thirdparty/libxml2/doc/html/home.png            |   Bin 0 -> 654 bytes
 thirdparty/libxml2/doc/html/index.html          |    13 +
 thirdparty/libxml2/doc/html/left.png            |   Bin 0 -> 459 bytes
 .../libxml2/doc/html/libxml-DOCBparser.html     |    51 +
 .../libxml2/doc/html/libxml-HTMLparser.html     |   184 +
 .../libxml2/doc/html/libxml-HTMLtree.html       |    73 +
 thirdparty/libxml2/doc/html/libxml-SAX.html     |   125 +
 thirdparty/libxml2/doc/html/libxml-SAX2.html    |   128 +
 thirdparty/libxml2/doc/html/libxml-c14n.html    |    38 +
 thirdparty/libxml2/doc/html/libxml-catalog.html |   142 +
 thirdparty/libxml2/doc/html/libxml-chvalid.html |    72 +
 .../libxml2/doc/html/libxml-debugXML.html       |   120 +
 thirdparty/libxml2/doc/html/libxml-dict.html    |    58 +
 .../libxml2/doc/html/libxml-encoding.html       |   124 +
 .../libxml2/doc/html/libxml-entities.html       |    79 +
 thirdparty/libxml2/doc/html/libxml-globals.html |   152 +
 thirdparty/libxml2/doc/html/libxml-hash.html    |   116 +
 thirdparty/libxml2/doc/html/libxml-lib.html     |    13 +
 thirdparty/libxml2/doc/html/libxml-list.html    |   120 +
 thirdparty/libxml2/doc/html/libxml-nanoftp.html |    94 +
 .../libxml2/doc/html/libxml-nanohttp.html       |    65 +
 thirdparty/libxml2/doc/html/libxml-parser.html  |   559 +
 .../doc/html/libxml-parserInternals.html        |   322 +
 thirdparty/libxml2/doc/html/libxml-pattern.html |    76 +
 thirdparty/libxml2/doc/html/libxml-relaxng.html |   162 +
 .../doc/html/libxml-schemasInternals.html       |   373 +
 .../libxml2/doc/html/libxml-schematron.html     |    81 +
 thirdparty/libxml2/doc/html/libxml-threads.html |    72 +
 thirdparty/libxml2/doc/html/libxml-tree.html    |   991 +
 thirdparty/libxml2/doc/html/libxml-uri.html     |    73 +
 thirdparty/libxml2/doc/html/libxml-valid.html   |   289 +
 .../libxml2/doc/html/libxml-xinclude.html       |    59 +
 thirdparty/libxml2/doc/html/libxml-xlink.html   |    82 +
 thirdparty/libxml2/doc/html/libxml-xmlIO.html   |   212 +
 .../libxml2/doc/html/libxml-xmlautomata.html    |    85 +
 .../libxml2/doc/html/libxml-xmlerror.html       |   865 +
 .../libxml2/doc/html/libxml-xmlexports.html     |    20 +
 .../libxml2/doc/html/libxml-xmlmemory.html      |   107 +
 .../libxml2/doc/html/libxml-xmlmodule.html      |    38 +
 .../libxml2/doc/html/libxml-xmlreader.html      |   330 +
 .../libxml2/doc/html/libxml-xmlregexp.html      |   143 +
 thirdparty/libxml2/doc/html/libxml-xmlsave.html |    60 +
 .../libxml2/doc/html/libxml-xmlschemas.html     |   185 +
 .../doc/html/libxml-xmlschemastypes.html        |   123 +
 .../libxml2/doc/html/libxml-xmlstring.html      |   108 +
 .../libxml2/doc/html/libxml-xmlunicode.html     |   512 +
 .../libxml2/doc/html/libxml-xmlversion.html     |    63 +
 .../libxml2/doc/html/libxml-xmlwriter.html      |   261 +
 thirdparty/libxml2/doc/html/libxml-xpath.html   |   316 +
 .../libxml2/doc/html/libxml-xpathInternals.html |   394 +
 .../libxml2/doc/html/libxml-xpointer.html       |    83 +
 thirdparty/libxml2/doc/html/libxml-xzlib.html   |    16 +
 thirdparty/libxml2/doc/html/right.png           |   Bin 0 -> 472 bytes
 thirdparty/libxml2/doc/html/up.png              |   Bin 0 -> 406 bytes
 thirdparty/libxml2/doc/index.html               |    77 +
 thirdparty/libxml2/doc/index.py                 |  1258 +
 thirdparty/libxml2/doc/interface.html           |    59 +
 thirdparty/libxml2/doc/intro.html               |    32 +
 thirdparty/libxml2/doc/library.html             |   158 +
 thirdparty/libxml2/doc/libxml.gif               |   Bin 0 -> 7692 bytes
 thirdparty/libxml2/doc/libxml2-api.xml          | 18510 ++++++
 thirdparty/libxml2/doc/libxml2.xsa              |   191 +
 thirdparty/libxml2/doc/namespaces.html          |    50 +
 thirdparty/libxml2/doc/newapi.xsl               |   766 +
 thirdparty/libxml2/doc/news.html                |  2439 +
 thirdparty/libxml2/doc/news.xsl                 |    44 +
 thirdparty/libxml2/doc/python.html              |   254 +
 thirdparty/libxml2/doc/redhat.gif               |   Bin 0 -> 697 bytes
 thirdparty/libxml2/doc/search.php               |   477 +
 thirdparty/libxml2/doc/searches.html            |    61 +
 thirdparty/libxml2/doc/searches.xsl             |    97 +
 thirdparty/libxml2/doc/site.xsl                 |   741 +
 thirdparty/libxml2/doc/smallfootonly.gif        |   Bin 0 -> 2772 bytes
 thirdparty/libxml2/doc/structure.gif            |   Bin 0 -> 5559 bytes
 thirdparty/libxml2/doc/symbols.xml              |  1768 +
 thirdparty/libxml2/doc/syms.xsl                 |    99 +
 thirdparty/libxml2/doc/threads.html             |    30 +
 thirdparty/libxml2/doc/tree.html                |    53 +
 thirdparty/libxml2/doc/tutorial/apa.html        |     8 +
 thirdparty/libxml2/doc/tutorial/apb.html        |    14 +
 thirdparty/libxml2/doc/tutorial/apc.html        |    82 +
 thirdparty/libxml2/doc/tutorial/apd.html        |    76 +
 thirdparty/libxml2/doc/tutorial/ape.html        |    78 +
 thirdparty/libxml2/doc/tutorial/apf.html        |    67 +
 thirdparty/libxml2/doc/tutorial/apg.html        |    75 +
 thirdparty/libxml2/doc/tutorial/aph.html        |    76 +
 thirdparty/libxml2/doc/tutorial/api.html        |     4 +
 thirdparty/libxml2/doc/tutorial/ar01s02.html    |    14 +
 thirdparty/libxml2/doc/tutorial/ar01s03.html    |    47 +
 thirdparty/libxml2/doc/tutorial/ar01s04.html    |    54 +
 thirdparty/libxml2/doc/tutorial/ar01s05.html    |    55 +
 thirdparty/libxml2/doc/tutorial/ar01s06.html    |    35 +
 thirdparty/libxml2/doc/tutorial/ar01s07.html    |    30 +
 thirdparty/libxml2/doc/tutorial/ar01s08.html    |    38 +
 thirdparty/libxml2/doc/tutorial/ar01s09.html    |    63 +
 .../libxml2/doc/tutorial/images/blank.png       |   Bin 0 -> 374 bytes
 .../libxml2/doc/tutorial/images/callouts/1.png  |   Bin 0 -> 329 bytes
 .../libxml2/doc/tutorial/images/callouts/10.png |   Bin 0 -> 361 bytes
 .../libxml2/doc/tutorial/images/callouts/2.png  |   Bin 0 -> 353 bytes
 .../libxml2/doc/tutorial/images/callouts/3.png  |   Bin 0 -> 350 bytes
 .../libxml2/doc/tutorial/images/callouts/4.png  |   Bin 0 -> 345 bytes
 .../libxml2/doc/tutorial/images/callouts/5.png  |   Bin 0 -> 348 bytes
 .../libxml2/doc/tutorial/images/callouts/6.png  |   Bin 0 -> 355 bytes
 .../libxml2/doc/tutorial/images/callouts/7.png  |   Bin 0 -> 344 bytes
 .../libxml2/doc/tutorial/images/callouts/8.png  |   Bin 0 -> 357 bytes
 .../libxml2/doc/tutorial/images/callouts/9.png  |   Bin 0 -> 357 bytes
 .../libxml2/doc/tutorial/images/caution.png     |   Bin 0 -> 1250 bytes
 .../libxml2/doc/tutorial/images/draft.png       |   Bin 0 -> 17454 bytes
 thirdparty/libxml2/doc/tutorial/images/home.png |   Bin 0 -> 1156 bytes
 .../libxml2/doc/tutorial/images/important.png   |   Bin 0 -> 722 bytes
 thirdparty/libxml2/doc/tutorial/images/next.png |   Bin 0 -> 1150 bytes
 thirdparty/libxml2/doc/tutorial/images/note.png |   Bin 0 -> 490 bytes
 thirdparty/libxml2/doc/tutorial/images/prev.png |   Bin 0 -> 1132 bytes
 thirdparty/libxml2/doc/tutorial/images/tip.png  |   Bin 0 -> 449 bytes
 .../libxml2/doc/tutorial/images/toc-blank.png   |   Bin 0 -> 318 bytes
 .../libxml2/doc/tutorial/images/toc-minus.png   |   Bin 0 -> 259 bytes
 .../libxml2/doc/tutorial/images/toc-plus.png    |   Bin 0 -> 264 bytes
 thirdparty/libxml2/doc/tutorial/images/up.png   |   Bin 0 -> 1111 bytes
 .../libxml2/doc/tutorial/images/warning.png     |   Bin 0 -> 1241 bytes
 .../libxml2/doc/tutorial/includeaddattribute.c  |    64 +
 .../libxml2/doc/tutorial/includeaddkeyword.c    |    75 +
 .../libxml2/doc/tutorial/includeconvert.c       |    73 +
 .../libxml2/doc/tutorial/includegetattribute.c  |    72 +
 .../libxml2/doc/tutorial/includekeyword.c       |    79 +
 thirdparty/libxml2/doc/tutorial/includexpath.c  |    74 +
 thirdparty/libxml2/doc/tutorial/index.html      |    14 +
 thirdparty/libxml2/doc/tutorial/ix01.html       |     1 +
 thirdparty/libxml2/doc/tutorial/xmltutorial.pdf |  1336 +
 thirdparty/libxml2/doc/upgrade.html             |   112 +
 thirdparty/libxml2/doc/w3c.png                  |   Bin 0 -> 2028 bytes
 thirdparty/libxml2/doc/wiki.xsl                 |   589 +
 thirdparty/libxml2/doc/xml.html                 |  6068 ++
 thirdparty/libxml2/doc/xmlcatalog.1             |   340 +
 thirdparty/libxml2/doc/xmlcatalog_man.html      |   101 +
 thirdparty/libxml2/doc/xmlcatalog_man.xml       |   450 +
 thirdparty/libxml2/doc/xmldtd.html              |   107 +
 thirdparty/libxml2/doc/xmlio.html               |   141 +
 thirdparty/libxml2/doc/xmllint.1                |   647 +
 thirdparty/libxml2/doc/xmllint.html             |   175 +
 thirdparty/libxml2/doc/xmllint.xml              |   930 +
 thirdparty/libxml2/doc/xmlmem.html              |   122 +
 thirdparty/libxml2/doc/xmlreader.html           |   475 +
 thirdparty/libxml2/doc/xsa.xsl                  |    54 +
 thirdparty/libxml2/elfgcchack.h                 | 17808 ++++++
 thirdparty/libxml2/enc.h                        |    32 +
 thirdparty/libxml2/encoding.c                   |  4085 ++
 thirdparty/libxml2/entities.c                   |  1105 +
 thirdparty/libxml2/error.c                      |   998 +
 thirdparty/libxml2/example/Makefile.am          |     7 +
 thirdparty/libxml2/example/Makefile.in          |   704 +
 thirdparty/libxml2/example/gjobread.c           |   309 +
 thirdparty/libxml2/example/gjobs.xml            |    57 +
 thirdparty/libxml2/genUnicode.py                |   478 +
 thirdparty/libxml2/gentest.py                   |   963 +
 thirdparty/libxml2/globals.c                    |  1114 +
 thirdparty/libxml2/hash.c                       |  1124 +
 thirdparty/libxml2/include/Makefile.am          |     5 +
 thirdparty/libxml2/include/Makefile.in          |   731 +
 thirdparty/libxml2/include/libxml/DOCBparser.h  |    96 +
 thirdparty/libxml2/include/libxml/HTMLparser.h  |   306 +
 thirdparty/libxml2/include/libxml/HTMLtree.h    |   147 +
 thirdparty/libxml2/include/libxml/Makefile.am   |    54 +
 thirdparty/libxml2/include/libxml/Makefile.in   |   722 +
 thirdparty/libxml2/include/libxml/SAX.h         |   173 +
 thirdparty/libxml2/include/libxml/SAX2.h        |   178 +
 thirdparty/libxml2/include/libxml/c14n.h        |   126 +
 thirdparty/libxml2/include/libxml/catalog.h     |   182 +
 thirdparty/libxml2/include/libxml/chvalid.h     |   230 +
 thirdparty/libxml2/include/libxml/debugXML.h    |   217 +
 thirdparty/libxml2/include/libxml/dict.h        |    80 +
 thirdparty/libxml2/include/libxml/encoding.h    |   240 +
 thirdparty/libxml2/include/libxml/entities.h    |   151 +
 thirdparty/libxml2/include/libxml/globals.h     |   509 +
 thirdparty/libxml2/include/libxml/hash.h        |   233 +
 thirdparty/libxml2/include/libxml/list.h        |   137 +
 thirdparty/libxml2/include/libxml/nanoftp.h     |   163 +
 thirdparty/libxml2/include/libxml/nanohttp.h    |    81 +
 thirdparty/libxml2/include/libxml/parser.h      |  1241 +
 .../libxml2/include/libxml/parserInternals.h    |   644 +
 thirdparty/libxml2/include/libxml/pattern.h     |   100 +
 thirdparty/libxml2/include/libxml/relaxng.h     |   217 +
 .../libxml2/include/libxml/schemasInternals.h   |   958 +
 thirdparty/libxml2/include/libxml/schematron.h  |   142 +
 thirdparty/libxml2/include/libxml/threads.h     |    84 +
 thirdparty/libxml2/include/libxml/tree.h        |  1311 +
 thirdparty/libxml2/include/libxml/uri.h         |    94 +
 thirdparty/libxml2/include/libxml/valid.h       |   458 +
 thirdparty/libxml2/include/libxml/xinclude.h    |   129 +
 thirdparty/libxml2/include/libxml/xlink.h       |   189 +
 thirdparty/libxml2/include/libxml/xmlIO.h       |   366 +
 thirdparty/libxml2/include/libxml/xmlautomata.h |   146 +
 thirdparty/libxml2/include/libxml/xmlerror.h    |   945 +
 thirdparty/libxml2/include/libxml/xmlexports.h  |   162 +
 thirdparty/libxml2/include/libxml/xmlmemory.h   |   224 +
 thirdparty/libxml2/include/libxml/xmlmodule.h   |    57 +
 thirdparty/libxml2/include/libxml/xmlreader.h   |   428 +
 thirdparty/libxml2/include/libxml/xmlregexp.h   |   222 +
 thirdparty/libxml2/include/libxml/xmlsave.h     |    88 +
 thirdparty/libxml2/include/libxml/xmlschemas.h  |   246 +
 .../libxml2/include/libxml/xmlschemastypes.h    |   151 +
 thirdparty/libxml2/include/libxml/xmlstring.h   |   140 +
 thirdparty/libxml2/include/libxml/xmlunicode.h  |   202 +
 .../libxml2/include/libxml/xmlversion.h.in      |   489 +
 thirdparty/libxml2/include/libxml/xmlwriter.h   |   488 +
 thirdparty/libxml2/include/libxml/xpath.h       |   557 +
 .../libxml2/include/libxml/xpathInternals.h     |   632 +
 thirdparty/libxml2/include/libxml/xpointer.h    |   114 +
 thirdparty/libxml2/include/win32config.h        |   128 +
 thirdparty/libxml2/include/wsockcompat.h        |    86 +
 thirdparty/libxml2/install-sh                   |   501 +
 thirdparty/libxml2/legacy.c                     |  1343 +
 thirdparty/libxml2/libxml-2.0-uninstalled.pc.in |    12 +
 thirdparty/libxml2/libxml-2.0.pc.in             |    13 +
 thirdparty/libxml2/libxml.3                     |    71 +
 thirdparty/libxml2/libxml.h                     |   112 +
 thirdparty/libxml2/libxml.m4                    |   188 +
 thirdparty/libxml2/libxml.spec.in               |   199 +
 thirdparty/libxml2/libxml2-config.cmake.in      |    50 +
 thirdparty/libxml2/libxml2.syms                 |  2281 +
 thirdparty/libxml2/list.c                       |   779 +
 thirdparty/libxml2/ltmain.sh                    | 11147 ++++
 thirdparty/libxml2/m4/libtool.m4                |  8372 +++
 thirdparty/libxml2/m4/ltoptions.m4              |   437 +
 thirdparty/libxml2/m4/ltsugar.m4                |   124 +
 thirdparty/libxml2/m4/ltversion.m4              |    23 +
 thirdparty/libxml2/m4/lt~obsolete.m4            |    99 +
 thirdparty/libxml2/macos/README                 |     8 +
 .../libxml2/macos/libxml2.mcp.xml.sit.hqx       |     1 +
 thirdparty/libxml2/macos/src/XMLTestPrefix.h    |     1 +
 thirdparty/libxml2/macos/src/XMLTestPrefix2.h   |     1 +
 thirdparty/libxml2/macos/src/config-mac.h       |   192 +
 .../libxml2/macos/src/libxml2_GUSIConfig.cp     |     1 +
 thirdparty/libxml2/macos/src/macos_main.c       |     1 +
 thirdparty/libxml2/missing                      |   215 +
 thirdparty/libxml2/nanoftp.c                    |  2121 +
 thirdparty/libxml2/nanohttp.c                   |  1890 +
 thirdparty/libxml2/os400/README400              |   214 +
 thirdparty/libxml2/os400/config.h.in            |   345 +
 thirdparty/libxml2/os400/dlfcn/dlfcn.c          |  1213 +
 thirdparty/libxml2/os400/dlfcn/dlfcn.h          |    32 +
 thirdparty/libxml2/os400/iconv/README.iconv     |    47 +
 .../libxml2/os400/iconv/bldcsndfa/bldcsndfa.c   |  1953 +
 .../os400/iconv/bldcsndfa/ccsid_mibenum.dtd     |    15 +
 .../os400/iconv/bldcsndfa/ccsid_mibenum.xml     |   270 +
 .../os400/iconv/bldcsndfa/character-sets.xhtml  |  3077 +
 thirdparty/libxml2/os400/iconv/ianatables.c     |  4609 ++
 thirdparty/libxml2/os400/iconv/iconv.c          |   154 +
 thirdparty/libxml2/os400/iconv/iconv.h          |    40 +
 thirdparty/libxml2/os400/initscript.sh          |   290 +
 .../libxml2/os400/libxmlrpg/DOCBparser.rpgle    |   116 +
 .../libxml2/os400/libxmlrpg/HTMLparser.rpgle    |   404 +
 .../libxml2/os400/libxmlrpg/HTMLtree.rpgle      |   166 +
 thirdparty/libxml2/os400/libxmlrpg/SAX.rpgle    |   207 +
 thirdparty/libxml2/os400/libxmlrpg/SAX2.rpgle   |   248 +
 thirdparty/libxml2/os400/libxmlrpg/c14n.rpgle   |   119 +
 .../libxml2/os400/libxmlrpg/catalog.rpgle       |   235 +
 .../libxml2/os400/libxmlrpg/chvalid.rpgle       |    98 +
 .../libxml2/os400/libxmlrpg/debugXML.rpgle      |   241 +
 thirdparty/libxml2/os400/libxmlrpg/dict.rpgle   |    81 +
 .../libxml2/os400/libxmlrpg/encoding.rpgle      |   274 +
 .../libxml2/os400/libxmlrpg/entities.rpgle      |   174 +
 .../libxml2/os400/libxmlrpg/globals.rpgle       |   557 +
 thirdparty/libxml2/os400/libxmlrpg/hash.rpgle   |   231 +
 thirdparty/libxml2/os400/libxmlrpg/list.rpgle   |   168 +
 .../libxml2/os400/libxmlrpg/nanoftp.rpgle       |   156 +
 .../libxml2/os400/libxmlrpg/nanohttp.rpgle      |   103 +
 thirdparty/libxml2/os400/libxmlrpg/parser.rpgle |  1410 +
 .../os400/libxmlrpg/parserInternals.rpgle       |   575 +
 .../libxml2/os400/libxmlrpg/pattern.rpgle       |   117 +
 .../libxml2/os400/libxmlrpg/relaxng.rpgle       |   297 +
 .../os400/libxmlrpg/schemasInternals.rpgle      |  1137 +
 .../libxml2/os400/libxmlrpg/schematron.rpgle    |   195 +
 .../libxml2/os400/libxmlrpg/threads.rpgle       |    70 +
 .../libxml2/os400/libxmlrpg/transcode.rpgle     |    71 +
 thirdparty/libxml2/os400/libxmlrpg/tree.rpgle   |  1634 +
 thirdparty/libxml2/os400/libxmlrpg/uri.rpgle    |   100 +
 thirdparty/libxml2/os400/libxmlrpg/valid.rpgle  |   575 +
 .../libxml2/os400/libxmlrpg/xinclude.rpgle      |   147 +
 thirdparty/libxml2/os400/libxmlrpg/xlink.rpgle  |   164 +
 thirdparty/libxml2/os400/libxmlrpg/xmlIO.rpgle  |   443 +
 .../libxml2/os400/libxmlrpg/xmlTypesC.rpgle     |    24 +
 .../libxml2/os400/libxmlrpg/xmlautomata.rpgle   |   179 +
 .../libxml2/os400/libxmlrpg/xmlerror.rpgle      |  1681 +
 .../libxml2/os400/libxmlrpg/xmlexports.rpgle    |    15 +
 .../libxml2/os400/libxmlrpg/xmlmemory.rpgle     |   240 +
 .../libxml2/os400/libxmlrpg/xmlmodule.rpgle     |    51 +
 .../libxml2/os400/libxmlrpg/xmlreader.rpgle     |   621 +
 .../libxml2/os400/libxmlrpg/xmlregexp.rpgle     |   246 +
 .../libxml2/os400/libxmlrpg/xmlsave.rpgle       |    99 +
 .../libxml2/os400/libxmlrpg/xmlschemas.rpgle    |   318 +
 .../os400/libxmlrpg/xmlschemastypes.rpgle       |   237 +
 .../libxml2/os400/libxmlrpg/xmlstdarg.rpgle     |    34 +
 .../libxml2/os400/libxmlrpg/xmlstring.rpgle     |   164 +
 .../libxml2/os400/libxmlrpg/xmlunicode.rpgle    |   668 +
 .../libxml2/os400/libxmlrpg/xmlversion.rpgle.in |   352 +
 .../libxml2/os400/libxmlrpg/xmlwriter.rpgle     |   725 +
 thirdparty/libxml2/os400/libxmlrpg/xpath.rpgle  |   651 +
 .../os400/libxmlrpg/xpathInternals.rpgle        |   672 +
 .../libxml2/os400/libxmlrpg/xpointer.rpgle      |   157 +
 thirdparty/libxml2/os400/make-bldcsndfa.sh      |    43 +
 thirdparty/libxml2/os400/make-include.sh        |    81 +
 thirdparty/libxml2/os400/make-rpg.sh            |   100 +
 thirdparty/libxml2/os400/make-src.sh            |   241 +
 thirdparty/libxml2/os400/make.sh                |    84 +
 thirdparty/libxml2/os400/os400config.h.in       |   353 +
 thirdparty/libxml2/os400/rpgsupport.c           |   270 +
 thirdparty/libxml2/os400/rpgsupport.h           |   157 +
 thirdparty/libxml2/os400/transcode.c            |   268 +
 thirdparty/libxml2/os400/transcode.h            |    43 +
 thirdparty/libxml2/os400/wrappers.c             |   170 +
 thirdparty/libxml2/os400/wrappers.h             |    70 +
 thirdparty/libxml2/parser.c                     | 15775 +++++
 thirdparty/libxml2/parserInternals.c            |  2151 +
 thirdparty/libxml2/pattern.c                    |  2617 +
 thirdparty/libxml2/python/Makefile.am           |    54 +
 thirdparty/libxml2/python/Makefile.in           |   982 +
 thirdparty/libxml2/python/README                |    34 +
 thirdparty/libxml2/python/TODO                  |    57 +
 thirdparty/libxml2/python/drv_libxml2.py        |   377 +
 thirdparty/libxml2/python/generator.py          |  1228 +
 thirdparty/libxml2/python/libxml.c              |  3934 ++
 thirdparty/libxml2/python/libxml.py             |   788 +
 thirdparty/libxml2/python/libxml2-export.c      |  2063 +
 thirdparty/libxml2/python/libxml2-py.c          | 14789 +++++
 thirdparty/libxml2/python/libxml2-py.h          |  2063 +
 .../libxml2/python/libxml2-python-api.xml       |   350 +
 thirdparty/libxml2/python/libxml2.py            |  9320 +++
 thirdparty/libxml2/python/libxml2class.py       |  8532 +++
 thirdparty/libxml2/python/libxml2class.txt      |  1177 +
 thirdparty/libxml2/python/libxml_wrap.h         |   279 +
 thirdparty/libxml2/python/setup.py.in           |   242 +
 thirdparty/libxml2/python/tests/Makefile.am     |    75 +
 thirdparty/libxml2/python/tests/Makefile.in     |   677 +
 thirdparty/libxml2/python/tests/attribs.py      |    34 +
 thirdparty/libxml2/python/tests/build.py        |    59 +
 thirdparty/libxml2/python/tests/compareNodes.py |    50 +
 thirdparty/libxml2/python/tests/ctxterror.py    |    56 +
 thirdparty/libxml2/python/tests/cutnpaste.py    |    48 +
 thirdparty/libxml2/python/tests/dtdvalid.py     |    32 +
 thirdparty/libxml2/python/tests/error.py        |    51 +
 thirdparty/libxml2/python/tests/inbuf.py        |    30 +
 thirdparty/libxml2/python/tests/indexes.py      |   113 +
 .../libxml2/python/tests/input_callback.py      |   148 +
 thirdparty/libxml2/python/tests/invalid.xml     |     6 +
 thirdparty/libxml2/python/tests/nsdel.py        |    62 +
 thirdparty/libxml2/python/tests/outbuf.py       |   110 +
 thirdparty/libxml2/python/tests/push.py         |    35 +
 thirdparty/libxml2/python/tests/pushSAX.py      |    64 +
 thirdparty/libxml2/python/tests/pushSAXhtml.py  |    65 +
 thirdparty/libxml2/python/tests/reader.py       |   446 +
 thirdparty/libxml2/python/tests/reader2.py      |   265 +
 thirdparty/libxml2/python/tests/reader3.py      |   160 +
 thirdparty/libxml2/python/tests/reader4.py      |    50 +
 thirdparty/libxml2/python/tests/reader5.py      |    47 +
 thirdparty/libxml2/python/tests/reader6.py      |   128 +
 thirdparty/libxml2/python/tests/reader7.py      |   101 +
 thirdparty/libxml2/python/tests/reader8.py      |    36 +
 thirdparty/libxml2/python/tests/readererr.py    |    56 +
 thirdparty/libxml2/python/tests/readernext.py   |    86 +
 thirdparty/libxml2/python/tests/regexp.py       |    32 +
 thirdparty/libxml2/python/tests/relaxng.py      |    48 +
 thirdparty/libxml2/python/tests/resolver.py     |    44 +
 thirdparty/libxml2/python/tests/schema.py       |    52 +
 thirdparty/libxml2/python/tests/serialize.py    |   150 +
 thirdparty/libxml2/python/tests/sync.py         |   138 +
 thirdparty/libxml2/python/tests/test.dtd        |     1 +
 thirdparty/libxml2/python/tests/thread2.py      |    99 +
 thirdparty/libxml2/python/tests/tst.py          |    28 +
 thirdparty/libxml2/python/tests/tst.xml         |     1 +
 thirdparty/libxml2/python/tests/tstLastError.py |    82 +
 thirdparty/libxml2/python/tests/tstURI.py       |    41 +
 thirdparty/libxml2/python/tests/tstmem.py       |    36 +
 thirdparty/libxml2/python/tests/tstxpath.py     |    63 +
 thirdparty/libxml2/python/tests/valid.xml       |     4 +
 thirdparty/libxml2/python/tests/validDTD.py     |    59 +
 thirdparty/libxml2/python/tests/validRNG.py     |    76 +
 thirdparty/libxml2/python/tests/validSchemas.py |    83 +
 thirdparty/libxml2/python/tests/validate.py     |    82 +
 thirdparty/libxml2/python/tests/walker.py       |   144 +
 thirdparty/libxml2/python/tests/xpath.py        |    51 +
 thirdparty/libxml2/python/tests/xpathext.py     |    49 +
 thirdparty/libxml2/python/tests/xpathleak.py    |    65 +
 thirdparty/libxml2/python/tests/xpathns.py      |    29 +
 thirdparty/libxml2/python/tests/xpathret.py     |    57 +
 thirdparty/libxml2/python/types.c               |   957 +
 thirdparty/libxml2/regressions.py               |   350 +
 thirdparty/libxml2/regressions.xml              |   226 +
 thirdparty/libxml2/relaxng.c                    | 11057 ++++
 thirdparty/libxml2/runsuite.c                   |  1172 +
 thirdparty/libxml2/runtest.c                    |  4480 ++
 thirdparty/libxml2/runxmlconf.c                 |   607 +
 thirdparty/libxml2/save.h                       |    35 +
 thirdparty/libxml2/schematron.c                 |  1787 +
 thirdparty/libxml2/testAutomata.c               |   309 +
 thirdparty/libxml2/testC14N.c                   |   370 +
 thirdparty/libxml2/testHTML.c                   |   880 +
 thirdparty/libxml2/testModule.c                 |    82 +
 thirdparty/libxml2/testReader.c                 |   145 +
 thirdparty/libxml2/testRegexp.c                 |   402 +
 thirdparty/libxml2/testRelax.c                  |   194 +
 thirdparty/libxml2/testSAX.c                    |  1198 +
 thirdparty/libxml2/testSchemas.c                |   185 +
 thirdparty/libxml2/testThreads.c                |   200 +
 thirdparty/libxml2/testThreadsWin32.c           |   150 +
 thirdparty/libxml2/testURI.c                    |   124 +
 thirdparty/libxml2/testXPath.c                  |   229 +
 thirdparty/libxml2/testapi.c                    | 52172 +++++++++++++++++
 thirdparty/libxml2/testchar.c                   |   617 +
 thirdparty/libxml2/testdict.c                   |   444 +
 thirdparty/libxml2/testdso.c                    |    12 +
 thirdparty/libxml2/testlimits.c                 |  1637 +
 thirdparty/libxml2/testrecurse.c                |   965 +
 thirdparty/libxml2/threads.c                    |  1039 +
 thirdparty/libxml2/timsort.h                    |   518 +
 thirdparty/libxml2/tree.c                       | 10121 ++++
 thirdparty/libxml2/trio.c                       |  6895 +++
 thirdparty/libxml2/trio.h                       |   230 +
 thirdparty/libxml2/triodef.h                    |   228 +
 thirdparty/libxml2/trionan.c                    |   914 +
 thirdparty/libxml2/trionan.h                    |    84 +
 thirdparty/libxml2/triop.h                      |   150 +
 thirdparty/libxml2/triostr.c                    |  2112 +
 thirdparty/libxml2/triostr.h                    |   144 +
 thirdparty/libxml2/uri.c                        |  2566 +
 thirdparty/libxml2/valid.c                      |  7054 +++
 thirdparty/libxml2/vms/build_libxml.com         |   273 +
 thirdparty/libxml2/vms/config.vms               |   216 +
 thirdparty/libxml2/vms/diffs.vms                |   192 +
 thirdparty/libxml2/vms/readme.vms               |   143 +
 thirdparty/libxml2/win32/Makefile.bcb           |   355 +
 thirdparty/libxml2/win32/Makefile.mingw         |   354 +
 thirdparty/libxml2/win32/Makefile.msvc          |   489 +
 thirdparty/libxml2/win32/Readme.txt             |   226 +
 thirdparty/libxml2/win32/VC10/README.vc10       |    27 +
 thirdparty/libxml2/win32/VC10/RuleSet1.ruleset  |     3 +
 thirdparty/libxml2/win32/VC10/config.h          |   125 +
 .../libxml2/win32/VC10/libxml2-focus.vcxproj    |   184 +
 thirdparty/libxml2/win32/VC10/libxml2.sln       |    49 +
 thirdparty/libxml2/win32/VC10/libxml2.vcxproj   |   137 +
 .../libxml2/win32/VC10/libxml2.vcxproj.filters  |   171 +
 thirdparty/libxml2/win32/VC10/runsuite.vcxproj  |    85 +
 .../libxml2/win32/VC10/runsuite.vcxproj.filters |    22 +
 thirdparty/libxml2/win32/configure.js           |   708 +
 thirdparty/libxml2/win32/defgen.xsl             |   288 +
 thirdparty/libxml2/win32/libxml2.def.src        |  3190 +
 thirdparty/libxml2/win32/wince/libxml2.vcb      |     1 +
 thirdparty/libxml2/win32/wince/libxml2.vcl      |   122 +
 thirdparty/libxml2/win32/wince/libxml2.vco      |     1 +
 thirdparty/libxml2/win32/wince/libxml2.vcp      |  5273 ++
 thirdparty/libxml2/win32/wince/libxml2.vcw      |    41 +
 thirdparty/libxml2/win32/wince/wincecompat.c    |    68 +
 thirdparty/libxml2/win32/wince/wincecompat.h    |    50 +
 thirdparty/libxml2/xinclude.c                   |  2624 +
 thirdparty/libxml2/xlink.c                      |   183 +
 thirdparty/libxml2/xml2-config.1                |    30 +
 thirdparty/libxml2/xml2-config.in               |   106 +
 thirdparty/libxml2/xml2Conf.sh.in               |     8 +
 thirdparty/libxml2/xmlIO.c                      |  4186 ++
 thirdparty/libxml2/xmlcatalog.c                 |   615 +
 thirdparty/libxml2/xmllint.c                    |  3801 ++
 thirdparty/libxml2/xmlmemory.c                  |  1134 +
 thirdparty/libxml2/xmlmodule.c                  |   460 +
 thirdparty/libxml2/xmlreader.c                  |  5950 ++
 thirdparty/libxml2/xmlregexp.c                  |  8167 +++
 thirdparty/libxml2/xmlsave.c                    |  2788 +
 thirdparty/libxml2/xmlschemas.c                 | 28907 +++++++++
 thirdparty/libxml2/xmlschemastypes.c            |  6139 ++
 thirdparty/libxml2/xmlstring.c                  |   984 +
 thirdparty/libxml2/xmlunicode.c                 |  3179 +
 thirdparty/libxml2/xmlwriter.c                  |  4743 ++
 thirdparty/libxml2/xpath.c                      | 15377 +++++
 thirdparty/libxml2/xpointer.c                   |  3031 +
 thirdparty/libxml2/xstc/Makefile.am             |   132 +
 thirdparty/libxml2/xstc/Makefile.in             |   681 +
 thirdparty/libxml2/xstc/xstc-to-python.xsl      |   114 +
 thirdparty/libxml2/xstc/xstc.py                 |   693 +
 thirdparty/libxml2/xzlib.c                      |   804 +
 thirdparty/libxml2/xzlib.h                      |    19 +
 thirdparty/uuid/COPYING                         |    25 +
 thirdparty/uuid/clear.c                         |    44 +
 thirdparty/uuid/compare.c                       |    56 +
 thirdparty/uuid/config.h                        |   845 +
 thirdparty/uuid/copy.c                          |    46 +
 thirdparty/uuid/gen_uuid.c                      |   678 +
 thirdparty/uuid/isnull.c                        |    49 +
 thirdparty/uuid/libuuid.a                       |   Bin 0 -> 1172996 bytes
 thirdparty/uuid/makefile                        |    72 +
 thirdparty/uuid/pack.c                          |    70 +
 thirdparty/uuid/parse.c                         |    80 +
 thirdparty/uuid/tst_uuid                        |   Bin 0 -> 191032 bytes
 thirdparty/uuid/tst_uuid.c                      |   199 +
 thirdparty/uuid/unpack.c                        |    64 +
 thirdparty/uuid/unparse.c                       |    77 +
 thirdparty/uuid/uuid.h                          |   103 +
 thirdparty/uuid/uuidP.h                         |    63 +
 thirdparty/uuid/uuid_time.c                     |   173 +
 thirdparty/uuid/uuidd.h                         |    54 +
 727 files changed, 590684 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/Makefile
----------------------------------------------------------------------
diff --git a/Makefile b/Makefile
index 8702299..3128422 100644
--- a/Makefile
+++ b/Makefile
@@ -14,16 +14,32 @@
 # See the License for the specific language governing permissions and
 # limitations under the License
 
-CC=g++
-AR=ar
+# for ARM make CROSS_COMPILE=arm-linux-gnueabi ARCH=arm
+CC=$(CROSS_COMPILE)-g++
+AR=$(CROSS_COMPILE)-ar
 BUILD_DIR= ./build
 TARGET_DIR=./target
 TARGET_LIB=libminifi.a
 TARGET_EXE=minifi
+ifeq ($(ARCH), arm)
+CFLAGS=-O0 -fexceptions -fpermissive -Wno-write-strings -std=c++11 -fPIC -Wall -g -Wno-unused-private-field -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -lc
+INCLUDES=-I./inc -I./src -I./thirdparty -I./test -I./thirdparty/libxml2/include #-I/usr/local/opt/leveldb/include/
+LDDIRECTORY=-L./build -L./thirdparty/uuid -L./thirdparty/libxml2/.libs/ #-L/usr/local/opt/leveldb/lib
+#LDFLAGS=-lminifi -lxml2 -lleveldb -pthread -luuid
+LDFLAGS=-static -lminifi -lxml2 -pthread -luuid
+else ifeq ($(ARCH), linux)
 CFLAGS=-O0 -fexceptions -fpermissive -Wno-write-strings -std=c++11 -fPIC -Wall -g -Wno-unused-private-field
-INCLUDES=-I./inc -I./src -I./test -I/usr/include/libxml2 -I/usr/local/opt/leveldb/include/
-LDDIRECTORY=-L/usr/local/opt/leveldb/lib/ -L./build
-LDFLAGS=-lminifi -lxml2 -lleveldb -pthread -luuid
+INCLUDES=-I./inc -I./src -I./thirdparty -I./test -I./thirdparty/libxml2/include #-I/usr/local/opt/leveldb/include/
+LDDIRECTORY=-L./build -L./thirdparty/uuid -L./thirdparty/libxml2/.libs/ #-L/usr/local/opt/leveldb/lib
+#LDFLAGS=-lminifi -lxml2 -lleveldb -pthread -luuid
+LDFLAGS=-lminifi -lxml2 -pthread -luuid
+else
+CFLAGS=-O0 -fexceptions -fpermissive -Wno-write-strings -std=c++11 -fPIC -Wall -g -Wno-unused-private-field
+INCLUDES=-I./inc -I./src -I./test -I/usr/include/libxml2 #-I/usr/local/opt/leveldb/include/
+LDDIRECTORY=-L./build #-L/usr/local/opt/leveldb/out-static/
+LDFLAGS=-lminifi -lxml2 -pthread -luuid#--llevedb
+endif
+
 
 UNAME_S := $(shell uname -s)
 ifeq ($(UNAME_S),Linux)
@@ -33,12 +49,19 @@ 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:=FlowFileRecordTest
+TESTS:=Server
 
 all: directory $(BUILD_DIR)/$(TARGET_LIB) minifi tests
 
 directory:
 	mkdir -p $(BUILD_DIR)
+ifeq ($(ARCH), arm)
+	make -C thirdparty/uuid CROSS_COMILE=$(CROSS_COMPILE)
+	cd thirdparty/libxml2; ./configure --host=${CROSS_COMPILE} --target==${CROSSS_COMPILE} --without-python --without-zlib --enable-static --disable-shared; make; cd ../../
+else ifeq ($(ARCH), linux)
+	make -C thirdparty/uuid
+	cd thirdparty/libxml2; ./configure --without-python --without-zlib --enable-static --disable-shared; make; cd ../../
+endif
 
 $(BUILD_DIR)/%.o: src/%.cpp
 	$(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $<
@@ -52,10 +75,17 @@ minifi: $(BUILD_DIR)/$(TARGET_LIB)
 
 tests: $(BUILD_DIR)/$(TARGET_LIB)
 	$(foreach TEST_NAME, $(TESTS),\
-	$(CC) $(CFLAGS) $(INCLUDES) -o $(BUILD_DIR)/$(TEST_NAME) test/$(TEST_NAME).cpp $(LDDIRECTORY) $(LDFLAGS);)
+	$(CC) $(CFLAGS) $(INCLUDES) -o $(BUILD_DIR)/$(TEST_NAME) test/$(TEST_NAME).cpp $(LDDIRECTORY) $(LDFLAGS))
 
 clean:
 	rm -rf $(BUILD_DIR)/*
 	rm -rf $(TARGET_DIR)/$(TARGET_EXE)
 	cp -r $(TARGET_DIR)/conf $(BUILD_DIR)/
-	 
+ifeq ($(ARCH), arm)
+	make -C thirdparty/uuid clean
+	make -C thirdparty/libxml2 distclean
+else ifeq ($(ARCH), linux)
+	make -C thirdparty/uuid clean
+	make -C thirdparty/libxml2 distclean
+endif
+

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/conf/flow.xml
----------------------------------------------------------------------
diff --git a/conf/flow.xml b/conf/flow.xml
new file mode 100644
index 0000000..a29ea1f
--- /dev/null
+++ b/conf/flow.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<flowController>
+  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
+  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
+  <rootGroup>
+    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
+    <name>NiFi Flow</name>
+    <position x="0.0" y="0.0"/>
+    <comment/>
+    <processor>
+      <id>572aa3f3-6288-4ca1-ae43-5e492cb0ea23</id>
+      <name>RealTimeDataCollector</name>
+      <position x="3259.732177734375" y="1739.991943359375"/>
+      <styles/>
+      <comment/>
+      <class>org.apache.nifi.processors.standard.RealTimeDataCollector</class>
+      <maxConcurrentTasks>2</maxConcurrentTasks>
+      <schedulingPeriod>1 ms</schedulingPeriod>
+      <penalizationPeriod>30 sec</penalizationPeriod>
+      <yieldPeriod>1 sec</yieldPeriod>
+      <bulletinLevel>WARN</bulletinLevel>
+      <lossTolerant>false</lossTolerant>
+      <scheduledState>RUNNING</scheduledState>
+      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+      <runDurationNanos>0</runDurationNanos>
+      <property>
+        <name>File Name</name>
+        <value>data.osp></value>
+      </property>
+      <property>
+        <name>Real Time Server Name</name>
+        <value>localhost</value>
+      </property>
+      <property>
+        <name>Real Time Server Port</name>
+        <value>10000</value>
+      </property>
+      <property>
+        <name>Batch Server Name</name>
+        <value>localhost</value>
+      </property>
+      <property>
+        <name>Batch Server Port</name>
+        <value>10001</value>
+      </property>
+      <property>
+        <name>Iteration</name>
+        <value>true</value>
+      </property>
+      <property>
+        <name>Real Time Message ID</name>
+        <value>41</value>
+      </property>
+      <property>
+        <name>Batch Message ID</name>
+        <value>172, 30, 48</value>
+      </property>
+      <property>
+        <name>Real Time Interval</name>
+        <value>10 ms</value>
+      </property>
+      <property>
+        <name>Batch Time Interval</name>
+        <value>100 ms</value>
+      </property>
+      <property>
+        <name>Batch Max Buffer Size</name>
+        <value>1048576</value>
+      </property>
+      <autoTerminatedRelationship>success</autoTerminatedRelationship>
+    </processor>
+  </rootGroup>
+  <controllerServices>
+    <controllerService>
+      <id>b2785fb0-e797-4c4d-8592-d2b2563504c4</id>
+      <name>DistributedMapCacheClientService</name>
+      <comment/>
+      <class>org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService</class>
+      <enabled>true</enabled>
+      <property>
+        <name>Server Hostname</name>
+        <value>localhost</value>
+      </property>
+      <property>
+        <name>Server Port</name>
+        <value>4557</value>
+      </property>
+      <property>
+        <name>SSL Context Service</name>
+      </property>
+      <property>
+        <name>Communications Timeout</name>
+        <value>30 secs</value>
+      </property>
+    </controllerService>
+    <controllerService>
+      <id>2855f1e0-dc35-4955-9ae2-b2d7d1765d4e</id>
+      <name>StandardSSLContextService</name>
+      <comment/>
+      <class>org.apache.nifi.ssl.StandardSSLContextService</class>
+      <enabled>true</enabled>
+      <property>
+        <name>Keystore Filename</name>
+      </property>
+      <property>
+        <name>Keystore Password</name>
+      </property>
+      <property>
+        <name>Keystore Type</name>
+      </property>
+      <property>
+        <name>Truststore Filename</name>
+        <value>/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/jre/lib/security/cacerts</value>
+      </property>
+      <property>
+        <name>Truststore Password</name>
+        <value>enc{9E2EE146023A0F31914706460EB177B357796CF0C768DECE09D10C4B40F344C8}</value>
+      </property>
+      <property>
+        <name>Truststore Type</name>
+        <value>JKS</value>
+      </property>
+      <property>
+        <name>SSL Protocol</name>
+        <value>TLS</value>
+      </property>
+    </controllerService>
+  </controllerServices>
+  <reportingTasks/>
+</flowController>

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/conf/flowTest.xml
----------------------------------------------------------------------
diff --git a/conf/flowTest.xml b/conf/flowTest.xml
new file mode 100644
index 0000000..56125f8
--- /dev/null
+++ b/conf/flowTest.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<flowController>
+  <maxTimerDrivenThreadCount>10</maxTimerDrivenThreadCount>
+  <maxEventDrivenThreadCount>5</maxEventDrivenThreadCount>
+  <rootGroup>
+    <id>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</id>
+    <name>NiFi Flow</name>
+    <position x="0.0" y="0.0"/>
+    <comment/>
+    <processor>
+      <id>572aa3f3-6288-4ca1-ae43-5e492cb0ea23</id>
+      <name>LogAttribute</name>
+      <position x="3259.732177734375" y="1739.991943359375"/>
+      <styles/>
+      <comment/>
+      <class>org.apache.nifi.processors.standard.LogAttribute</class>
+      <maxConcurrentTasks>1</maxConcurrentTasks>
+      <schedulingPeriod>0 sec</schedulingPeriod>
+      <penalizationPeriod>30 sec</penalizationPeriod>
+      <yieldPeriod>1 sec</yieldPeriod>
+      <bulletinLevel>WARN</bulletinLevel>
+      <lossTolerant>false</lossTolerant>
+      <scheduledState>RUNNING</scheduledState>
+      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+      <runDurationNanos>0</runDurationNanos>
+      <property>
+        <name>Log Level</name>
+        <value>info</value>
+      </property>
+      <property>
+        <name>Log Payload</name>
+        <value>false</value>
+      </property>
+      <property>
+        <name>Attributes to Log</name>
+      </property>
+      <property>
+        <name>Attributes to Ignore</name>
+      </property>
+      <property>
+        <name>Log prefix</name>
+      </property>
+      <autoTerminatedRelationship>success</autoTerminatedRelationship>
+    </processor>
+    <processor>
+      <id>a0e57bb2-5b89-438e-8869-0326bbdbbe43</id>
+      <name>GenerateFlowFile</name>
+      <position x="2643.1135987796815" y="1457.4419966791334"/>
+      <styles/>
+      <comment/>
+      <class>org.apache.nifi.processors.standard.GenerateFlowFile</class>
+      <maxConcurrentTasks>1</maxConcurrentTasks>
+      <schedulingPeriod>1 s</schedulingPeriod>
+      <penalizationPeriod>30 sec</penalizationPeriod>
+      <yieldPeriod>1 sec</yieldPeriod>
+      <bulletinLevel>WARN</bulletinLevel>
+      <lossTolerant>false</lossTolerant>
+      <scheduledState>RUNNING</scheduledState>
+      <schedulingStrategy>TIMER_DRIVEN</schedulingStrategy>
+      <runDurationNanos>0</runDurationNanos>
+      <property>
+        <name>File Size</name>
+        <value>1 kB</value>
+      </property>
+      <property>
+        <name>Batch Size</name>
+        <value>1</value>
+      </property>
+      <property>
+        <name>Data Format</name>
+        <value>Text</value>
+      </property>
+      <property>
+        <name>Unique FlowFiles</name>
+        <value>false</value>
+      </property>
+    </processor>
+    <connection>
+      <id>c4cf70d8-be05-4c3d-b926-465f330d6503</id>
+      <name/>
+      <bendPoints/>
+      <labelIndex>1</labelIndex>
+      <zIndex>0</zIndex>
+      <sourceId>a0e57bb2-5b89-438e-8869-0326bbdbbe43</sourceId>
+      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
+      <sourceType>PROCESSOR</sourceType>
+      <destinationId>572aa3f3-6288-4ca1-ae43-5e492cb0ea23</destinationId>
+      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
+      <destinationType>PROCESSOR</destinationType>
+      <relationship>success</relationship>
+      <maxWorkQueueSize>0</maxWorkQueueSize>
+      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
+      <flowFileExpiration>0 sec</flowFileExpiration>
+    </connection>
+    <connection>
+      <id>673cf83c-d261-4b6b-8e5a-19052fe40025</id>
+      <name/>
+      <bendPoints>
+        <bendPoint x="3106.4228882570283" y="1573.7169700192542"/>
+      </bendPoints>
+      <labelIndex>1</labelIndex>
+      <zIndex>0</zIndex>
+      <sourceId>a0e57bb2-5b89-438e-8869-0326bbdbbe43</sourceId>
+      <sourceGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</sourceGroupId>
+      <sourceType>PROCESSOR</sourceType>
+      <destinationId>572aa3f3-6288-4ca1-ae43-5e492cb0ea23</destinationId>
+      <destinationGroupId>fe4a3a42-53b6-4af1-a80d-6fdfe60de97f</destinationGroupId>
+      <destinationType>PROCESSOR</destinationType>
+      <relationship>success</relationship>
+      <maxWorkQueueSize>0</maxWorkQueueSize>
+      <maxWorkQueueDataSize>0 MB</maxWorkQueueDataSize>
+      <flowFileExpiration>0 sec</flowFileExpiration>
+    </connection>
+  </rootGroup>
+  <controllerServices>
+    <controllerService>
+      <id>b2785fb0-e797-4c4d-8592-d2b2563504c4</id>
+      <name>DistributedMapCacheClientService</name>
+      <comment/>
+      <class>org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService</class>
+      <enabled>true</enabled>
+      <property>
+        <name>Server Hostname</name>
+        <value>localhost</value>
+      </property>
+      <property>
+        <name>Server Port</name>
+        <value>4557</value>
+      </property>
+      <property>
+        <name>SSL Context Service</name>
+      </property>
+      <property>
+        <name>Communications Timeout</name>
+        <value>30 secs</value>
+      </property>
+    </controllerService>
+    <controllerService>
+      <id>2855f1e0-dc35-4955-9ae2-b2d7d1765d4e</id>
+      <name>StandardSSLContextService</name>
+      <comment/>
+      <class>org.apache.nifi.ssl.StandardSSLContextService</class>
+      <enabled>true</enabled>
+      <property>
+        <name>Keystore Filename</name>
+      </property>
+      <property>
+        <name>Keystore Password</name>
+      </property>
+      <property>
+        <name>Keystore Type</name>
+      </property>
+      <property>
+        <name>Truststore Filename</name>
+        <value>/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/jre/lib/security/cacerts</value>
+      </property>
+      <property>
+        <name>Truststore Password</name>
+        <value>enc{9E2EE146023A0F31914706460EB177B357796CF0C768DECE09D10C4B40F344C8}</value>
+      </property>
+      <property>
+        <name>Truststore Type</name>
+        <value>JKS</value>
+      </property>
+      <property>
+        <name>SSL Protocol</name>
+        <value>TLS</value>
+      </property>
+    </controllerService>
+  </controllerServices>
+  <reportingTasks/>
+</flowController>

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/conf/nifi.properties
----------------------------------------------------------------------
diff --git a/conf/nifi.properties b/conf/nifi.properties
new file mode 100644
index 0000000..c4f7dff
--- /dev/null
+++ b/conf/nifi.properties
@@ -0,0 +1,185 @@
+# 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.
+
+# Core Properties #
+nifi.version=0.6.0-SNAPSHOT
+nifi.flow.configuration.file=./conf/flow.xml
+nifi.flow.configuration.archive.dir=./conf/archive/
+nifi.flowcontroller.autoResumeState=true
+nifi.flowcontroller.graceful.shutdown.period=10 sec
+nifi.flowservice.writedelay.interval=500 ms
+nifi.administrative.yield.duration=30 sec
+# If a component has no work to do (is "bored"), how long should we wait before checking again for work?
+nifi.bored.yield.duration=10 millis
+
+nifi.authority.provider.configuration.file=./conf/authority-providers.xml
+nifi.login.identity.provider.configuration.file=./conf/login-identity-providers.xml
+nifi.templates.directory=./conf/templates
+nifi.ui.banner.text=
+nifi.ui.autorefresh.interval=30 sec
+nifi.nar.library.directory=./lib
+nifi.nar.working.directory=./work/nar/
+nifi.documentation.working.directory=./work/docs/components
+
+####################
+# State Management #
+####################
+nifi.state.management.configuration.file=./conf/state-management.xml
+# The ID of the local state provider
+nifi.state.management.provider.local=local-provider
+# The ID of the cluster-wide state provider. This will be ignored if NiFi is not clustered but must be populated if running in a cluster.
+nifi.state.management.provider.cluster=zk-provider
+# Specifies whether or not this instance of NiFi should run an embedded ZooKeeper server
+nifi.state.management.embedded.zookeeper.start=false
+# Properties file that provides the ZooKeeper properties to use if <nifi.state.management.embedded.zookeeper.start> is set to true
+nifi.state.management.embedded.zookeeper.properties=./conf/zookeeper.properties
+
+
+# H2 Settings
+nifi.database.directory=./database_repository
+nifi.h2.url.append=;LOCK_TIMEOUT=25000;WRITE_DELAY=0;AUTO_SERVER=FALSE
+
+# FlowFile Repository
+nifi.flowfile.repository.implementation=org.apache.nifi.controller.repository.WriteAheadFlowFileRepository
+nifi.flowfile.repository.directory=./flowfile_repository
+nifi.flowfile.repository.partitions=256
+nifi.flowfile.repository.checkpoint.interval=2 mins
+nifi.flowfile.repository.always.sync=false
+
+nifi.swap.manager.implementation=org.apache.nifi.controller.FileSystemSwapManager
+nifi.queue.swap.threshold=20000
+nifi.swap.in.period=5 sec
+nifi.swap.in.threads=1
+nifi.swap.out.period=5 sec
+nifi.swap.out.threads=4
+
+# Content Repository
+nifi.content.repository.implementation=org.apache.nifi.controller.repository.FileSystemRepository
+nifi.content.claim.max.appendable.size=10 MB
+nifi.content.claim.max.flow.files=100
+nifi.content.repository.directory.default=./content_repository
+nifi.content.repository.archive.max.retention.period=12 hours
+nifi.content.repository.archive.max.usage.percentage=50%
+nifi.content.repository.archive.enabled=true
+nifi.content.repository.always.sync=false
+nifi.content.viewer.url=/nifi-content-viewer/
+
+# Provenance Repository Properties
+nifi.provenance.repository.implementation=org.apache.nifi.provenance.PersistentProvenanceRepository
+
+# Persistent Provenance Repository Properties
+nifi.provenance.repository.directory.default=./provenance_repository
+nifi.provenance.repository.max.storage.time=24 hours
+nifi.provenance.repository.max.storage.size=1 GB
+nifi.provenance.repository.rollover.time=30 secs
+nifi.provenance.repository.rollover.size=100 MB
+nifi.provenance.repository.query.threads=2
+nifi.provenance.repository.index.threads=1
+nifi.provenance.repository.compress.on.rollover=true
+nifi.provenance.repository.always.sync=false
+nifi.provenance.repository.journal.count=16
+# Comma-separated list of fields. Fields that are not indexed will not be searchable. Valid fields are: 
+# EventType, FlowFileUUID, Filename, TransitURI, ProcessorID, AlternateIdentifierURI, Relationship, Details
+nifi.provenance.repository.indexed.fields=EventType, FlowFileUUID, Filename, ProcessorID, Relationship
+# FlowFile Attributes that should be indexed and made searchable.  Some examples to consider are filename, uuid, mime.type
+nifi.provenance.repository.indexed.attributes=
+# Large values for the shard size will result in more Java heap usage when searching the Provenance Repository
+# but should provide better performance
+nifi.provenance.repository.index.shard.size=500 MB
+# Indicates the maximum length that a FlowFile attribute can be when retrieving a Provenance Event from
+# the repository. If the length of any attribute exceeds this value, it will be truncated when the event is retrieved.
+nifi.provenance.repository.max.attribute.length=65536
+
+# Volatile Provenance Respository Properties
+nifi.provenance.repository.buffer.size=100000
+
+# Component Status Repository
+nifi.components.status.repository.implementation=org.apache.nifi.controller.status.history.VolatileComponentStatusRepository
+nifi.components.status.repository.buffer.size=1440
+nifi.components.status.snapshot.frequency=1 min
+
+# Site to Site properties
+nifi.remote.input.socket.host=localhost
+nifi.remote.input.socket.port=10000
+nifi.remote.input.secure=false
+
+# web properties #
+nifi.web.war.directory=./lib
+nifi.web.http.host=
+nifi.web.http.port=8080
+nifi.web.https.host=
+nifi.web.https.port=
+nifi.web.jetty.working.directory=./work/jetty
+nifi.web.jetty.threads=200
+
+# security properties #
+nifi.sensitive.props.key=
+nifi.sensitive.props.algorithm=PBEWITHMD5AND256BITAES-CBC-OPENSSL
+nifi.sensitive.props.provider=BC
+
+nifi.security.keystore=
+nifi.security.keystoreType=
+nifi.security.keystorePasswd=
+nifi.security.keyPasswd=
+nifi.security.truststore=
+nifi.security.truststoreType=
+nifi.security.truststorePasswd=
+nifi.security.needClientAuth=
+nifi.security.user.credential.cache.duration=24 hours
+nifi.security.user.authority.provider=file-provider
+nifi.security.user.login.identity.provider=
+nifi.security.support.new.account.requests=
+# Valid Authorities include: ROLE_MONITOR,ROLE_DFM,ROLE_ADMIN,ROLE_PROVENANCE,ROLE_NIFI
+nifi.security.anonymous.authorities=
+nifi.security.ocsp.responder.url=
+nifi.security.ocsp.responder.certificate=
+
+# cluster common properties (cluster manager and nodes must have same values) #
+nifi.cluster.protocol.heartbeat.interval=5 sec
+nifi.cluster.protocol.is.secure=false
+nifi.cluster.protocol.socket.timeout=30 sec
+nifi.cluster.protocol.connection.handshake.timeout=45 sec
+# if multicast is used, then nifi.cluster.protocol.multicast.xxx properties must be configured #
+nifi.cluster.protocol.use.multicast=false
+nifi.cluster.protocol.multicast.address=
+nifi.cluster.protocol.multicast.port=
+nifi.cluster.protocol.multicast.service.broadcast.delay=500 ms
+nifi.cluster.protocol.multicast.service.locator.attempts=3
+nifi.cluster.protocol.multicast.service.locator.attempts.delay=1 sec
+
+# cluster node properties (only configure for cluster nodes) #
+nifi.cluster.is.node=false
+nifi.cluster.node.address=
+nifi.cluster.node.protocol.port=
+nifi.cluster.node.protocol.threads=2
+# if multicast is not used, nifi.cluster.node.unicast.xxx must have same values as nifi.cluster.manager.xxx #
+nifi.cluster.node.unicast.manager.address=
+nifi.cluster.node.unicast.manager.protocol.port=
+
+# cluster manager properties (only configure for cluster manager) #
+nifi.cluster.is.manager=false
+nifi.cluster.manager.address=
+nifi.cluster.manager.protocol.port=
+nifi.cluster.manager.node.firewall.file=
+nifi.cluster.manager.node.event.history.size=10
+nifi.cluster.manager.node.api.connection.timeout=30 sec
+nifi.cluster.manager.node.api.read.timeout=30 sec
+nifi.cluster.manager.node.api.request.threads=10
+nifi.cluster.manager.flow.retrieval.delay=5 sec
+nifi.cluster.manager.protocol.threads=10
+nifi.cluster.manager.safemode.duration=0 sec
+
+# kerberos #
+nifi.kerberos.krb5.file=

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/inc/Configure.h
----------------------------------------------------------------------
diff --git a/inc/Configure.h b/inc/Configure.h
index 56b6ed9..502916f 100644
--- a/inc/Configure.h
+++ b/inc/Configure.h
@@ -44,6 +44,9 @@ public:
 	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()

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/inc/Connection.h
----------------------------------------------------------------------
diff --git a/inc/Connection.h b/inc/Connection.h
index 6438e6f..919cdc9 100644
--- a/inc/Connection.h
+++ b/inc/Connection.h
@@ -158,6 +158,8 @@ public:
 	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

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/inc/FlowControlProtocol.h
----------------------------------------------------------------------
diff --git a/inc/FlowControlProtocol.h b/inc/FlowControlProtocol.h
new file mode 100644
index 0000000..ae31ce5
--- /dev/null
+++ b/inc/FlowControlProtocol.h
@@ -0,0 +1,332 @@
+/**
+ * @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;
+	}
+
+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);
+
+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/7956696e/inc/FlowController.h
----------------------------------------------------------------------
diff --git a/inc/FlowController.h b/inc/FlowController.h
index 2efda2c..4fa5810 100644
--- a/inc/FlowController.h
+++ b/inc/FlowController.h
@@ -43,9 +43,10 @@
 #include "GenerateFlowFile.h"
 #include "LogAttribute.h"
 #include "TimerDrivenSchedulingAgent.h"
+#include "FlowControlProtocol.h"
 
 //! Default NiFi Root Group Name
-#define DEFAULT_ROOT_GROUP_NAME "NiFi Flow"
+#define DEFAULT_ROOT_GROUP_NAME ""
 #define DEFAULT_FLOW_XML_FILE_NAME "conf/flow.xml"
 
 //! FlowController Class
@@ -121,6 +122,14 @@ public:
 	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);
@@ -157,7 +166,8 @@ protected:
 	//! Config
 	//! Site to Site Server Listener
 	//! Heart Beat
-
+	//! FlowControl Protocol
+	FlowControlProtocol *_protocol;
 
 private:
 

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/inc/LogAttribute.h
----------------------------------------------------------------------
diff --git a/inc/LogAttribute.h b/inc/LogAttribute.h
index b43991a..125ebf3 100644
--- a/inc/LogAttribute.h
+++ b/inc/LogAttribute.h
@@ -85,6 +85,32 @@ public:
 		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

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/inc/Logger.h
----------------------------------------------------------------------
diff --git a/inc/Logger.h b/inc/Logger.h
index ed2784c..42cf3ea 100644
--- a/inc/Logger.h
+++ b/inc/Logger.h
@@ -141,7 +141,11 @@ private:
 	 * 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);
+		/*
+		if (!filename.empty())
+			_spdlog = rotating_logger_mt(logger_name, filename, max_file_size, max_files, force_flush);
+		else */
+			_spdlog = stdout_logger_mt("console");
 		_spdlog->set_level((spdlog::level::level_enum) debug);
 	}
 	//! spdlog

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/inc/ProcessGroup.h
----------------------------------------------------------------------
diff --git a/inc/ProcessGroup.h b/inc/ProcessGroup.h
index 1522c09..796142f 100644
--- a/inc/ProcessGroup.h
+++ b/inc/ProcessGroup.h
@@ -105,6 +105,8 @@ public:
 	Processor *findProcessor(uuid_t uuid);
 	//! removeConnection
 	void removeConnection(Connection *connection);
+	//! update property value
+	void updatePropertyValue(std::string processorName, std::string propertyName, std::string propertyValue);
 
 protected:
 	//! A global unique identifier

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/inc/ProcessSession.h
----------------------------------------------------------------------
diff --git a/inc/ProcessSession.h b/inc/ProcessSession.h
index b24ea8a..d38e71b 100644
--- a/inc/ProcessSession.h
+++ b/inc/ProcessSession.h
@@ -82,6 +82,8 @@ public:
 	void append(FlowFileRecord *flow, OutputStreamCallback *callback);
 	//! Penalize the flow
 	void penalize(FlowFileRecord *flow);
+	//! Import the existed file into the flow
+	void import(std::string source, FlowFileRecord *flow);
 
 protected:
 	//! FlowFiles being modified by current process session

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/inc/Processor.h
----------------------------------------------------------------------
diff --git a/inc/Processor.h b/inc/Processor.h
index 64e347f..db26ad0 100644
--- a/inc/Processor.h
+++ b/inc/Processor.h
@@ -217,6 +217,9 @@ public:
 	void decrementActiveTask(void) {
 		_activeTasks--;
 	}
+	void clearActiveTask(void) {
+		_activeTasks = 0;
+	}
 	//! Yield based on the yield period
 	void yield()
 	{

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/inc/Property.h
----------------------------------------------------------------------
diff --git a/inc/Property.h b/inc/Property.h
index b22cf64..a724394 100644
--- a/inc/Property.h
+++ b/inc/Property.h
@@ -309,6 +309,26 @@ public:
 		return false;
 	}
 
+	// Trim String utils
+	static std::string trim(const std::string& s)
+	{
+	    return trimRight(trimLeft(s));
+	}
+
+	static std::string trimLeft(const std::string& s)
+	{
+		const char *WHITESPACE = " \n\r\t";
+	    size_t startpos = s.find_first_not_of(WHITESPACE);
+	    return (startpos == std::string::npos) ? "" : s.substr(startpos);
+	}
+
+	static std::string trimRight(const std::string& s)
+	{
+		const char *WHITESPACE = " \n\r\t";
+	    size_t endpos = s.find_last_not_of(WHITESPACE);
+	    return (endpos == std::string::npos) ? "" : s.substr(0, endpos+1);
+	}
+
 protected:
 	//! Name
 	std::string _name;

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/main/MiNiFiMain.cpp
----------------------------------------------------------------------
diff --git a/main/MiNiFiMain.cpp b/main/MiNiFiMain.cpp
index ded7d96..4d9db5d 100644
--- a/main/MiNiFiMain.cpp
+++ b/main/MiNiFiMain.cpp
@@ -17,6 +17,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+#include <stdio.h>
+#include <signal.h>
 #include <vector>
 #include <queue>
 #include <map>
@@ -28,30 +30,57 @@
 
 //! Main thread sleep interval 1 second
 #define SLEEP_INTERVAL 1
+//! Main thread stop wait time
+#define STOP_WAIT_TIME 2
 //! Default nifi properties file path
 #define DEFAULT_NIFI_PROPERTIES_FILE "./conf/nifi.properties"
+//! Whether it is running
+static bool running = false;
+//! Flow Controller
+static FlowController *controller = NULL;
+
+void sigHandler(int signal)
+{
+	if (signal == SIGINT || signal == SIGTERM)
+	{
+		controller->stop(true);
+		sleep(STOP_WAIT_TIME);
+		running = false;
+	}
+}
 
 int main(int argc, char **argv)
 {
 	Logger *logger = Logger::getLogger();
-	logger->setLogLevel(trace);
+	logger->setLogLevel(info);
 	logger->log_info("MiNiFi started");
 
+	if (signal(SIGINT, sigHandler) == SIG_ERR || signal(SIGTERM, sigHandler) == SIG_ERR)
+	{
+		logger->log_error("Can not install signal handler");
+		return -1;
+	}
+
 	Configure *configure = Configure::getConfigure();
 	configure->loadConfigureFile(DEFAULT_NIFI_PROPERTIES_FILE);
 
-	FlowController controller;
+	controller = new FlowController();;
 
 	// Load flow XML
-	controller.load();
+	controller->load();
 	// Start Processing the flow
-	controller.start();
+	controller->start();
+	running = true;
 
 	// main loop
-	while (true)
+	while (running)
 	{
 		sleep(SLEEP_INTERVAL);
 	}
 
+	controller->unload();
+	delete controller;
+	logger->log_info("MiNiFi exit");
+
 	return 0;
 }

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/src/Configure.cpp
----------------------------------------------------------------------
diff --git a/src/Configure.cpp b/src/Configure.cpp
index bcc4a12..862bb71 100644
--- a/src/Configure.cpp
+++ b/src/Configure.cpp
@@ -23,6 +23,10 @@ Configure *Configure::_configure(NULL);
 const char *Configure::nifi_flow_configuration_file = "nifi.flow.configuration.file";
 const char *Configure::nifi_administrative_yield_duration = "nifi.administrative.yield.duration";
 const char *Configure::nifi_bored_yield_duration = "nifi.bored.yield.duration";
+const char *Configure::nifi_server_name = "nifi.server.name";
+const char *Configure::nifi_server_port = "nifi.server.port";
+const char *Configure::nifi_server_report_interval= "nifi.server.report.interval";
+
 
 //! Get the config value
 bool Configure::get(std::string key, std::string &value)

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7956696e/src/Connection.cpp
----------------------------------------------------------------------
diff --git a/src/Connection.cpp b/src/Connection.cpp
index 2befdfd..e036b89 100644
--- a/src/Connection.cpp
+++ b/src/Connection.cpp
@@ -144,3 +144,17 @@ FlowFileRecord* Connection::poll(std::set<FlowFileRecord *> &expiredFlowRecords)
 
 	return NULL;
 }
+
+void Connection::drain()
+{
+	std::lock_guard<std::mutex> lock(_mtx);
+
+	while (!_queue.empty())
+	{
+		FlowFileRecord *item = _queue.front();
+		_queue.pop();
+		delete item;
+	}
+
+	_logger->log_debug("Drain connection %s", _name.c_str());
+}