amps-python-client 5.3.4.1__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- amps-python-client-5.3.4.1/HISTORY +7 -0
- amps-python-client-5.3.4.1/LICENSE +157 -0
- amps-python-client-5.3.4.1/PKG-INFO +112 -0
- amps-python-client-5.3.4.1/README.md +96 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/.buildinfo +4 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_images/caution.svg +25 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +32 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +27 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/intro.rst.txt +43 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/logon.rst.txt +231 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +1474 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/publishing.rst.txt +25 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +12 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +23 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/removing.rst.txt +6 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/utilities.rst.txt +13 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/index.rst.txt +56 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/ajax-loader.gif +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/alabaster.css +699 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/basic.css +632 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/comment-bright.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/comment-close.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/comment.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css +192 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css.backup +161 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/doctools.js +287 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/down-pressed.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/down.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/file.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/flag_logo.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/flag_logo.svg +153 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/jquery-3.1.0.js +10074 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/jquery.js +4 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/minus.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/plus.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/pygments.css +74 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/searchtools.js +758 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/underscore-1.3.1.js +999 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/underscore.js +31 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/up-pressed.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/up.png +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/websupport.js +808 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/ack-messages.html +417 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/content-messages.html +417 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/intro.html +126 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/logon.html +295 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/protocol-reference.html +1190 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/publishing.html +436 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-delimiters.html +173 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-subscribe.html +2123 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/removing.html +299 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/utilities.html +287 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/genindex.html +97 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/index.html +138 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/search.html +107 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/searchindex.js +1 -0
- amps-python-client-5.3.4.1/docs/html/.buildinfo +4 -0
- amps-python-client-5.3.4.1/docs/html/_sources/code.rst.txt +6 -0
- amps-python-client-5.3.4.1/docs/html/_sources/index.rst.txt +29 -0
- amps-python-client-5.3.4.1/docs/html/_static/ajax-loader.gif +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/basic.css +632 -0
- amps-python-client-5.3.4.1/docs/html/_static/classic.css +261 -0
- amps-python-client-5.3.4.1/docs/html/_static/comment-bright.png +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/comment-close.png +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/comment.png +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/default.css +1 -0
- amps-python-client-5.3.4.1/docs/html/_static/doctools.js +287 -0
- amps-python-client-5.3.4.1/docs/html/_static/down-pressed.png +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/down.png +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/file.png +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/jquery-3.1.0.js +10074 -0
- amps-python-client-5.3.4.1/docs/html/_static/jquery.js +4 -0
- amps-python-client-5.3.4.1/docs/html/_static/minus.png +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/plus.png +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/pygments.css +74 -0
- amps-python-client-5.3.4.1/docs/html/_static/searchtools.js +758 -0
- amps-python-client-5.3.4.1/docs/html/_static/sidebar.js +159 -0
- amps-python-client-5.3.4.1/docs/html/_static/underscore-1.3.1.js +999 -0
- amps-python-client-5.3.4.1/docs/html/_static/underscore.js +31 -0
- amps-python-client-5.3.4.1/docs/html/_static/up-pressed.png +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/up.png +0 -0
- amps-python-client-5.3.4.1/docs/html/_static/websupport.js +808 -0
- amps-python-client-5.3.4.1/docs/html/code.html +6503 -0
- amps-python-client-5.3.4.1/docs/html/genindex.html +1361 -0
- amps-python-client-5.3.4.1/docs/html/index.html +131 -0
- amps-python-client-5.3.4.1/docs/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/html/py-modindex.html +111 -0
- amps-python-client-5.3.4.1/docs/html/search.html +107 -0
- amps-python-client-5.3.4.1/docs/html/searchindex.js +1 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/deltas.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/error-handling.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/exceptions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/first-program.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/high-availability.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/installing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/introduction.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/html/.buildinfo +4 -0
- amps-python-client-5.3.4.1/docs/python/html/_images/caution.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_images/caution.svg +25 -0
- amps-python-client-5.3.4.1/docs/python/html/_images/connection_string.svg +461 -0
- amps-python-client-5.3.4.1/docs/python/html/_images/important.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_images/important.svg +25 -0
- amps-python-client-5.3.4.1/docs/python/html/_images/tip.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_images/tip.svg +31 -0
- amps-python-client-5.3.4.1/docs/python/html/_images/warning.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/advanced-topics.rst.txt +398 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/cpp-compiler-list.rst.txt +6 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +26 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/creating-commands.rst.txt +159 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/deltas.rst.txt +79 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/error-handling.rst.txt +482 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/exceptions.rst.txt +128 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/first-program.rst.txt +142 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/high-availability.rst.txt +876 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/installing.rst.txt +184 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/introduction.rst.txt +50 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +32 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/performance-tips.rst.txt +434 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/queues.rst.txt +282 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/sow.rst.txt +292 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/subscriptions.rst.txt +374 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/utilities.rst.txt +214 -0
- amps-python-client-5.3.4.1/docs/python/html/_sources/index.rst.txt +44 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/ajax-loader.gif +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/alabaster.css +699 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/basic.css +632 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/comment-bright.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/comment-close.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/comment.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/custom.css +192 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/custom.css.backup +161 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/doctools.js +287 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/down-pressed.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/down.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/file.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/flag_logo.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/flag_logo.svg +153 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/jquery-3.1.0.js +10074 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/jquery.js +4 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/minus.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/plus.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/pygments.css +74 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/searchtools.js +758 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/underscore-1.3.1.js +999 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/underscore.js +31 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/up-pressed.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/up.png +0 -0
- amps-python-client-5.3.4.1/docs/python/html/_static/websupport.js +808 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/advanced-topics.html +447 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-compiler-list.html +92 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-feature-table.html +156 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/creating-commands.html +2837 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/deltas.html +169 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/error-handling.html +746 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/exceptions.html +272 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/first-program.html +499 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/high-availability.html +1014 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/installing.html +264 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/introduction.html +245 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/moving-from-python-lite.html +118 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/performance-tips.html +499 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/queues.html +352 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/sow.html +381 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/subscriptions.html +535 -0
- amps-python-client-5.3.4.1/docs/python/html/chapters/utilities.html +302 -0
- amps-python-client-5.3.4.1/docs/python/html/genindex.html +351 -0
- amps-python-client-5.3.4.1/docs/python/html/index.html +380 -0
- amps-python-client-5.3.4.1/docs/python/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/python/html/search.html +107 -0
- amps-python-client-5.3.4.1/docs/python/html/searchindex.js +1 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/.buildinfo +4 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_sources/chapters/crankitup.rst.txt +155 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_sources/chapters/equipment.rst.txt +19 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_sources/index.rst.txt +20 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/ajax-loader.gif +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/alabaster.css +699 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/basic.css +632 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/comment-bright.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/comment-close.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/comment.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css +192 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css.backup +161 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/doctools.js +287 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/down-pressed.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/down.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/file.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/flag_logo.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/flag_logo.svg +153 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/jquery-3.1.0.js +10074 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/jquery.js +4 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/minus.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/plus.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/pygments.css +74 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/searchtools.js +758 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/underscore-1.3.1.js +999 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/underscore.js +31 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/up-pressed.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/up.png +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/websupport.js +808 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/crankitup.html +271 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/equipment.html +105 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/genindex.html +97 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/index.html +382 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/search.html +107 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/searchindex.js +1 -0
- amps-python-client-5.3.4.1/docs/resources/custom.css +9 -0
- amps-python-client-5.3.4.1/docs/resources/flag_logo.svg +153 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/events.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/views.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/.buildinfo +4 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/AMPS-Queues-Intro.svg +1330 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/GeoRepl.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_async_ack.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_sync_ack.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/Hot-Hot-Replication.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/MessageOrdering.svg +235 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF5.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF6.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF7.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF8.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub1.svg +1 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub2.svg +1 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWAndSubscribeAndReplace.svg +684 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery1.svg +402 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery2.svg +505 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig1.svg +1 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig2.svg +1 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig3.svg +1 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig4.svg +1 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.svg +25 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/chicago_group.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_original_messages.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_update_message.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.svg +25 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/inline_view_conflation.svg +1 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_pub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_sub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/queue_usage_overview.svg +627 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_hub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_scenario_with_ha.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_1.svg +248 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_2.svg +183 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_update_sequence.svg +1 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.svg +31 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.svg +23 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/acks.rst.txt +232 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/actions.rst.txt +111 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +358 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +83 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +11 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +86 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +9 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +111 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +269 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/daemon.rst.txt +232 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/delta.rst.txt +556 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/distribution.rst.txt +186 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +191 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/events.rst.txt +39 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +203 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/glossary.rst.txt +101 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/ha.rst.txt +465 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +23 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/intro.rst.txt +116 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/logging.rst.txt +34 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +1398 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +326 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/oof.rst.txt +312 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/operation.rst.txt +27 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +49 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/queues.rst.txt +1351 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/replication.rst.txt +1228 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/securing.rst.txt +657 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow.rst.txt +57 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +25 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/spark.rst.txt +824 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/transports.rst.txt +291 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +517 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/txlog.rst.txt +62 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/usecases.rst.txt +21 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/utilities.rst.txt +62 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/views.rst.txt +175 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/index.rst.txt +110 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/ajax-loader.gif +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/alabaster.css +695 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/basic.css +632 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/comment-bright.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/comment-close.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/comment.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css +192 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css.backup +161 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/doctools.js +287 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/down-pressed.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/down.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/file.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/flag_logo.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/flag_logo.svg +153 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/jquery-3.1.0.js +10074 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/jquery.js +4 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/minus.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/plus.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/pygments.css +74 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/searchtools.js +758 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/underscore-1.3.1.js +999 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/underscore.js +31 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/up-pressed.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/up.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/websupport.js +808 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/acks.html +289 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/actions.html +3782 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps-statistics.html +439 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_expressions.html +1552 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_functions.html +1626 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/auxiliary_modules.html +2548 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/config-file-shortcuts.html +508 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/conflated_topics.html +328 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/constructing-fields.html +447 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/daemon.html +295 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/delta.html +609 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/distribution.html +246 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/enrichment.html +264 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/events.html +449 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/file_format_versions.html +229 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/glossary.html +215 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/ha.html +978 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/installing_and_starting.html +357 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/intro.html +572 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/logging.html +972 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/messageTypes.html +1280 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/monitoring.html +718 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/oof.html +341 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/operation.html +1515 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/pub_sub.html +934 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/queues.html +1767 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/replication.html +1777 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/securing.html +697 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow.html +1038 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow_queries.html +621 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/spark.html +819 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/transports.html +352 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/troubleshooting.html +530 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/txlog.html +1013 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/usecases.html +288 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/utilities.html +133 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/views.html +1120 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/genindex.html +1261 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/index.html +163 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/search.html +106 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/searchindex.js +1 -0
- amps-python-client-5.3.4.1/include/ampspy_bookmarkstore.hpp +63 -0
- amps-python-client-5.3.4.1/include/ampspy_compat.h +63 -0
- amps-python-client-5.3.4.1/include/ampspy_defs.hpp +181 -0
- amps-python-client-5.3.4.1/include/ampspy_recoverypointadapter.hpp +52 -0
- amps-python-client-5.3.4.1/include/ampspy_shims.hpp +113 -0
- amps-python-client-5.3.4.1/include/ampspy_type_object.hpp +242 -0
- amps-python-client-5.3.4.1/include/ampspy_types.hpp +1139 -0
- amps-python-client-5.3.4.1/include/ampspyver.h +30 -0
- amps-python-client-5.3.4.1/index.html +66 -0
- amps-python-client-5.3.4.1/samples/AMPSConsolePublisher.py +59 -0
- amps-python-client-5.3.4.1/samples/AMPSConsoleSubscriber.py +63 -0
- amps-python-client-5.3.4.1/samples/AMPSFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.1/samples/AMPSFIXShredderSubscriber.py +69 -0
- amps-python-client-5.3.4.1/samples/AMPSNVFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.1/samples/AMPSNVFIXShredderSubscriber.py +67 -0
- amps-python-client-5.3.4.1/samples/AMPSPublishForReplay.py +81 -0
- amps-python-client-5.3.4.1/samples/AMPSQueueConsumer.py +69 -0
- amps-python-client-5.3.4.1/samples/AMPSQueuePublisher.py +59 -0
- amps-python-client-5.3.4.1/samples/AMPSSOWConsolePublisher.py +67 -0
- amps-python-client-5.3.4.1/samples/AMPSSOWConsoleSubscriber.py +77 -0
- amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeConsoleSubscriber.py +79 -0
- amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeWithOOF.py +108 -0
- amps-python-client-5.3.4.1/samples/AMPSSubscribeForReplay.py +128 -0
- amps-python-client-5.3.4.1/samples/AMPSUpdateForOOF.py +123 -0
- amps-python-client-5.3.4.1/samples/CompositeMessagePublisher.py +84 -0
- amps-python-client-5.3.4.1/samples/CompositeMessageSubscriber.py +87 -0
- amps-python-client-5.3.4.1/samples/RandomServerChooser.py +41 -0
- amps-python-client-5.3.4.1/samples/sample.xml +335 -0
- amps-python-client-5.3.4.1/setup.py +209 -0
- amps-python-client-5.3.4.1/setup_amps.py +94 -0
- amps-python-client-5.3.4.1/src/ampspy_shims.cpp +203 -0
- amps-python-client-5.3.4.1/src/ampspy_type_object.cpp +484 -0
- amps-python-client-5.3.4.1/src/authenticator.cpp +128 -0
- amps-python-client-5.3.4.1/src/bookmarkstore.cpp +238 -0
- amps-python-client-5.3.4.1/src/client.cpp +2430 -0
- amps-python-client-5.3.4.1/src/client_docs.h +956 -0
- amps-python-client-5.3.4.1/src/cmessagehandler.cpp +151 -0
- amps-python-client-5.3.4.1/src/command.cpp +164 -0
- amps-python-client-5.3.4.1/src/command_docs.h +194 -0
- amps-python-client-5.3.4.1/src/compositemessagebuilder.cpp +111 -0
- amps-python-client-5.3.4.1/src/compositemessageparser.cpp +146 -0
- amps-python-client-5.3.4.1/src/conflatingrecoverypointadapter.cpp +194 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/BlockPublishStore.hpp +2053 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/BlockStore.hpp +677 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/BookmarkStore.hpp +542 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/Buffer.hpp +214 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageBuilder.hpp +174 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageParser.hpp +151 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/DefaultServerChooser.hpp +162 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/Field.hpp +719 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/HAClient.hpp +370 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/HAClientImpl.hpp +460 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/HybridPublishStore.hpp +481 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/LoggedBookmarkStore.hpp +1255 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/MMapBookmarkStore.hpp +1283 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/MMapStoreBuffer.hpp +290 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryBookmarkStore.hpp +1622 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryPublishStore.hpp +66 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryStoreBuffer.hpp +244 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemorySubscriptionManager.hpp +850 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/Message.hpp +1819 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/MessageRouter.hpp +618 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/PublishStore.hpp +158 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategy.hpp +106 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +317 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPoint.hpp +323 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPointAdapter.hpp +501 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/RingBookmarkStore.hpp +669 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +490 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooser.hpp +145 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooserImpl.hpp +95 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps.h +775 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_generated.h +46 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_impl.h +204 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_ssl.h +78 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampscrc.hpp +210 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsplusplus.hpp +8817 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsuri.h +84 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h +41 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h.in +41 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/constants.hpp +194 -0
- amps-python-client-5.3.4.1/src/cpp/include/amps/util.hpp +1692 -0
- amps-python-client-5.3.4.1/src/cpp/src/amps_protocol.c +688 -0
- amps-python-client-5.3.4.1/src/cpp/src/amps_protocol_generated.h +80 -0
- amps-python-client-5.3.4.1/src/cpp/src/amps_ssl.c +489 -0
- amps-python-client-5.3.4.1/src/cpp/src/atfork.c +446 -0
- amps-python-client-5.3.4.1/src/cpp/src/client.c +483 -0
- amps-python-client-5.3.4.1/src/cpp/src/makefile +92 -0
- amps-python-client-5.3.4.1/src/cpp/src/message.c +837 -0
- amps-python-client-5.3.4.1/src/cpp/src/message_generated.h +611 -0
- amps-python-client-5.3.4.1/src/cpp/src/tcp.c +1489 -0
- amps-python-client-5.3.4.1/src/cpp/src/tcps.c +1894 -0
- amps-python-client-5.3.4.1/src/cpp/src/transports.c +123 -0
- amps-python-client-5.3.4.1/src/cpp/src/unix.c +984 -0
- amps-python-client-5.3.4.1/src/cpp/src/uri.c +301 -0
- amps-python-client-5.3.4.1/src/exponentialdelaystrategy.cpp +137 -0
- amps-python-client-5.3.4.1/src/failedwritehandler.cpp +116 -0
- amps-python-client-5.3.4.1/src/fixbuilder.cpp +146 -0
- amps-python-client-5.3.4.1/src/fixeddelaystrategy.cpp +114 -0
- amps-python-client-5.3.4.1/src/fixshredder.cpp +105 -0
- amps-python-client-5.3.4.1/src/fixshredder_docs.h +38 -0
- amps-python-client-5.3.4.1/src/haclient.cpp +691 -0
- amps-python-client-5.3.4.1/src/haclient_docs.h +132 -0
- amps-python-client-5.3.4.1/src/hybridpublishstore.cpp +137 -0
- amps-python-client-5.3.4.1/src/hybridpublishstore_docs.h +31 -0
- amps-python-client-5.3.4.1/src/memorybookmarkstore.cpp +373 -0
- amps-python-client-5.3.4.1/src/memorybookmarkstore_docs.h +39 -0
- amps-python-client-5.3.4.1/src/memorypublishstore.cpp +160 -0
- amps-python-client-5.3.4.1/src/memorypublishstore_docs.h +32 -0
- amps-python-client-5.3.4.1/src/message.cpp +765 -0
- amps-python-client-5.3.4.1/src/message_docs.h +306 -0
- amps-python-client-5.3.4.1/src/messagestream.cpp +623 -0
- amps-python-client-5.3.4.1/src/messagestream_docs.h +45 -0
- amps-python-client-5.3.4.1/src/mmapbookmarkstore.cpp +422 -0
- amps-python-client-5.3.4.1/src/nvfixbuilder.cpp +160 -0
- amps-python-client-5.3.4.1/src/nvfixbuilder_docs.h +33 -0
- amps-python-client-5.3.4.1/src/nvfixshredder.cpp +99 -0
- amps-python-client-5.3.4.1/src/nvfixshredder_docs.h +39 -0
- amps-python-client-5.3.4.1/src/publishstore.cpp +183 -0
- amps-python-client-5.3.4.1/src/raw_wrapper.cpp +756 -0
- amps-python-client-5.3.4.1/src/reason.cpp +71 -0
- amps-python-client-5.3.4.1/src/recoverypoint.cpp +135 -0
- amps-python-client-5.3.4.1/src/recoverypointadapter.cpp +171 -0
- amps-python-client-5.3.4.1/src/ringbookmarkstore.cpp +360 -0
- amps-python-client-5.3.4.1/src/serverchooser.cpp +245 -0
- amps-python-client-5.3.4.1/src/serverchooser_docs.h +39 -0
- amps-python-client-5.3.4.1/src/sowrecoverypointadapter.cpp +248 -0
- amps-python-client-5.3.4.1/src/store.cpp +62 -0
- amps-python-client-5.3.4.1/src/versioninfo.cpp +175 -0
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2010-2023 60East Technologies Inc., All Rights Reserved.
|
|
4
|
+
//
|
|
5
|
+
// This computer software is owned by 60East Technologies Inc. and is
|
|
6
|
+
// protected by U.S. copyright laws and other laws and by international
|
|
7
|
+
// treaties. This computer software is furnished by 60East Technologies
|
|
8
|
+
// Inc. pursuant to a written license agreement and may be used, copied,
|
|
9
|
+
// transmitted, and stored only in accordance with the terms of such
|
|
10
|
+
// license agreement and with the inclusion of the above copyright notice.
|
|
11
|
+
// This computer software or any other copies thereof may not be provided
|
|
12
|
+
// or otherwise made available to any other person.
|
|
13
|
+
//
|
|
14
|
+
// U.S. Government Restricted Rights. This computer software: (a) was
|
|
15
|
+
// developed at private expense and is in all respects the proprietary
|
|
16
|
+
// information of 60East Technologies Inc.; (b) was not developed with
|
|
17
|
+
// government funds; (c) is a trade secret of 60East Technologies Inc.
|
|
18
|
+
// for all purposes of the Freedom of Information Act; and (d) is a
|
|
19
|
+
// commercial item and thus, pursuant to Section 12.212 of the Federal
|
|
20
|
+
// Acquisition Regulations (FAR) and DFAR Supplement Section 227.7202,
|
|
21
|
+
// Government's use, duplication or disclosure of the computer software
|
|
22
|
+
// is subject to the restrictions set forth by 60East Technologies Inc..
|
|
23
|
+
//
|
|
24
|
+
////////////////////////////////////////////////////////////////////////////
|
|
25
|
+
|
|
26
|
+
#ifndef _SOWRECOVERYPOINTADAPTER_H_
|
|
27
|
+
#define _SOWRECOVERYPOINTADAPTER_H_
|
|
28
|
+
|
|
29
|
+
#include <amps/ampsplusplus.hpp>
|
|
30
|
+
#include <amps/Field.hpp>
|
|
31
|
+
#include <amps/RecoveryPoint.hpp>
|
|
32
|
+
#include <amps/RecoveryPointAdapter.hpp>
|
|
33
|
+
#include <assert.h>
|
|
34
|
+
#include <memory>
|
|
35
|
+
#include <string>
|
|
36
|
+
|
|
37
|
+
using std::string;
|
|
38
|
+
|
|
39
|
+
#define AMPS_SOW_STORE_DEFAULT_TOPIC "/ADMIN/bookmark_store"
|
|
40
|
+
#define AMPS_SOW_STORE_DEFAULT_CLIENT_FIELD "clientName"
|
|
41
|
+
#define AMPS_SOW_STORE_DEFAULT_SUB_FIELD "subId"
|
|
42
|
+
#define AMPS_SOW_STORE_DEFAULT_BOOKMARK_FIELD "bookmark"
|
|
43
|
+
|
|
44
|
+
#define SOW_RECOVERY_HANDLE_EXCEPTION(x) \
|
|
45
|
+
catch (const AMPSException& ex_) \
|
|
46
|
+
{ \
|
|
47
|
+
std::ostringstream os; \
|
|
48
|
+
os << x << ": AMPSException " << ex_.what(); \
|
|
49
|
+
StoreException ex(os.str()); \
|
|
50
|
+
if (!_throwNotListen && _pExceptionListener) \
|
|
51
|
+
{ \
|
|
52
|
+
_pExceptionListener->exceptionThrown(ex); \
|
|
53
|
+
} \
|
|
54
|
+
else throw ex; \
|
|
55
|
+
} \
|
|
56
|
+
catch (const std::exception& ex_) \
|
|
57
|
+
{ \
|
|
58
|
+
std::ostringstream os; \
|
|
59
|
+
os << x << ": std::exception " << ex_.what(); \
|
|
60
|
+
StoreException ex(os.str()); \
|
|
61
|
+
if (!_throwNotListen && _pExceptionListener) \
|
|
62
|
+
{ \
|
|
63
|
+
_pExceptionListener->exceptionThrown(ex); \
|
|
64
|
+
} \
|
|
65
|
+
else throw ex; \
|
|
66
|
+
} \
|
|
67
|
+
catch (...) \
|
|
68
|
+
{ \
|
|
69
|
+
std::ostringstream os; \
|
|
70
|
+
os << x << ": Unknown exception"; \
|
|
71
|
+
StoreException ex(os.str()); \
|
|
72
|
+
if (!_throwNotListen && _pExceptionListener) \
|
|
73
|
+
{ \
|
|
74
|
+
_pExceptionListener->exceptionThrown(ex); \
|
|
75
|
+
} \
|
|
76
|
+
else throw ex; \
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
namespace AMPS
|
|
80
|
+
{
|
|
81
|
+
|
|
82
|
+
/// RecoveryPointAdapter virtual base class for implementing external
|
|
83
|
+
/// storage of subscription recovery points and recovery from storage.
|
|
84
|
+
class SOWRecoveryPointAdapter : public RecoveryPointAdapterImpl
|
|
85
|
+
{
|
|
86
|
+
public:
|
|
87
|
+
|
|
88
|
+
/// Create a SOWRecoveryPointAdapter for a BookmarkStore that writes
|
|
89
|
+
/// updated RecoveryPoints to the server where storeClient_ is connected
|
|
90
|
+
/// to the storeTopic_ using trackedClientName_ in the clientNameField_
|
|
91
|
+
/// and the subId from the RecoveryPoint in the subIdField_ as the key
|
|
92
|
+
/// fields and the bookmark from the RecoveryPoint in the bookmarkField_
|
|
93
|
+
/// as the bookmark.
|
|
94
|
+
/// \param storeClient_ A Client that is connected and logged on to a
|
|
95
|
+
/// server containing the SOW for bookmark storage. This client must NOT
|
|
96
|
+
/// be the tracked client.
|
|
97
|
+
/// \param trackedClientName_ The name of the client for which this store
|
|
98
|
+
/// is being used. It is an UsageException for trackedClientName_ to match
|
|
99
|
+
/// the name of storeClient_.
|
|
100
|
+
/// \param timeoutMillis_ The max time to wait for the sow query that
|
|
101
|
+
/// returns bookmarks saved in the store to return the next record.
|
|
102
|
+
/// \param useTimestamp_ If true, the recovered bookmarks will also
|
|
103
|
+
/// include the update timestamp, which is useful if the bookmarks are no
|
|
104
|
+
/// longer in the transaction log.
|
|
105
|
+
/// \param closeClient_ If true, the storeClient_ will be disconnected when
|
|
106
|
+
/// the adapter is closed or destructed. Default is true.
|
|
107
|
+
/// \param updateFailureThrows_ If true, exceptions will be thrown out of
|
|
108
|
+
/// this class to the BookmarkStore and eventually the tracked client's
|
|
109
|
+
/// exception listener. If false, the default, exceptions are contained
|
|
110
|
+
/// and only delivered to the exception listener set on this adapter.
|
|
111
|
+
/// \param topic_ The name of the SOW topic in which to store
|
|
112
|
+
/// the RecoveryPoints.
|
|
113
|
+
/// \param clientNameField_ The name of key field in topic_ where the
|
|
114
|
+
/// trackedClientName_ is saved for each RecoveryPoint.
|
|
115
|
+
/// \param subIdField_ The name of the key field in topic_ where the subId
|
|
116
|
+
/// for each saved RecoveryPoint is stored.
|
|
117
|
+
/// \param bookmarkField_ The name of the field in topic_ where the
|
|
118
|
+
/// bookmark from each RecoveryPoint is saved.
|
|
119
|
+
SOWRecoveryPointAdapter(const Client& storeClient_,
|
|
120
|
+
const string& trackedClientName_,
|
|
121
|
+
unsigned timeoutMillis_ = 5000,
|
|
122
|
+
bool useTimestamp_ = false,
|
|
123
|
+
bool closeClient_ = true,
|
|
124
|
+
bool updateFailureThrows_ = false,
|
|
125
|
+
const string& topic_ = AMPS_SOW_STORE_DEFAULT_TOPIC,
|
|
126
|
+
const string& clientNameField_ = AMPS_SOW_STORE_DEFAULT_CLIENT_FIELD,
|
|
127
|
+
const string& subIdField_ = AMPS_SOW_STORE_DEFAULT_SUB_FIELD,
|
|
128
|
+
const string& bookmarkField_ = AMPS_SOW_STORE_DEFAULT_BOOKMARK_FIELD
|
|
129
|
+
)
|
|
130
|
+
: RecoveryPointAdapterImpl()
|
|
131
|
+
, _serializeLen(0)
|
|
132
|
+
, _serializeBuffer(0)
|
|
133
|
+
, _deserializeLen(0)
|
|
134
|
+
, _deserializeBuffer(0)
|
|
135
|
+
, _client(storeClient_)
|
|
136
|
+
, _trackedName(trackedClientName_)
|
|
137
|
+
, _topic(topic_)
|
|
138
|
+
, _nameField(clientNameField_)
|
|
139
|
+
, _subIdField(subIdField_)
|
|
140
|
+
, _bookmarkField(bookmarkField_)
|
|
141
|
+
, _timeoutMillis(timeoutMillis_)
|
|
142
|
+
, _cmd("publish")
|
|
143
|
+
, _closeClient(closeClient_)
|
|
144
|
+
, _executed(false)
|
|
145
|
+
, _throwNotListen(updateFailureThrows_)
|
|
146
|
+
, _useTimestamp(useTimestamp_)
|
|
147
|
+
, _closed(false)
|
|
148
|
+
{
|
|
149
|
+
_initSerialization();
|
|
150
|
+
_cmd.setTopic(_topic);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
virtual ~SOWRecoveryPointAdapter()
|
|
154
|
+
{
|
|
155
|
+
_close();
|
|
156
|
+
delete[] _serializeBuffer;
|
|
157
|
+
delete[] _deserializeBuffer;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/// Recovery is done by iteration over elements in storage. This function
|
|
161
|
+
/// modifies the passed in argument to be the next stored RecoveryPoint
|
|
162
|
+
/// or an empty RecoveryPoint to indicate completion.
|
|
163
|
+
/// \param current_ The RecoveryPoint to set as the next recovery item.
|
|
164
|
+
virtual bool next(RecoveryPoint& current_)
|
|
165
|
+
{
|
|
166
|
+
static Field emptyField;
|
|
167
|
+
try
|
|
168
|
+
{
|
|
169
|
+
if (!_executed)
|
|
170
|
+
{
|
|
171
|
+
Command cmd("sow");
|
|
172
|
+
cmd.setTopic(_topic)
|
|
173
|
+
.setFilter("/" + _nameField + "='" + _trackedName + "'")
|
|
174
|
+
.setTimeout(_timeoutMillis);
|
|
175
|
+
if (_useTimestamp)
|
|
176
|
+
{
|
|
177
|
+
cmd.setOptions("select=[-/,+/" + _subIdField + ",+/"
|
|
178
|
+
+ _bookmarkField + "],timestamp");
|
|
179
|
+
}
|
|
180
|
+
else
|
|
181
|
+
{
|
|
182
|
+
cmd.setOptions("select=[-/,+/" + _subIdField + ",+/"
|
|
183
|
+
+ _bookmarkField + "]");
|
|
184
|
+
}
|
|
185
|
+
_stream = _client.execute(cmd).timeout(_timeoutMillis);
|
|
186
|
+
_msIter = _stream.begin();
|
|
187
|
+
_executed = true;
|
|
188
|
+
}
|
|
189
|
+
else
|
|
190
|
+
{
|
|
191
|
+
++_msIter;
|
|
192
|
+
}
|
|
193
|
+
if (_msIter == MessageStream::iterator())
|
|
194
|
+
{
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
Message m = *_msIter;
|
|
198
|
+
if (!m.isValid())
|
|
199
|
+
{
|
|
200
|
+
current_ = RecoveryPoint(NULL);
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
if (m.getCommand() == "group_begin")
|
|
204
|
+
{
|
|
205
|
+
return next(current_);
|
|
206
|
+
}
|
|
207
|
+
else if (m.getCommand() == "sow")
|
|
208
|
+
{
|
|
209
|
+
if (_useTimestamp)
|
|
210
|
+
{
|
|
211
|
+
current_ = RecoveryPoint(deserialize(m.getData(),
|
|
212
|
+
m.getTimestamp()));
|
|
213
|
+
}
|
|
214
|
+
else
|
|
215
|
+
{
|
|
216
|
+
current_ = RecoveryPoint(deserialize(m.getData(),
|
|
217
|
+
emptyField));
|
|
218
|
+
}
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
else if (m.getCommand() == "group_end" || m.getCommand() == "ack")
|
|
222
|
+
{
|
|
223
|
+
current_ = RecoveryPoint(NULL);
|
|
224
|
+
_msIter = MessageStream::iterator();
|
|
225
|
+
_stream = MessageStream();
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
SOW_RECOVERY_HANDLE_EXCEPTION("SOWRecoveryPoint::next")
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/// Update the storage information with the given recovery point.
|
|
234
|
+
/// \param recoveryPoint_ The new/updated RecoveryPoint to save.
|
|
235
|
+
virtual void update(RecoveryPoint& recoveryPoint_)
|
|
236
|
+
{
|
|
237
|
+
try
|
|
238
|
+
{
|
|
239
|
+
Field data = serialize(recoveryPoint_);
|
|
240
|
+
_cmd.setData(data.data(), data.len());
|
|
241
|
+
_client.execute(_cmd);
|
|
242
|
+
}
|
|
243
|
+
SOW_RECOVERY_HANDLE_EXCEPTION("SOWRecoveryPoint::update")
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/// Remove all data from the storage
|
|
247
|
+
virtual void purge()
|
|
248
|
+
{
|
|
249
|
+
try
|
|
250
|
+
{
|
|
251
|
+
Message m = _client.sowDelete(_topic, "/" + _nameField
|
|
252
|
+
+ "='" + _trackedName + "'");
|
|
253
|
+
}
|
|
254
|
+
SOW_RECOVERY_HANDLE_EXCEPTION("SOWRecoveryPoint::purge")
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/// Remove the specified subId_ from the storage
|
|
258
|
+
/// \param subId_ The sub id to remove
|
|
259
|
+
virtual void purge(const Field& subId_)
|
|
260
|
+
{
|
|
261
|
+
try
|
|
262
|
+
{
|
|
263
|
+
Message m = _client.sowDelete(_topic, "/" + _nameField + "='"
|
|
264
|
+
+ _trackedName + "' and /"
|
|
265
|
+
+ _subIdField + "='"
|
|
266
|
+
+ subId_ + "'");
|
|
267
|
+
}
|
|
268
|
+
SOW_RECOVERY_HANDLE_EXCEPTION("SOWRecoveryPoint::purge(subId)")
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/// Take any necessary actions to close the associated storage.
|
|
272
|
+
virtual void close()
|
|
273
|
+
{
|
|
274
|
+
_close();
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/// Set an exception listener on this adapter that will be notified of
|
|
278
|
+
/// all exceptions that occur rather than silently absorbing them. The
|
|
279
|
+
/// exception listener will be ignored if the adapter is constructed with
|
|
280
|
+
/// updateFailureThrows_ true; in that case exceptions will leave this
|
|
281
|
+
/// adapter to be handled elsewhere.
|
|
282
|
+
/// \param pListener_ A shared pointer to the ExceptionListener that
|
|
283
|
+
/// should be notified.
|
|
284
|
+
void setExceptionListener(const std::shared_ptr<const ExceptionListener>& pListener_)
|
|
285
|
+
{
|
|
286
|
+
_pExceptionListener = pListener_;
|
|
287
|
+
}
|
|
288
|
+
protected:
|
|
289
|
+
void _close()
|
|
290
|
+
{
|
|
291
|
+
if (_closed || !_client.isValid())
|
|
292
|
+
{
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
try
|
|
296
|
+
{
|
|
297
|
+
_client.publishFlush();
|
|
298
|
+
}
|
|
299
|
+
SOW_RECOVERY_HANDLE_EXCEPTION("SOWRecoveryPoint::close publishFlush")
|
|
300
|
+
try
|
|
301
|
+
{
|
|
302
|
+
if (_closeClient)
|
|
303
|
+
{
|
|
304
|
+
_closed = true;
|
|
305
|
+
_client.disconnect();
|
|
306
|
+
_client = Client();
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
SOW_RECOVERY_HANDLE_EXCEPTION("SOWRecoveryPoint::close disconnect")
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
void _initSerialization()
|
|
313
|
+
{
|
|
314
|
+
try
|
|
315
|
+
{
|
|
316
|
+
// Set up json serialization
|
|
317
|
+
if (_serializeLen == 0)
|
|
318
|
+
{
|
|
319
|
+
_serializeLen = (size_t) (_nameField.length()
|
|
320
|
+
+ _trackedName.length()
|
|
321
|
+
+ _subIdField.length()
|
|
322
|
+
+ _bookmarkField.length()
|
|
323
|
+
+ (AMPS_MAX_BOOKMARK_LEN * 4UL)
|
|
324
|
+
+ SUBID_LEN + JSON_EXTRA);
|
|
325
|
+
_serializeLen += (128 - (_serializeLen % 128));
|
|
326
|
+
}
|
|
327
|
+
_serializeBuffer = new char[_serializeLen];
|
|
328
|
+
AMPS_snprintf(_serializeBuffer, _serializeLen,
|
|
329
|
+
"{\"%s\":\"%s\",\"%s\":\"", _nameField.c_str()
|
|
330
|
+
, _trackedName.c_str()
|
|
331
|
+
, _subIdField.c_str());
|
|
332
|
+
_serializeStart = JSON_START + _nameField.length()
|
|
333
|
+
+ _trackedName.length() + _subIdField.length();
|
|
334
|
+
}
|
|
335
|
+
SOW_RECOVERY_HANDLE_EXCEPTION("SOWRecoveryPoint::initSerialization")
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
// Subclasses can override this to set up for something other than json
|
|
339
|
+
// serialization if not using json.
|
|
340
|
+
virtual void initSerialization()
|
|
341
|
+
{
|
|
342
|
+
_initSerialization();
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// Subclasses can override this function if not using json data type.
|
|
346
|
+
// It needs to return an allocated RecoveryPointImpl based on the data
|
|
347
|
+
// field from a sow message that contains only 2 fields: _subIdField and
|
|
348
|
+
// _bookmarkField. If you'd like more, override begin()
|
|
349
|
+
virtual RecoveryPointImpl* deserialize(const Field& data_,
|
|
350
|
+
const Field& timestamp_)
|
|
351
|
+
{
|
|
352
|
+
Field subId;
|
|
353
|
+
Field bookmark;
|
|
354
|
+
try
|
|
355
|
+
{
|
|
356
|
+
// We have 2 fields subId and bookmark and we only need the
|
|
357
|
+
// values. Find : then start ", then end ".
|
|
358
|
+
const char* start = (const char*)memchr((const void*)data_.data(),
|
|
359
|
+
(int)':', data_.len());
|
|
360
|
+
if (!start)
|
|
361
|
+
{
|
|
362
|
+
throw StoreException("Failure parsing json RecoveryPoint subId, no :");
|
|
363
|
+
}
|
|
364
|
+
size_t remain = data_.len() - (size_t)(start - data_.data());
|
|
365
|
+
start = (const char*)memchr((const void*)start, (int)'"', remain);
|
|
366
|
+
if (!start)
|
|
367
|
+
{
|
|
368
|
+
throw StoreException("Failure parsing json RecoveryPoint subId, no start \"");
|
|
369
|
+
}
|
|
370
|
+
++start;
|
|
371
|
+
remain = data_.len() - (size_t)(start - data_.data());
|
|
372
|
+
const char* end = (const char*)memchr((const void*)start,
|
|
373
|
+
(int)'"', remain);
|
|
374
|
+
if (!end)
|
|
375
|
+
{
|
|
376
|
+
throw StoreException("Failure parsing json RecoveryPoint subId, no end \"");
|
|
377
|
+
}
|
|
378
|
+
size_t len = (size_t)(end - start);
|
|
379
|
+
subId = Field(start, len);
|
|
380
|
+
start = (const char*)memchr((const void*)start, (int)':', data_.len());
|
|
381
|
+
if (!start)
|
|
382
|
+
{
|
|
383
|
+
throw StoreException("Failure parsing json RecoveryPoint bookmark, no :");
|
|
384
|
+
}
|
|
385
|
+
remain = data_.len() - (size_t)(start - data_.data());
|
|
386
|
+
start = (const char*)memchr((const void*)start, (int)'"', remain);
|
|
387
|
+
if (!start)
|
|
388
|
+
{
|
|
389
|
+
throw StoreException("Failure parsing json RecoveryPoint bookmark, no start \"");
|
|
390
|
+
}
|
|
391
|
+
++start;
|
|
392
|
+
remain = data_.len() - (size_t)(start - data_.data());
|
|
393
|
+
end = (const char*)memchr((const void*)start, (int)'"', remain);
|
|
394
|
+
if (!end)
|
|
395
|
+
{
|
|
396
|
+
throw StoreException("Failure parsing json RecoveryPoint bookmark, no end \"");
|
|
397
|
+
}
|
|
398
|
+
len = (size_t)(end - start);
|
|
399
|
+
if (_useTimestamp && !timestamp_.empty())
|
|
400
|
+
{
|
|
401
|
+
if (_deserializeLen < len + timestamp_.len())
|
|
402
|
+
{
|
|
403
|
+
delete[] _deserializeBuffer;
|
|
404
|
+
_deserializeBuffer = 0;
|
|
405
|
+
}
|
|
406
|
+
if (!_deserializeBuffer)
|
|
407
|
+
{
|
|
408
|
+
_deserializeLen = len + timestamp_.len() + 1;
|
|
409
|
+
_deserializeBuffer = new char[_deserializeLen];
|
|
410
|
+
}
|
|
411
|
+
memcpy((void*)_deserializeBuffer, (const void*)start, len);
|
|
412
|
+
_deserializeBuffer[len] = ',';
|
|
413
|
+
memcpy((void*)(_deserializeBuffer + len + 1),
|
|
414
|
+
(const void*)timestamp_.data(), timestamp_.len());
|
|
415
|
+
bookmark = Field(_deserializeBuffer, _deserializeLen);
|
|
416
|
+
}
|
|
417
|
+
else
|
|
418
|
+
{
|
|
419
|
+
bookmark = Field(start, len);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
SOW_RECOVERY_HANDLE_EXCEPTION("SOWRecoveryPoint::deserialize")
|
|
423
|
+
// Return a recovery point that will copy current field values and
|
|
424
|
+
// clear them when destructed.
|
|
425
|
+
return new FixedRecoveryPoint(subId, bookmark, true);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
virtual Field& serialize(const RecoveryPoint& recoveryPoint_)
|
|
429
|
+
{
|
|
430
|
+
try
|
|
431
|
+
{
|
|
432
|
+
Field subId = recoveryPoint_.getSubId();
|
|
433
|
+
Field bookmark = recoveryPoint_.getBookmark();
|
|
434
|
+
size_t fullLen = _serializeStart + subId.len()
|
|
435
|
+
+ _bookmarkField.length() + bookmark.len() + JSON_END;
|
|
436
|
+
if (fullLen >= _serializeLen)
|
|
437
|
+
{
|
|
438
|
+
_serializeLen = fullLen + (128 - (fullLen % 128));
|
|
439
|
+
delete[] _serializeBuffer;
|
|
440
|
+
// This will reallocate the buffer and fill with predicate
|
|
441
|
+
initSerialization();
|
|
442
|
+
}
|
|
443
|
+
AMPS_snprintf(_serializeBuffer + _serializeStart,
|
|
444
|
+
_serializeLen - _serializeStart,
|
|
445
|
+
"%.*s\",\"%s\":\"%.*s\"}", (int)subId.len()
|
|
446
|
+
, subId.data()
|
|
447
|
+
, _bookmarkField.c_str()
|
|
448
|
+
, (int)bookmark.len()
|
|
449
|
+
, bookmark.data());
|
|
450
|
+
_serializeField.assign(_serializeBuffer, fullLen);
|
|
451
|
+
}
|
|
452
|
+
SOW_RECOVERY_HANDLE_EXCEPTION("SOWRecoveryPoint::serialize")
|
|
453
|
+
return _serializeField;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
enum Constants : size_t
|
|
457
|
+
{
|
|
458
|
+
JSON_START = 11, // '{', 7 '"', 2 ':', 1 ','
|
|
459
|
+
JSON_END = 8, // '}', 5 '"', 1 ':', 1 ','
|
|
460
|
+
JSON_EXTRA = 19, // '{', '}', 3 ':', 12 '"', 2 ','
|
|
461
|
+
SUBID_LEN = 64 // rough guess on typical max len
|
|
462
|
+
};
|
|
463
|
+
|
|
464
|
+
private:
|
|
465
|
+
size_t _serializeLen;
|
|
466
|
+
size_t _serializeStart;
|
|
467
|
+
Field _serializeField;
|
|
468
|
+
char* _serializeBuffer;
|
|
469
|
+
size_t _deserializeLen;
|
|
470
|
+
char* _deserializeBuffer;
|
|
471
|
+
Client _client;
|
|
472
|
+
std::string _trackedName;
|
|
473
|
+
std::string _topic;
|
|
474
|
+
std::string _nameField;
|
|
475
|
+
std::string _subIdField;
|
|
476
|
+
std::string _bookmarkField;
|
|
477
|
+
unsigned _timeoutMillis;
|
|
478
|
+
Command _cmd;
|
|
479
|
+
MessageStream _stream;
|
|
480
|
+
MessageStream::iterator _msIter;
|
|
481
|
+
std::shared_ptr<const ExceptionListener> _pExceptionListener;
|
|
482
|
+
bool _closeClient;
|
|
483
|
+
bool _executed;
|
|
484
|
+
bool _throwNotListen;
|
|
485
|
+
bool _useTimestamp;
|
|
486
|
+
bool _closed;
|
|
487
|
+
};
|
|
488
|
+
} // namespace AMPS
|
|
489
|
+
#endif //_SOWRECOVERYPOINTADAPTER_H_
|
|
490
|
+
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2010-2023 60East Technologies Inc., All Rights Reserved.
|
|
4
|
+
//
|
|
5
|
+
// This computer software is owned by 60East Technologies Inc. and is
|
|
6
|
+
// protected by U.S. copyright laws and other laws and by international
|
|
7
|
+
// treaties. This computer software is furnished by 60East Technologies
|
|
8
|
+
// Inc. pursuant to a written license agreement and may be used, copied,
|
|
9
|
+
// transmitted, and stored only in accordance with the terms of such
|
|
10
|
+
// license agreement and with the inclusion of the above copyright notice.
|
|
11
|
+
// This computer software or any other copies thereof may not be provided
|
|
12
|
+
// or otherwise made available to any other person.
|
|
13
|
+
//
|
|
14
|
+
// U.S. Government Restricted Rights. This computer software: (a) was
|
|
15
|
+
// developed at private expense and is in all respects the proprietary
|
|
16
|
+
// information of 60East Technologies Inc.; (b) was not developed with
|
|
17
|
+
// government funds; (c) is a trade secret of 60East Technologies Inc.
|
|
18
|
+
// for all purposes of the Freedom of Information Act; and (d) is a
|
|
19
|
+
// commercial item and thus, pursuant to Section 12.212 of the Federal
|
|
20
|
+
// Acquisition Regulations (FAR) and DFAR Supplement Section 227.7202,
|
|
21
|
+
// Government's use, duplication or disclosure of the computer software
|
|
22
|
+
// is subject to the restrictions set forth by 60East Technologies Inc..
|
|
23
|
+
//
|
|
24
|
+
////////////////////////////////////////////////////////////////////////////
|
|
25
|
+
|
|
26
|
+
#ifndef _SERVERCHOOSER_H_
|
|
27
|
+
#define _SERVERCHOOSER_H_
|
|
28
|
+
|
|
29
|
+
#include <amps/ampsplusplus.hpp>
|
|
30
|
+
#include <amps/ServerChooserImpl.hpp>
|
|
31
|
+
|
|
32
|
+
/// \file ServerChooser.hpp
|
|
33
|
+
/// \brief Provides AMPS::ServerChooser, the abstract base class that defines
|
|
34
|
+
/// the interface that an AMPS::HAClient uses for determining which server
|
|
35
|
+
/// to connect to.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
namespace AMPS
|
|
39
|
+
{
|
|
40
|
+
|
|
41
|
+
///
|
|
42
|
+
/// Abstract base class for choosing amongst multiple URIs for both the initial
|
|
43
|
+
/// connection and reconnection. Used by HAClient to pick an initial server and
|
|
44
|
+
/// also to pick a server if there is a failure.
|
|
45
|
+
///
|
|
46
|
+
class ServerChooser
|
|
47
|
+
{
|
|
48
|
+
RefHandle<ServerChooserImpl> _body;
|
|
49
|
+
public:
|
|
50
|
+
ServerChooser() : _body(NULL) {}
|
|
51
|
+
|
|
52
|
+
ServerChooser(ServerChooserImpl* body_) : _body(body_) {}
|
|
53
|
+
|
|
54
|
+
bool isValid()
|
|
55
|
+
{
|
|
56
|
+
return _body.isValid();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
///
|
|
60
|
+
/// Returns the current URI.
|
|
61
|
+
///
|
|
62
|
+
/// \return The current URI or empty string if no server is available.
|
|
63
|
+
///
|
|
64
|
+
std::string getCurrentURI()
|
|
65
|
+
{
|
|
66
|
+
return _body.get().getCurrentURI();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
///
|
|
70
|
+
/// Returns the Authenticator instance associated with the current URI.
|
|
71
|
+
///
|
|
72
|
+
/// \return An Authenticator or NULL if none is required for logon.
|
|
73
|
+
///
|
|
74
|
+
Authenticator& getCurrentAuthenticator()
|
|
75
|
+
{
|
|
76
|
+
return _body.get().getCurrentAuthenticator();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
///
|
|
80
|
+
/// Called by HAClient when an error occurs connecting to the current URI,
|
|
81
|
+
/// and/or when an error occurs logging on. Implementors will likely
|
|
82
|
+
/// advance the current URI to the next one in a list, or choose to stay
|
|
83
|
+
/// with the current one, based on the exception type.
|
|
84
|
+
/// \param exception_ The exception associated with the failure.
|
|
85
|
+
/// \param info_ a map of information about the connection at time of failure
|
|
86
|
+
void reportFailure(const AMPSException& exception_,
|
|
87
|
+
const ConnectionInfo& info_)
|
|
88
|
+
{
|
|
89
|
+
_body.get().reportFailure(exception_, info_);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
///
|
|
93
|
+
/// Provides additional detail to be included in an exception thrown
|
|
94
|
+
/// when the AMPS instance(s) are not available. Called by the HAClient
|
|
95
|
+
/// when creating an exception.
|
|
96
|
+
/// \return A string with information about the connection that failed
|
|
97
|
+
/// and the reason for the failure. When no further information
|
|
98
|
+
/// is available, returns an empty string.
|
|
99
|
+
std::string getError()
|
|
100
|
+
{
|
|
101
|
+
return _body.get().getError();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
///
|
|
105
|
+
/// Called by the HAClient when successfully connected and logged on to
|
|
106
|
+
/// the current instance.
|
|
107
|
+
/// \param info_ information about the successful connection
|
|
108
|
+
void reportSuccess(const ConnectionInfo& info_)
|
|
109
|
+
{
|
|
110
|
+
_body.get().reportSuccess(info_);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
///
|
|
114
|
+
/// Add a server to a server chooser if its policy permits
|
|
115
|
+
/// \param uri_ The URI of the server to add
|
|
116
|
+
ServerChooser& add(const std::string& uri_)
|
|
117
|
+
{
|
|
118
|
+
_body.get().add(uri_);
|
|
119
|
+
return *this;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
///
|
|
123
|
+
/// Remove a server from a server chooser if its policy permits
|
|
124
|
+
/// \param uri_ The URI of the server to remove
|
|
125
|
+
void remove(const std::string& uri_)
|
|
126
|
+
{
|
|
127
|
+
_body.get().remove(uri_);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
~ServerChooser() {}
|
|
131
|
+
|
|
132
|
+
ServerChooser& operator=(const ServerChooser& rhs)
|
|
133
|
+
{
|
|
134
|
+
_body = rhs._body;
|
|
135
|
+
return *this;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
ServerChooser(const ServerChooser& rhs) : _body(rhs._body) {}
|
|
139
|
+
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
} //namespace AMPS
|
|
143
|
+
|
|
144
|
+
#endif //_SERVERCHOOSER_H_
|
|
145
|
+
|