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());
+}