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,556 @@
|
|
|
1
|
+
.. index:: delta, incremental message update, Command; delta publish,
|
|
2
|
+
|
|
3
|
+
.. _#ug-delta:
|
|
4
|
+
|
|
5
|
+
.. _delta:
|
|
6
|
+
|
|
7
|
+
Delta Messaging
|
|
8
|
+
===============
|
|
9
|
+
|
|
10
|
+
AMPS delta messaging allows applications to work with only the changed
|
|
11
|
+
parts of a message in the SOW. In high-performance messaging, it's
|
|
12
|
+
important that applications not waste time or bandwidth for messages
|
|
13
|
+
that they aren't going to use.
|
|
14
|
+
|
|
15
|
+
Delta messaging has two distinct aspects:
|
|
16
|
+
|
|
17
|
+
1. *Delta Subscribe* - allows subscribers to receive just the fields that
|
|
18
|
+
are updated within a message.
|
|
19
|
+
|
|
20
|
+
2. *Delta Publish* - allows publishers to update and add fields within a
|
|
21
|
+
message by publishing only the updates into the SOW.
|
|
22
|
+
|
|
23
|
+
While these features are often used together, the features are
|
|
24
|
+
independent. For example, a subscriber can request a regular
|
|
25
|
+
subscription even if a publisher is publishing deltas. Likewise, a
|
|
26
|
+
subscriber can request a delta subscription even if a publisher is
|
|
27
|
+
publishing full messages.
|
|
28
|
+
|
|
29
|
+
To be able to use delta messages, the message type for the subscription
|
|
30
|
+
must support delta messages. All of the included AMPS message types,
|
|
31
|
+
except for ``binary`` and ``struct``, support delta messages, with the
|
|
32
|
+
limitations described in each section below. For custom message types,
|
|
33
|
+
contact the message type implementer to determine whether delta support is
|
|
34
|
+
implemented.
|
|
35
|
+
|
|
36
|
+
These features can often improve performance in environments where
|
|
37
|
+
bandwidth is at a premium. Since these features require AMPS to parse,
|
|
38
|
+
compare, and create messages, these features can consume somewhat more
|
|
39
|
+
CPU on the AMPS server than a simple publish or subscribe, particularly
|
|
40
|
+
for large messages with complex structure (such as deeply-nested XML).
|
|
41
|
+
|
|
42
|
+
Delta Subscribe
|
|
43
|
+
----------------
|
|
44
|
+
|
|
45
|
+
Delta subscribe allows applications to receive only the changed parts of
|
|
46
|
+
a message when an update is made to a record in the SOW. When a delta
|
|
47
|
+
subscription is active, AMPS compares the new state of the message to
|
|
48
|
+
the old state of the message, creates a message for the difference, and
|
|
49
|
+
sends the difference message to subscribers. Using this approach can
|
|
50
|
+
simplify processing on the client side, and can improve performance when
|
|
51
|
+
network bandwidth is the most important constraint.
|
|
52
|
+
|
|
53
|
+
For example, consider a SOW that contains the following messages, with
|
|
54
|
+
the ``order`` field as the key of the SOW topic:
|
|
55
|
+
|
|
56
|
+
.. image:: ../png/delta_original_messages.png
|
|
57
|
+
|
|
58
|
+
Now, consider an update that changes the status of order number 3:
|
|
59
|
+
|
|
60
|
+
.. code-block:: javascript
|
|
61
|
+
|
|
62
|
+
{
|
|
63
|
+
"order":3,
|
|
64
|
+
"customer":"Patrick",
|
|
65
|
+
"status":"pending",
|
|
66
|
+
"qty":1000,
|
|
67
|
+
"ticker":"MSFT"
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
For a regular subscription, subscribers receive the entire message. With
|
|
71
|
+
a delta subscription, subscribers receive just the key of the SOW topic
|
|
72
|
+
and any changed fields:
|
|
73
|
+
|
|
74
|
+
.. image:: ../png/delta_update_message.png
|
|
75
|
+
|
|
76
|
+
This can significantly reduce the amount of network traffic,
|
|
77
|
+
and can also simplify processing for subscribers, since the only
|
|
78
|
+
information sent is the information needed by the subscriber to take
|
|
79
|
+
action on the message.
|
|
80
|
+
|
|
81
|
+
When the ``oof`` option is specified on a delta subscription, AMPS will deliver
|
|
82
|
+
the full message when a previously out-of-focus message comes into focus,
|
|
83
|
+
even if only some of the fields in the message have changed.
|
|
84
|
+
|
|
85
|
+
Using Delta Subscribe
|
|
86
|
+
^^^^^^^^^^^^^^^^^^^^^^
|
|
87
|
+
|
|
88
|
+
Since a client must process delta subscriptions using substantially
|
|
89
|
+
different logic than regular subscriptions, delta subscription is
|
|
90
|
+
implemented as a separate set of AMPS commands rather than simply as an
|
|
91
|
+
option on subscribe commands. AMPS supports two different ways to
|
|
92
|
+
request a delta subscription:
|
|
93
|
+
|
|
94
|
+
.. list-table:: *Delta subscribe commands*
|
|
95
|
+
:header-rows: 1
|
|
96
|
+
|
|
97
|
+
* - Command
|
|
98
|
+
|
|
99
|
+
- Result
|
|
100
|
+
|
|
101
|
+
* - ``delta_subscribe``
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
- Register a delta subscription,
|
|
105
|
+
starting with newly received
|
|
106
|
+
messages.
|
|
107
|
+
|
|
108
|
+
* - ``sow_and_delta_subscribe``
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
- Replay the state of the SOW and
|
|
112
|
+
atomically register a delta
|
|
113
|
+
subscription.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
Applications most commonly use ``sow_and_delta_subscribe`` to receive
|
|
117
|
+
the current state of messages in the SOW before they begin receiving
|
|
118
|
+
deltas.
|
|
119
|
+
|
|
120
|
+
Options for Delta Subscribe
|
|
121
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
122
|
+
|
|
123
|
+
The delta subscribe command accepts several options that are unique to
|
|
124
|
+
delta subscriptions. These options control the precise behavior of delta
|
|
125
|
+
messages:
|
|
126
|
+
|
|
127
|
+
.. list-table:: *Options for delta subscribe*
|
|
128
|
+
:header-rows: 1
|
|
129
|
+
|
|
130
|
+
* - Option
|
|
131
|
+
|
|
132
|
+
- Result
|
|
133
|
+
|
|
134
|
+
* - ``no_empties``
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
- Do not send messages if no data fields
|
|
138
|
+
have been updated.
|
|
139
|
+
|
|
140
|
+
By default, AMPS will publish a delta
|
|
141
|
+
for every publish to the record, even if
|
|
142
|
+
the data has not changed. By specifying
|
|
143
|
+
this option, AMPS will only send messages
|
|
144
|
+
when there is changed data.
|
|
145
|
+
|
|
146
|
+
* - ``no_sowkey``
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
- Do not include the AMPS generated SowKey
|
|
150
|
+
with messages.
|
|
151
|
+
|
|
152
|
+
By default, AMPS includes this key to help
|
|
153
|
+
you identify unique records within the SOW.
|
|
154
|
+
|
|
155
|
+
* - ``send_keys``
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
- Include the SOW key fields in the message.
|
|
159
|
+
|
|
160
|
+
Since the SOW key fields indicate which
|
|
161
|
+
message to update, without this option,
|
|
162
|
+
updates to delta messages will never
|
|
163
|
+
contain the SOW key fields. For views, the
|
|
164
|
+
SOW key fields are the fields specified in
|
|
165
|
+
the ``Grouping`` element.
|
|
166
|
+
|
|
167
|
+
*AMPS accepts this option for backward
|
|
168
|
+
compatibility. As of AMPS 4.0, this option
|
|
169
|
+
is included on delta subscriptions by
|
|
170
|
+
default.*
|
|
171
|
+
|
|
172
|
+
* - ``oof``
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
- AMPS will deliver out of focus messages on
|
|
176
|
+
this subscription.
|
|
177
|
+
|
|
178
|
+
When focus tracking is enabled, AMPS will
|
|
179
|
+
also deliver the full message to a
|
|
180
|
+
subscription when a previously
|
|
181
|
+
out-of-focus message comes into focus.
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
Delta subscriptions also support the options provided for regular
|
|
186
|
+
subscriptions, including the timestamp option and the conflation options
|
|
187
|
+
described in the section on :ref:`#ug-pub-sub-conflation`.
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
Identifying Changed Records
|
|
191
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
192
|
+
|
|
193
|
+
When an application that uses delta subscriptions receives a message,
|
|
194
|
+
that message can either be a new record or an update to an existing
|
|
195
|
+
record. AMPS offers two strategies for an application to tell whether
|
|
196
|
+
the record is a new record or an existing record, and identify which
|
|
197
|
+
record has changed if the message is an update to an existing record.
|
|
198
|
+
|
|
199
|
+
The two basic approaches are as follows:
|
|
200
|
+
|
|
201
|
+
1. By default, each message delivered through a delta subscription
|
|
202
|
+
contains a SowKey header field. This field is the identifier that
|
|
203
|
+
AMPS assigns to track a distinct record in the SOW. If the
|
|
204
|
+
application has previously received a SowKey with that value, then
|
|
205
|
+
the new message is an update to the record with that SowKey value. If
|
|
206
|
+
the application has not previously received a SowKey with that value,
|
|
207
|
+
then the new message contains a new record.
|
|
208
|
+
|
|
209
|
+
2. Delta messages can also contain the key fields from the SOW in the
|
|
210
|
+
body of the message. This is controlled by the ``send_keys`` option
|
|
211
|
+
on the subscription, which is always enabled as of AMPS 4.0. With
|
|
212
|
+
this approach, the application parses the body of the message to find
|
|
213
|
+
the key. If the application has previously received the key, then the
|
|
214
|
+
message is an update to that existing record. Otherwise, the message
|
|
215
|
+
contains a new record.
|
|
216
|
+
|
|
217
|
+
In either case, AMPS delivers the information the application needs to
|
|
218
|
+
determine if the record is new or changed. The application chooses how
|
|
219
|
+
to interpret that information, and what actions to take based on the
|
|
220
|
+
changes to the record.
|
|
221
|
+
|
|
222
|
+
AMPS also supports out-of-focus notification for delta subscriptions, as
|
|
223
|
+
described in :ref:`#ug-oof`. If your
|
|
224
|
+
application needs to know when a
|
|
225
|
+
record is deleted, expires, or no longer matches a subscription, you can
|
|
226
|
+
use out-of-focus messages to be notified.
|
|
227
|
+
|
|
228
|
+
Conflated Subscriptions and Delta Subscribe
|
|
229
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
230
|
+
|
|
231
|
+
AMPS provides subscription conflation on delta subscriptions. When
|
|
232
|
+
conflation is enabled, each delta message during the conflation interval
|
|
233
|
+
is merged into the conflated message. The message that is delivered is
|
|
234
|
+
the merge of all of the deltas that arrived during the conflation
|
|
235
|
+
interval.
|
|
236
|
+
|
|
237
|
+
Since AMPS combines successive delta messages into a single update, a
|
|
238
|
+
delta subscription that uses conflation may receive values that are
|
|
239
|
+
identical to the previous values. For example, consider the following
|
|
240
|
+
record in a SOW that uses ``/id`` as the key:
|
|
241
|
+
|
|
242
|
+
.. code-block:: javascript
|
|
243
|
+
|
|
244
|
+
{
|
|
245
|
+
"id": 99,
|
|
246
|
+
"status":"open",
|
|
247
|
+
"notes":"none",
|
|
248
|
+
"xref":82
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
Assume that the following updates to the record are published during the
|
|
252
|
+
conflation interval:
|
|
253
|
+
|
|
254
|
+
.. code-block:: javascript
|
|
255
|
+
|
|
256
|
+
{"id": 99, "status":"questioned", "notes":"none", "xref":82}
|
|
257
|
+
{"id": 99, "status":"questioned", "notes":"jcarlo hold", "xref":82}
|
|
258
|
+
{"id": 99, "status":"cleared", "notes":"none", "xref":82}
|
|
259
|
+
{"id": 99, "status":"open", "notes":"none", "xref":82}
|
|
260
|
+
|
|
261
|
+
At the end of the conflation interval, the subscription will receive the
|
|
262
|
+
delta message:
|
|
263
|
+
|
|
264
|
+
.. code-block:: javascript
|
|
265
|
+
|
|
266
|
+
{
|
|
267
|
+
"id": 99,
|
|
268
|
+
"status":"open",
|
|
269
|
+
"notes":"none"
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
The ``/id`` field is included because that field is the key of the SOW,
|
|
273
|
+
and all of the delta messages produced during the conflation interval
|
|
274
|
+
contained that key. The ``/status`` and ``/notes`` fields are included
|
|
275
|
+
because there were changes to these values during the conflation
|
|
276
|
+
interval. The delta messages produced during the conflation interval
|
|
277
|
+
contained changed values, so the merged update contains those fields and
|
|
278
|
+
the state of the values at the end of the conflation interval. The
|
|
279
|
+
``/xref`` field is not included, because none of the delta messages
|
|
280
|
+
produced during the conflation interval contained that field.
|
|
281
|
+
|
|
282
|
+
Select Lists and Delta Subscribe
|
|
283
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
284
|
+
|
|
285
|
+
When a ``delta_subscribe`` or ``sow_and_delta_subscribe`` command provides a
|
|
286
|
+
select list and the ``no_empties`` option, only changes to fields included in the
|
|
287
|
+
select list will prompt a publish to the client. Changes to fields that the subscriber does not receive
|
|
288
|
+
do not produce a publish.
|
|
289
|
+
|
|
290
|
+
Delta Subscribe Support
|
|
291
|
+
~~~~~~~~~~~~~~~~~~~~~~~
|
|
292
|
+
|
|
293
|
+
To produce delta messages, the message type and the topic must both
|
|
294
|
+
support delta subscribe. When this is not the case, AMPS accepts the
|
|
295
|
+
subscription, but provides full messages rather than delta messages.
|
|
296
|
+
|
|
297
|
+
All of the basic message types provided with AMPS support delta
|
|
298
|
+
subscribe with the exception of the ``binary`` message type, ``struct`` message
|
|
299
|
+
types, and protobuf message types that use protobuf version 3. Composite message
|
|
300
|
+
types support delta subscribe if they use the ``composite-local`` definition,
|
|
301
|
+
as described in the section on :ref:`Composite Message Types <#ug-messagetypes-composite>`.
|
|
302
|
+
|
|
303
|
+
AMPS queues do not support delta subscribe. AMPS accepts a delta
|
|
304
|
+
subscription for a queue, but produces full messages from the queue.
|
|
305
|
+
|
|
306
|
+
Bookmark subscriptions do not support delta subscribe. AMPS does not accept
|
|
307
|
+
a delta bookmark subscription.
|
|
308
|
+
|
|
309
|
+
All other AMPS topic types that are based on a SOW support delta
|
|
310
|
+
subscribe. AMPS topics that do not use a SOW do not support delta
|
|
311
|
+
subscribe, and instead produce full messages.
|
|
312
|
+
|
|
313
|
+
Multiple Subscriptions and Delta Subscribe
|
|
314
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
315
|
+
|
|
316
|
+
When a single connection to AMPS has multiple subscriptions, AMPS sends
|
|
317
|
+
the message to that client once, with information on the set of
|
|
318
|
+
subscriptions that match. AMPS sends a message that will include the
|
|
319
|
+
requested data for all of the matching subscriptions. For example, if a
|
|
320
|
+
message matches one subscription that requests full messages and another
|
|
321
|
+
subscription from the same connection that requests deltas, both
|
|
322
|
+
subscriptions will receive a full message. If your application depends
|
|
323
|
+
on receiving deltas, take care that the application does not issue
|
|
324
|
+
non-delta subscriptions for the same set of messages on the same
|
|
325
|
+
connection.
|
|
326
|
+
|
|
327
|
+
Delta Publish
|
|
328
|
+
-------------
|
|
329
|
+
|
|
330
|
+
Delta publish allows publishers to update a message in the SOW by
|
|
331
|
+
providing just the key fields for the SOW and the data to update. When
|
|
332
|
+
AMPS receives a delta publish, AMPS parses the incoming message and the
|
|
333
|
+
existing messages, identifies changed fields, and creates an updated
|
|
334
|
+
message that merges changed fields from the delta publish into the
|
|
335
|
+
existing message. If there is no existing message, the result of a delta
|
|
336
|
+
publish is the same as if the update were merged into an empty message:
|
|
337
|
+
the fields in the delta publish, and only those fields, are present
|
|
338
|
+
in the result.
|
|
339
|
+
|
|
340
|
+
This can be particularly useful in cases where more than one worker acts
|
|
341
|
+
on a record. For example, an order fulfillment application may need to
|
|
342
|
+
check inventory, to ensure that the order is available, and check credit
|
|
343
|
+
to be sure that the customer is approved for the order. These checks may
|
|
344
|
+
be run in parallel, by different worker processes. With delta publish,
|
|
345
|
+
each worker process updates the part of the record that the worker is
|
|
346
|
+
responsible for, without affecting any other part of the record. Delta
|
|
347
|
+
publish saves the worker from having to query the record and construct a
|
|
348
|
+
full update, and eliminates the possibility of incorrect updates when
|
|
349
|
+
two workers try to update the record at the same time.
|
|
350
|
+
|
|
351
|
+
For example, consider an order published to the SOW:
|
|
352
|
+
|
|
353
|
+
.. code-block:: javascript
|
|
354
|
+
|
|
355
|
+
{
|
|
356
|
+
"id":735,
|
|
357
|
+
"customer":"Patrick",
|
|
358
|
+
"item":90123,
|
|
359
|
+
"qty":1000,
|
|
360
|
+
"state":"new"
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
Using delta publishing, two independent workers can operate on the
|
|
364
|
+
record in parallel, safely making updates and preparing the record for a
|
|
365
|
+
final fulfillment process.
|
|
366
|
+
|
|
367
|
+
The inventory worker process is responsible for checking inventory. This
|
|
368
|
+
worker subscribes to messages where
|
|
369
|
+
the ``/state = 'new' AND /inventory IS NULL AND /credit IS NULL``. This
|
|
370
|
+
process receives the new message and verifies that the inventory system
|
|
371
|
+
contains 1000 of the item # 90123. When it verifies this, it uses delta
|
|
372
|
+
publish to publish the following update:
|
|
373
|
+
|
|
374
|
+
.. code-block:: javascript
|
|
375
|
+
|
|
376
|
+
{
|
|
377
|
+
"id":735,
|
|
378
|
+
"inventory":"available"
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
The credit worker process verifies that the customer is permitted to
|
|
382
|
+
bill for the total amount. Like the inventory worker, this worker
|
|
383
|
+
subscribes to messages where the
|
|
384
|
+
``/state = 'new' and /inventory IS NULL and /credit IS NULL``. This
|
|
385
|
+
process receives the new message and verifies that the customer is
|
|
386
|
+
allowed to bill the total value of the order. When the check is
|
|
387
|
+
complete, the credit worker publishes this message:
|
|
388
|
+
|
|
389
|
+
.. code-block:: javascript
|
|
390
|
+
|
|
391
|
+
{
|
|
392
|
+
"id":735,
|
|
393
|
+
"credit":"approved"
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
After both of these processes run, the SOW contains the following
|
|
397
|
+
record:
|
|
398
|
+
|
|
399
|
+
.. code-block:: javascript
|
|
400
|
+
|
|
401
|
+
{
|
|
402
|
+
"id": 735,
|
|
403
|
+
"credit": "approved",
|
|
404
|
+
"inventory": "available",
|
|
405
|
+
"customer": "Patrick",
|
|
406
|
+
"item": 90123,
|
|
407
|
+
"qty": 1000,
|
|
408
|
+
"state": "new"
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
The fulfillment worker would subscribe to messages where
|
|
412
|
+
``/state = 'new' AND /inventory IS NOT NULL AND /credit IS NOT NULL``.
|
|
413
|
+
|
|
414
|
+
Using Delta Publish
|
|
415
|
+
^^^^^^^^^^^^^^^^^^^
|
|
416
|
+
|
|
417
|
+
Since delta messages must be processed and merged into the existing
|
|
418
|
+
SOW record, AMPS provides a distinct command for delta publish.
|
|
419
|
+
|
|
420
|
+
.. list-table:: *Delta publish command*
|
|
421
|
+
:header-rows: 1
|
|
422
|
+
|
|
423
|
+
* - Command
|
|
424
|
+
|
|
425
|
+
- Result
|
|
426
|
+
|
|
427
|
+
* - ``delta_publish``
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
- Publish a delta message. If no record exists in the
|
|
431
|
+
SOW, add the message to the SOW. If a record exists
|
|
432
|
+
in the SOW, merge the data from this record into the
|
|
433
|
+
existing record.
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
Understanding Delta Publish
|
|
437
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
438
|
+
|
|
439
|
+
When AMPS receives a delta publish request, AMPS first performs any preprocessing
|
|
440
|
+
or enrichment specified for the incoming message. AMPS then fully parses both
|
|
441
|
+
the incoming message and the destination message, and then merges the contents
|
|
442
|
+
of the incoming update into the existing message. The mechanism that
|
|
443
|
+
merges the messages is message-type independent, and does not rely on
|
|
444
|
+
the syntax or semantics of any particular message type.
|
|
445
|
+
|
|
446
|
+
The message is merged before the message is persisted to the SOW,
|
|
447
|
+
recorded in the transaction log, replicated, or delivered to subscribers.
|
|
448
|
+
|
|
449
|
+
Since delta publish uses a very simple, compact syntax -- a partial message
|
|
450
|
+
-- for updates, AMPS makes certain assumptions about the intent of an update:
|
|
451
|
+
|
|
452
|
+
1. AMPS replaces the contents of the existing message based on the
|
|
453
|
+
parsed identifiers in the update. An update to an anonymous element
|
|
454
|
+
or the root level of a subdocument is a *full replacement* of that
|
|
455
|
+
value.
|
|
456
|
+
|
|
457
|
+
For example, consider the following JSON document::
|
|
458
|
+
|
|
459
|
+
{"id":42, "contents":{"packages":[{"box":"chocolates"},
|
|
460
|
+
{"bowl":"noodles"}]}}
|
|
461
|
+
|
|
462
|
+
An update to the ``packages`` field of the document *replaces* the
|
|
463
|
+
subdocument, so providing the following ``delta_publish``::
|
|
464
|
+
|
|
465
|
+
{"id":42, "contents":{"packages":[{"basket":"eggs"}]}}
|
|
466
|
+
|
|
467
|
+
Replaces the previous value of ``packages``, and produces the message::
|
|
468
|
+
|
|
469
|
+
{"id":42, "contents":{"packages":[{"basket":"eggs"}]}}
|
|
470
|
+
|
|
471
|
+
2. A missing field in a delta publish means that the content
|
|
472
|
+
of that field is unchanged.
|
|
473
|
+
|
|
474
|
+
Since AMPS treats the absence of a field in a delta update to
|
|
475
|
+
mean that the previous value is unchanged, a ``delta_publish``
|
|
476
|
+
cannot be used to remove fields from a document.
|
|
477
|
+
|
|
478
|
+
For example, consider the following JSON document::
|
|
479
|
+
|
|
480
|
+
{"id":42", "flowers":"roses"}
|
|
481
|
+
|
|
482
|
+
A ``delta_publish`` that attempts to remove the ``flowers`` field
|
|
483
|
+
by simply removing it will be treated as though there is no update
|
|
484
|
+
to that field. In other words, a ``delta_publish`` of::
|
|
485
|
+
|
|
486
|
+
{"id":42}
|
|
487
|
+
|
|
488
|
+
will produce no change to the ``flowers`` field, and result in a
|
|
489
|
+
document of::
|
|
490
|
+
|
|
491
|
+
{"id":42, "flowers":"roses"}
|
|
492
|
+
|
|
493
|
+
To remove a field from a message, republish the full message.
|
|
494
|
+
|
|
495
|
+
3. AMPS does not evaluate whether a field has a different value than
|
|
496
|
+
the previous message or has a republish of the previous value
|
|
497
|
+
when processing a ``delta_publish`` -- any field present in the
|
|
498
|
+
delta publish will replace the corresponding field in the existing
|
|
499
|
+
message.
|
|
500
|
+
|
|
501
|
+
For example, consider an application that advertises whether
|
|
502
|
+
a given system is accepting requests with messages along the
|
|
503
|
+
lines of::
|
|
504
|
+
|
|
505
|
+
{"systemId":"A34-Astro", "status":"available",
|
|
506
|
+
"commandAccepted":["print","scan","fax"]}
|
|
507
|
+
|
|
508
|
+
Now, the system sends a delta publish update that does not change the status::
|
|
509
|
+
|
|
510
|
+
{"systemId":"A34-Astr", "status":"available"}
|
|
511
|
+
|
|
512
|
+
Even though no value in the message has changed, the publish is still
|
|
513
|
+
processed, and the publish will still be delivered to subscribers.
|
|
514
|
+
The fact that it replaces an existing value with the same value
|
|
515
|
+
does not matter for AMPS. This is still considered an update. (An individual
|
|
516
|
+
subscriber can choose not to receive updates that do not change the value of
|
|
517
|
+
a field by using the ``no_empties`` option with a delta subscription.)
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
Delta Publish Support
|
|
521
|
+
~~~~~~~~~~~~~~~~~~~~~~
|
|
522
|
+
|
|
523
|
+
To accept delta publishes, the message type and the topic must both
|
|
524
|
+
support delta publish. When this is not the case, AMPS accepts the
|
|
525
|
+
publish, but may not produce the expected results.
|
|
526
|
+
|
|
527
|
+
All of the basic message types provided with AMPS support delta publish
|
|
528
|
+
with the exception of the ``binary`` message type and protobuf message types
|
|
529
|
+
that use protobuf version 3. Composite message types support delta publish
|
|
530
|
+
if they use the ``composite-local`` definition, as described in the section
|
|
531
|
+
on composite message types. Types that do not support delta publish, produce
|
|
532
|
+
the full, literal message provided with a delta publish command (rather than
|
|
533
|
+
merging the publish into the previous state of the message).
|
|
534
|
+
|
|
535
|
+
When a topic uses the ``composite-local`` message type, parts of the
|
|
536
|
+
composite that are provided as empty (that is, zero-length) are
|
|
537
|
+
considered to be unchanged, and the merged message contains the existing
|
|
538
|
+
contents of that part. This provides a convenient way to update only one
|
|
539
|
+
part of a composite message, without having to republish data that has
|
|
540
|
+
not changed. For example, a ``composite-local`` type contains a JSON
|
|
541
|
+
part and a binary part can modify the JSON part without having to
|
|
542
|
+
republish the full binary part.
|
|
543
|
+
|
|
544
|
+
AMPS queues support delta publish to an underlying topic, if that
|
|
545
|
+
underlying topic maintains a SOW. The merged message is provided to the
|
|
546
|
+
AMPS queue.
|
|
547
|
+
|
|
548
|
+
All other AMPS topic types that are based on a SOW and accept publish
|
|
549
|
+
commands support delta publish. AMPS topics that do not use a SOW do not
|
|
550
|
+
support delta publish, so publishing a delta message to those topics
|
|
551
|
+
produces the full, literal message from the publish command rather than
|
|
552
|
+
a merged message. Without a SOW configured for the topic, AMPS does not
|
|
553
|
+
track the current value of a message, and therefore does not have a way
|
|
554
|
+
to merge the publish into an existing message.
|
|
555
|
+
|
|
556
|
+
|