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,374 @@
|
|
|
1
|
+
|
|
2
|
+
4. Subscriptions
|
|
3
|
+
================
|
|
4
|
+
|
|
5
|
+
Messages published to a topic on an AMPS server are available to other
|
|
6
|
+
clients via a subscription. Before messages can be received, a client
|
|
7
|
+
must subscribe to one or more topics on the AMPS server so that the
|
|
8
|
+
server will begin sending messages to the client. The server will
|
|
9
|
+
continue sending messages to the client until the client unsubscribes,
|
|
10
|
+
or the client disconnects. With content filtering, the AMPS server will
|
|
11
|
+
limit the messages sent to only those messages that match a
|
|
12
|
+
client-supplied filter. In this chapter, you will learn how to
|
|
13
|
+
subscribe, unsubscribe, and supply filters for messages using the AMPS
|
|
14
|
+
Python client.
|
|
15
|
+
|
|
16
|
+
Subscribing to a Topic
|
|
17
|
+
----------------------
|
|
18
|
+
|
|
19
|
+
The AMPS client makes it simple to subscribe to a topic. You call
|
|
20
|
+
``client.subscribe()`` with the topic to subscribe to and the parameters
|
|
21
|
+
for the subscription. The client submits the subscription to AMPS and
|
|
22
|
+
returns a ``MessageStream`` that you can iterate over to receive the
|
|
23
|
+
messages from the subscription. Below is a short example:
|
|
24
|
+
|
|
25
|
+
.. code:: python
|
|
26
|
+
|
|
27
|
+
from AMPS import Client
|
|
28
|
+
|
|
29
|
+
# Here, we create a Client object and connect to an AMPS server.
|
|
30
|
+
client = Client("test")
|
|
31
|
+
client.connect("tcp://127.0.0.1:9007/amps/json")
|
|
32
|
+
client.logon()
|
|
33
|
+
|
|
34
|
+
# Here we subscribe to the topic messages. We do not provide a filter, so AMPS
|
|
35
|
+
# does not content-filter the topic. Although we don't use the object explicitly
|
|
36
|
+
# here, the subscribe method returns a MessageStream object that we iterate over.
|
|
37
|
+
# If, at any time, we no longer need to subscribe, we can break out of the loop.
|
|
38
|
+
# When there are no more active references to the MessageStream, the client sends
|
|
39
|
+
# an unsubscribe command to AMPS and stops receiving messages.
|
|
40
|
+
for message in client.subscribe("messages"):
|
|
41
|
+
|
|
42
|
+
# Within the loop, we process the message. In this case, we simply print the
|
|
43
|
+
# contents of the message.
|
|
44
|
+
print(message.get_data())
|
|
45
|
+
|
|
46
|
+
**Example 4.1:** *Basic AMPS subscription*
|
|
47
|
+
|
|
48
|
+
AMPS creates a background thread that receives messages and copies them
|
|
49
|
+
into the ``MessageStream`` that you iterate over. This means that the
|
|
50
|
+
client application as a whole can continue to receive messages while you
|
|
51
|
+
are doing processing work.
|
|
52
|
+
|
|
53
|
+
The simple method described above is provided for convenience. The AMPS
|
|
54
|
+
Python client provides convenience methods for the most common form of
|
|
55
|
+
AMPS commands. The client also provides an interface that allows you to
|
|
56
|
+
have precise control over the command. Using that interface, the example
|
|
57
|
+
above becomes:
|
|
58
|
+
|
|
59
|
+
.. code:: python
|
|
60
|
+
|
|
61
|
+
from AMPS import Client
|
|
62
|
+
from AMPS import Command
|
|
63
|
+
|
|
64
|
+
# Here, we create a Client object and connect to an AMPS server.
|
|
65
|
+
client = Client("test")
|
|
66
|
+
client.connect("tcp://127.0.0.1:9007/amps/json")
|
|
67
|
+
client.logon()
|
|
68
|
+
|
|
69
|
+
# Here, we create a Command object for the subscribe command, specifying the topic
|
|
70
|
+
# messages. We do not provide a filter, so AMPS does not content-filter the
|
|
71
|
+
# subscription. Although we don't use the object explicitly here, the execute
|
|
72
|
+
# method returns a MessageStream object that we iterate over. If, at any time, we
|
|
73
|
+
# no longer need to subscribe, we can break out of the loop. When we break out of
|
|
74
|
+
# the loop, there are no more references to the MessageStream and the AMPS client
|
|
75
|
+
# sends an unsubscribe message to AMPS.
|
|
76
|
+
for message in client.execute(Command("subscribe").set_topic("messages")):
|
|
77
|
+
# Within the body of the loop, we can process the message as we need to. In this
|
|
78
|
+
# case, we simply print the contents of the message.
|
|
79
|
+
print(message.get_data())
|
|
80
|
+
|
|
81
|
+
**Example 4.2:** *Subscribing to a topic using a command*
|
|
82
|
+
|
|
83
|
+
The ``Command`` interface allows you to precisely customize the commands
|
|
84
|
+
you send to AMPS. For flexibility and ease of maintenance, 60East
|
|
85
|
+
recommends using the ``Command`` interface (rather than a named method)
|
|
86
|
+
for any command that will receive messages from AMPS. For publishing
|
|
87
|
+
messages, there can be a slight performance advantage to using the named
|
|
88
|
+
commands where possible.
|
|
89
|
+
|
|
90
|
+
Asynchronous Message Processing Interface
|
|
91
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
92
|
+
|
|
93
|
+
The AMPS Python client also supports an interface that allows you to
|
|
94
|
+
process messages asynchronously. In this case, you add a message handler
|
|
95
|
+
to the method call. The client returns the command ID of the subscribe
|
|
96
|
+
command once the server has acknowledged that the command has been
|
|
97
|
+
processed. As messages arrive, the client calls your message handler
|
|
98
|
+
directly on the background thread. This can be an advantage for some
|
|
99
|
+
applications. For example, if your application is highly multithreaded
|
|
100
|
+
and copies message data to a work queue processed by multiple threads,
|
|
101
|
+
there may be a performance benefit to enqueuing work directly
|
|
102
|
+
from the background thread. See
|
|
103
|
+
:ref:`Understanding Threading and Message Handlers <#understanding-threading-section>`
|
|
104
|
+
for a discussion of threading considerations, including considerations for
|
|
105
|
+
message handlers.
|
|
106
|
+
|
|
107
|
+
Below is a short example (error handling and connection details are
|
|
108
|
+
omitted for brevity):
|
|
109
|
+
|
|
110
|
+
.. code:: python
|
|
111
|
+
|
|
112
|
+
from AMPS import Client
|
|
113
|
+
from AMPS import Command
|
|
114
|
+
|
|
115
|
+
...
|
|
116
|
+
|
|
117
|
+
# Here, we create a Client object and connect to an AMPS server.
|
|
118
|
+
client = Client("exampleSubscriber")
|
|
119
|
+
client.connect("tcp://127.0.0.1:9007/amps/json")
|
|
120
|
+
client.logon()
|
|
121
|
+
|
|
122
|
+
def on_message_printer(message):
|
|
123
|
+
print(message.get_data())
|
|
124
|
+
|
|
125
|
+
# Here, we create a subscription with the following parameters:
|
|
126
|
+
subscriptionid = client.execute_async(
|
|
127
|
+
Command("subscribe").set_topic("messages"),
|
|
128
|
+
on_message_printer
|
|
129
|
+
)
|
|
130
|
+
# on_message_printer is a function that acts as our message handler. When a
|
|
131
|
+
# message is received, this function is invoked, and in this case, the get_data()
|
|
132
|
+
# method from message is printed to the screen. Message is of type AMPS.Message.
|
|
133
|
+
|
|
134
|
+
**Example 4.3:** *Subscribing to a topic with asynchronous processing*
|
|
135
|
+
|
|
136
|
+
Using an Instance Method as a Message Handler
|
|
137
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
138
|
+
|
|
139
|
+
One of the more common ways of providing a message handler is as an
|
|
140
|
+
instance method on an object that maintains message state. It's simple
|
|
141
|
+
to provide a handler with this capability, as shown below:
|
|
142
|
+
|
|
143
|
+
.. code:: python
|
|
144
|
+
|
|
145
|
+
# Define a class that saves state and
|
|
146
|
+
# handles messages.
|
|
147
|
+
class StatefulHandler:
|
|
148
|
+
# Initialize self with state to save
|
|
149
|
+
def __init__(self, name):
|
|
150
|
+
self.name_ = name
|
|
151
|
+
|
|
152
|
+
# Use state from this instance while handling
|
|
153
|
+
# the message.
|
|
154
|
+
def __call__(self, message):
|
|
155
|
+
print ("%s got %s" % (self.name_, message.get_data()))
|
|
156
|
+
|
|
157
|
+
**Example 4.4:** *Providing a message handler*
|
|
158
|
+
|
|
159
|
+
You can then provide an instance of the handler directly wherever a
|
|
160
|
+
message handler is required, as shown below:
|
|
161
|
+
|
|
162
|
+
.. code:: python
|
|
163
|
+
|
|
164
|
+
c.subscribe(StatefulHandler("An instance"), "topic")
|
|
165
|
+
|
|
166
|
+
Unsubscribing
|
|
167
|
+
-------------
|
|
168
|
+
|
|
169
|
+
The AMPS server continues a subscription until the client explicitly
|
|
170
|
+
ends the subscription (that is, *unsubscribes*) or until the connection
|
|
171
|
+
to the client is closed.
|
|
172
|
+
|
|
173
|
+
With a ``MessageStream``, AMPS automatically unsubscribes to the topic
|
|
174
|
+
when there are no more references to the ``MessageStream``. You can also
|
|
175
|
+
call the ``close()`` method on the ``MessageStream`` object to remove
|
|
176
|
+
the subscription.
|
|
177
|
+
|
|
178
|
+
With asynchronous message processing, when a subscription is
|
|
179
|
+
successfully made, messages will begin flowing to the message handler
|
|
180
|
+
function and the ``subscribe()`` or ``execute_async()`` call returns a
|
|
181
|
+
string that serves as the identifier for this subscription. A ``Client`` can
|
|
182
|
+
have any number of active subscriptions, and this subscription ID is how
|
|
183
|
+
AMPS designates messages intended for this subscription. To unsubscribe,
|
|
184
|
+
we simply call ``unsubscribe`` with the subscription identifier, as shown
|
|
185
|
+
below:
|
|
186
|
+
|
|
187
|
+
.. code:: python
|
|
188
|
+
|
|
189
|
+
client = Client("exampleClient")
|
|
190
|
+
|
|
191
|
+
# Register an asynchronous subscription
|
|
192
|
+
subId = client.execute_async(
|
|
193
|
+
Command("subscribe").set_topic("messages"),
|
|
194
|
+
on_message_printer
|
|
195
|
+
)
|
|
196
|
+
|
|
197
|
+
...
|
|
198
|
+
|
|
199
|
+
# when the program is done with the subscription, unsubscribe
|
|
200
|
+
client.unsubscribe(subId)
|
|
201
|
+
|
|
202
|
+
**Example 4.5:** *Unsubscribing from a topic*
|
|
203
|
+
|
|
204
|
+
In this example, we use the ``execute_async()`` method to create a subscription
|
|
205
|
+
to the ``messages`` topic. When our application is done listening to this
|
|
206
|
+
topic, it unsubscribes (on the last line) by passing in the subscription
|
|
207
|
+
identifier returned by the ``subscribe`` command. After the subscription
|
|
208
|
+
is removed, no more messages will flow into our ``on_message_printer``
|
|
209
|
+
function.
|
|
210
|
+
|
|
211
|
+
When an application calls ``unsubscribe()``, the client sends an
|
|
212
|
+
explicit ``unsubscribe`` command to AMPS. The AMPS server removes that
|
|
213
|
+
subscription from the set of subscriptions for the client, and stops
|
|
214
|
+
sending messages for that subscription. On the client side, the client
|
|
215
|
+
unregisters the subscription so that the ``MessageStream`` or
|
|
216
|
+
message handler for that subscription will no longer receive
|
|
217
|
+
messages for that subscription.
|
|
218
|
+
|
|
219
|
+
Notice that calling ``unsubscribe`` does not destroy messages that
|
|
220
|
+
the server has already sent to the client. If there are messages on
|
|
221
|
+
the way to the client for this subscription, the AMPS client must
|
|
222
|
+
consume those messages. If a ``last_chance_message_handler`` is registered,
|
|
223
|
+
the handler will receive the messages. Otherwise, they will be
|
|
224
|
+
discarded since no message handler matches the subscription ID on
|
|
225
|
+
the message.
|
|
226
|
+
|
|
227
|
+
.. _#understanding-threading-section:
|
|
228
|
+
|
|
229
|
+
.. include:: ./understanding-threading-section.inc
|
|
230
|
+
Understanding Messages
|
|
231
|
+
----------------------
|
|
232
|
+
|
|
233
|
+
So far, we have seen that subscribing to a topic involves working with
|
|
234
|
+
objects of ``AMPS.Message`` type. A ``Message`` represents a single
|
|
235
|
+
message to or from an AMPS server. Messages are received or sent for
|
|
236
|
+
every client/server operation in AMPS.
|
|
237
|
+
|
|
238
|
+
Header Properties
|
|
239
|
+
^^^^^^^^^^^^^^^^^^
|
|
240
|
+
|
|
241
|
+
There are two parts of each message in AMPS: a set of headers that
|
|
242
|
+
provide metadata for the message, and the data that the message
|
|
243
|
+
contains. Every AMPS message has one or more header fields defined. The
|
|
244
|
+
precise headers present depend on the type and context of the message.
|
|
245
|
+
There are many possible fields in any given message, but only a few are
|
|
246
|
+
used for any given message. For each header field, the ``Message`` class
|
|
247
|
+
contains a distinct property that allows for retrieval and setting of
|
|
248
|
+
that field. For example, the ``Message.get_command_id()`` function
|
|
249
|
+
corresponds to the ``commandId`` header field, the
|
|
250
|
+
``Message.get_batch_size()`` function corresponds to the ``BatchSize``
|
|
251
|
+
header field, and so on. For more information on these header fields,
|
|
252
|
+
consult the *AMPS User Guide* and *AMPS Command Reference*.
|
|
253
|
+
|
|
254
|
+
To work with header fields, a ``Message`` contains
|
|
255
|
+
``get_xxx()``/``set_xxx()`` methods corresponding to the header fields,
|
|
256
|
+
as well as a number of ``getXXX()``/``setXXX()`` methods for
|
|
257
|
+
compatibility with previous implementations of the AMPS Python client.
|
|
258
|
+
60East does not recommend attempting to parse header fields from the raw
|
|
259
|
+
data of the message.
|
|
260
|
+
|
|
261
|
+
get_data() method
|
|
262
|
+
^^^^^^^^^^^^^^^^^
|
|
263
|
+
|
|
264
|
+
Access to the data section of a message is provided via the
|
|
265
|
+
``get_data()`` method. The ``data`` property will contain the unparsed
|
|
266
|
+
data of the message. Your application code parses and works with the
|
|
267
|
+
data.
|
|
268
|
+
|
|
269
|
+
The AMPS Python client contains a collection of helper classes for
|
|
270
|
+
working with message types that are specific to AMPS (for example, FIX,
|
|
271
|
+
NVFIX, and AMPS composite message types). For message types that are
|
|
272
|
+
widely used, such as JSON or XML, you can use the standard Python
|
|
273
|
+
facilities or the library you typically use in your environment.
|
|
274
|
+
|
|
275
|
+
Advanced Messaging Support
|
|
276
|
+
----------------------------
|
|
277
|
+
|
|
278
|
+
AMPS has two powerful features that allow selective subscription to
|
|
279
|
+
topics using pattern matching and message content using content filtering.
|
|
280
|
+
Pattern matching provides the ability to receive messages from multiple
|
|
281
|
+
topics using a single pattern, while using a filter ensures that you only
|
|
282
|
+
receive messages where the content of the message matches your filter,
|
|
283
|
+
reducing traffic on the network.
|
|
284
|
+
|
|
285
|
+
Regex Subscriptions
|
|
286
|
+
^^^^^^^^^^^^^^^^^^^
|
|
287
|
+
|
|
288
|
+
Regular Expression (Regex) subscriptions allow a regular expression to
|
|
289
|
+
be supplied in the place of a topic name. When you supply a regular
|
|
290
|
+
expression, it is as if a subscription is made to every topic that
|
|
291
|
+
matches your expression, including topics that do not yet exist at the
|
|
292
|
+
time of creating the subscription.
|
|
293
|
+
|
|
294
|
+
To use a regular expression, simply supply the regular expression in
|
|
295
|
+
place of the topic name in the ``subscribe()`` call. For example:
|
|
296
|
+
|
|
297
|
+
.. code:: python
|
|
298
|
+
|
|
299
|
+
def message_handler(msg):
|
|
300
|
+
topic = msg.get_topic()
|
|
301
|
+
|
|
302
|
+
subscription_id = client.subscribe(
|
|
303
|
+
message_handler,
|
|
304
|
+
"orders.*"
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
**Example 4.6:** *Regex topic subscription*
|
|
308
|
+
|
|
309
|
+
In this example, messages on topics ``orders-north-america`` and
|
|
310
|
+
``orders-europe`` would match the regular expression, and those messages
|
|
311
|
+
would all be sent to our ``message_handler`` function. As in the
|
|
312
|
+
example, you can use the ``get_topic()`` method to determine the actual
|
|
313
|
+
topic of the message sent to the function.
|
|
314
|
+
|
|
315
|
+
Content Filtering
|
|
316
|
+
^^^^^^^^^^^^^^^^^
|
|
317
|
+
|
|
318
|
+
One of the most powerful features of AMPS is content filtering. With
|
|
319
|
+
content filtering, filters based on message content are applied at the
|
|
320
|
+
server so that your application and the network are not utilized by
|
|
321
|
+
messages that are not relevent to your application. For example, if
|
|
322
|
+
your application is only displaying messages from a particular user, you
|
|
323
|
+
can send a content filter to the server so that only messages from that
|
|
324
|
+
particular user are sent to the client.
|
|
325
|
+
|
|
326
|
+
To apply a content filter to a subscription, simply pass it into the
|
|
327
|
+
``client.subscribe()`` call or use the ``set_filter`` method to add a
|
|
328
|
+
filter to the ``Command``:
|
|
329
|
+
|
|
330
|
+
.. code:: python
|
|
331
|
+
|
|
332
|
+
for message in client.subscribe(
|
|
333
|
+
"letters",
|
|
334
|
+
"/sender='mom'",
|
|
335
|
+
5000
|
|
336
|
+
):
|
|
337
|
+
print("Mom says: %s" % message.get_data())
|
|
338
|
+
|
|
339
|
+
**Example 4.7:** *Using content filtering*
|
|
340
|
+
|
|
341
|
+
.. include:: ./content-filtering-info.inc
|
|
342
|
+
.. include:: ./filter-replace.inc
|
|
343
|
+
.. code-block:: python
|
|
344
|
+
|
|
345
|
+
sub_cmd = AMPS.Command("sow_and_subscribe") \
|
|
346
|
+
.set_topic("orders-sow") \
|
|
347
|
+
.set_sub_id("A42") \
|
|
348
|
+
.set_filter("/details/items/description LIKE 'puppy'")
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
client.execute_async(sub_cmd, MyHandler)
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
# Elsewhere in the program...
|
|
355
|
+
|
|
356
|
+
replace_cmd = AMPS.Command("sow_and_subscribe") \
|
|
357
|
+
.set_topic("orders-sow") \
|
|
358
|
+
.set_sub_id("A42") \
|
|
359
|
+
.set_filter("/details/items/description LIKE 'kitten'") \
|
|
360
|
+
.set_options("replace")
|
|
361
|
+
|
|
362
|
+
client.execute_async(replace_cmd, MyHandler)
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
Next Steps
|
|
367
|
+
----------
|
|
368
|
+
|
|
369
|
+
At this point, you are able to build AMPS programs in Python that
|
|
370
|
+
publish and subscribe to AMPS topics. For an AMPS application to be
|
|
371
|
+
truly robust, it needs to be able to handle the errors and
|
|
372
|
+
disconnections that occur in any distributed system. In the next
|
|
373
|
+
chapter, we will take a closer look at error handling and recovery and
|
|
374
|
+
how you can use it to make your application ready for the real world.
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
|
|
2
|
+
11. Utilities
|
|
3
|
+
=============
|
|
4
|
+
|
|
5
|
+
The AMPS Python client includes a set of utilities and helper classes to
|
|
6
|
+
make working with AMPS easier.
|
|
7
|
+
|
|
8
|
+
Composite Message Types
|
|
9
|
+
------------------------
|
|
10
|
+
|
|
11
|
+
The client provides a pair of classes for creating and parsing composite
|
|
12
|
+
message types.
|
|
13
|
+
|
|
14
|
+
- ``CompositeMessageBuilder`` allows you to assemble the parts of a
|
|
15
|
+
composite message and then serialize them in a format suitable for
|
|
16
|
+
AMPS.
|
|
17
|
+
|
|
18
|
+
- ``CompositeMessageParser`` extracts the individual parts of a
|
|
19
|
+
composite message type
|
|
20
|
+
|
|
21
|
+
For more information regarding composite message types, refer to Chapter
|
|
22
|
+
4.3.
|
|
23
|
+
|
|
24
|
+
Building Composite Messages
|
|
25
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
26
|
+
|
|
27
|
+
To build a composite message, create an instance of
|
|
28
|
+
``CompositeMessageBuilder``, and populate the parts. The
|
|
29
|
+
``CompositeMessageBuilder`` copies the parts provided, in order, to the
|
|
30
|
+
underlying message. The builder simply writes to an internal buffer with
|
|
31
|
+
the appropriate formatting, and does not allow you to update or change
|
|
32
|
+
the individual parts of a message once they've been added to the
|
|
33
|
+
builder.
|
|
34
|
+
|
|
35
|
+
The snippet below shows how to build a composite message that includes a
|
|
36
|
+
JSON part, constructed as a string, and a binary part consisting of the
|
|
37
|
+
bytes from an ``array.array`` that contains doubles.
|
|
38
|
+
|
|
39
|
+
.. code:: python
|
|
40
|
+
|
|
41
|
+
json = '{"data":"sample"}'
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
theData = array.array('d')
|
|
45
|
+
# populate theData
|
|
46
|
+
...
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# Create the payload for the composite message.
|
|
50
|
+
builder = AMPS.CompositeMessageBuilder()
|
|
51
|
+
|
|
52
|
+
# Construct the composite
|
|
53
|
+
builder.append(json)
|
|
54
|
+
builder.append(theData.tostring())
|
|
55
|
+
|
|
56
|
+
# Send the message
|
|
57
|
+
client.publish("messages", builder.get_data())
|
|
58
|
+
|
|
59
|
+
Parsing Composite Messages
|
|
60
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
61
|
+
|
|
62
|
+
To parse a composite message, create an instance of
|
|
63
|
+
``CompositeMessageParser``, then use the ``parse()`` method to parse the
|
|
64
|
+
message provided by the AMPS client. The ``CompositeMessageParser``
|
|
65
|
+
gives you access to each part of the message as a sequence of bytes.
|
|
66
|
+
|
|
67
|
+
For example, the following snippet parses and prints messages that
|
|
68
|
+
contain a JSON part and a binary part that contains an array of doubles.
|
|
69
|
+
|
|
70
|
+
.. code:: python
|
|
71
|
+
|
|
72
|
+
parts = parser.parse(message)
|
|
73
|
+
|
|
74
|
+
json = parser.get_part(0)
|
|
75
|
+
theData = array.array('d')
|
|
76
|
+
theData.fromstring(parser.get_part(1))
|
|
77
|
+
|
|
78
|
+
print ("Received message with %d parts." % parts)
|
|
79
|
+
print (json)
|
|
80
|
+
datastring = ""
|
|
81
|
+
for d in theData:
|
|
82
|
+
datastring += "%f " % d
|
|
83
|
+
print (datastring)
|
|
84
|
+
|
|
85
|
+
Notice that the receiving application is written with explicit knowledge
|
|
86
|
+
of the structure and content of the composite message type.
|
|
87
|
+
|
|
88
|
+
NVFIX Messages
|
|
89
|
+
--------------
|
|
90
|
+
|
|
91
|
+
The client provides a pair of classes for creating and parsing NVFIX
|
|
92
|
+
messages.
|
|
93
|
+
|
|
94
|
+
- ``nvfixbuilder`` allows you to assemble a NVFIX message and then
|
|
95
|
+
serialize it in a format suitable for AMPS.
|
|
96
|
+
|
|
97
|
+
- ``nvfixshredder`` extracts the individual fields of a NVFIX message
|
|
98
|
+
type.
|
|
99
|
+
|
|
100
|
+
Building NVFIX Messages
|
|
101
|
+
^^^^^^^^^^^^^^^^^^^^^^^^
|
|
102
|
+
|
|
103
|
+
To build a NVFIX message, create an instance of ``nvfixbuilder``, then
|
|
104
|
+
add the fields of the message using ``append()``. ``nvfixBuilder``
|
|
105
|
+
copies the fields provided, in order, to the underlying message. The
|
|
106
|
+
builder simply writes to an internal buffer with the appropriate
|
|
107
|
+
formatting, and does not allow you to update or change the individual
|
|
108
|
+
fields of a message once they've been added to the builder.
|
|
109
|
+
|
|
110
|
+
The snippet below shows how to build a FIX message and publish it to the
|
|
111
|
+
AMPS client.
|
|
112
|
+
|
|
113
|
+
.. code:: python
|
|
114
|
+
|
|
115
|
+
# create the payload for the NVFIX Message
|
|
116
|
+
builder = AMPS.NVFIXBuilder()
|
|
117
|
+
|
|
118
|
+
# construct the NVFIX message
|
|
119
|
+
builder.append("sample","data")
|
|
120
|
+
builder.append("even", "more data")
|
|
121
|
+
...
|
|
122
|
+
|
|
123
|
+
# display the data
|
|
124
|
+
print (builder.get_string())
|
|
125
|
+
|
|
126
|
+
# publish the message
|
|
127
|
+
client.publish("messages-sow", builder.get_string())
|
|
128
|
+
|
|
129
|
+
Parsing NVFIX Messages
|
|
130
|
+
^^^^^^^^^^^^^^^^^^^^^^
|
|
131
|
+
|
|
132
|
+
To parse a NVFIX message, create an instance of ``nvfixShredder``, then
|
|
133
|
+
use the ``to_Map()`` method to parse the message provided by the AMPS
|
|
134
|
+
client. The ``nvfixShredder`` gives you access to each field of the
|
|
135
|
+
message in a map.
|
|
136
|
+
|
|
137
|
+
The snippet below shows how to parse and print a NVFIX message.
|
|
138
|
+
|
|
139
|
+
.. code:: python
|
|
140
|
+
|
|
141
|
+
# create the shredder for the message and subscribe to the topic
|
|
142
|
+
shredder = AMPS.NVFIXShredder()
|
|
143
|
+
message = client.subscribe(topic="messages-sow", timeout=5000)
|
|
144
|
+
|
|
145
|
+
# shred the message to a map
|
|
146
|
+
message_map = shredder.to_map(message.next().getData())
|
|
147
|
+
|
|
148
|
+
# display the values of the message
|
|
149
|
+
for key in message_map :
|
|
150
|
+
print (key + " " + message_map[key])
|
|
151
|
+
|
|
152
|
+
FIX Messages
|
|
153
|
+
------------
|
|
154
|
+
|
|
155
|
+
The client provides a pair of classes for creating and parsing FIX
|
|
156
|
+
messages.
|
|
157
|
+
|
|
158
|
+
- ``fixbuilder`` allows you to assemble a FIX message and then
|
|
159
|
+
serialize it in a format suitable for AMPS.
|
|
160
|
+
|
|
161
|
+
- ``fixshredder`` extracts the individual fields of a FIX message.
|
|
162
|
+
|
|
163
|
+
Building FIX Messages
|
|
164
|
+
^^^^^^^^^^^^^^^^^^^^^^
|
|
165
|
+
|
|
166
|
+
To build a FIX message, create an instance of ``fixbuilder``, then add
|
|
167
|
+
the fields of the message using ``append()``. ``fixBuilder`` copies the
|
|
168
|
+
fields provided, in order, to the underlying message. The builder simply
|
|
169
|
+
writes to an internal buffer with the appropriate formatting, and does
|
|
170
|
+
not allow you to update or change the individual fields of a message
|
|
171
|
+
once they've been added to the builder.
|
|
172
|
+
|
|
173
|
+
The snippet below shows how to build a FIX message and publish it to the
|
|
174
|
+
AMPS client.
|
|
175
|
+
|
|
176
|
+
.. code:: python
|
|
177
|
+
|
|
178
|
+
# create the payload for the FIX Message
|
|
179
|
+
builder = AMPS.FIXBuilder()
|
|
180
|
+
|
|
181
|
+
# construct the FIX message
|
|
182
|
+
builder.append(0,"data")
|
|
183
|
+
builder.append(1, "more data")
|
|
184
|
+
...
|
|
185
|
+
|
|
186
|
+
# display the data
|
|
187
|
+
print (builder.get_string())
|
|
188
|
+
|
|
189
|
+
# publish the message
|
|
190
|
+
client.publish("messages-sow", builder.get_string())
|
|
191
|
+
|
|
192
|
+
Parsing FIX Messages
|
|
193
|
+
^^^^^^^^^^^^^^^^^^^^^
|
|
194
|
+
|
|
195
|
+
To parse a FIX message, create an instance of ``fixShredder``, then use
|
|
196
|
+
the ``to_Map()`` method to parse the message provided by the AMPS
|
|
197
|
+
client. The ``fixShredder`` gives you access to each field of the
|
|
198
|
+
message in a map.
|
|
199
|
+
|
|
200
|
+
The snippet below shows how to parse and print a FIX message.
|
|
201
|
+
|
|
202
|
+
.. code:: python
|
|
203
|
+
|
|
204
|
+
# create the shredder for the message and subscribe to the topic
|
|
205
|
+
shredder = AMPS.FIXShredder()
|
|
206
|
+
message = client.subscribe(topic="messages-sow", timeout=5000)
|
|
207
|
+
|
|
208
|
+
# shred the message to a map
|
|
209
|
+
message_map = shredder.to_map(message.next().getData())
|
|
210
|
+
|
|
211
|
+
# display the values of the message
|
|
212
|
+
for key in message_map :
|
|
213
|
+
print (str(key) + " " + message_map[key])
|
|
214
|
+
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
.. Python Developer Guide documentation master file, created by
|
|
2
|
+
sphinx-quickstart on Thu Jan 26 14:26:56 2017.
|
|
3
|
+
You can adapt this file completely to your liking, but it should at least
|
|
4
|
+
contain the root `toctree` directive.
|
|
5
|
+
|
|
6
|
+
.. |caution-png| image:: ../../../common/png/caution.png
|
|
7
|
+
.. |tip-png| image:: ../../../common/png/tip.png
|
|
8
|
+
.. |warning-png| image:: ../../../common/png/warning.png
|
|
9
|
+
.. |important-png| image:: ../../../common/png/important.png
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
Advanced Message Processing System (AMPS) Python Developer Guide
|
|
13
|
+
================================================================
|
|
14
|
+
|
|
15
|
+
**Version** |version|
|
|
16
|
+
|
|
17
|
+
**Publication Date** |today|
|
|
18
|
+
|
|
19
|
+
.. toctree::
|
|
20
|
+
:maxdepth: 3
|
|
21
|
+
:caption: Contents:
|
|
22
|
+
|
|
23
|
+
./chapters/introduction.rst
|
|
24
|
+
./chapters/installing.rst
|
|
25
|
+
./chapters/first-program.rst
|
|
26
|
+
./chapters/subscriptions.rst
|
|
27
|
+
./chapters/error-handling.rst
|
|
28
|
+
./chapters/sow.rst
|
|
29
|
+
./chapters/queues.rst
|
|
30
|
+
./chapters/deltas.rst
|
|
31
|
+
./chapters/high-availability.rst
|
|
32
|
+
./chapters/creating-commands.rst
|
|
33
|
+
./chapters/utilities.rst
|
|
34
|
+
./chapters/advanced-topics.rst
|
|
35
|
+
./chapters/performance-tips.rst
|
|
36
|
+
./chapters/moving-from-python-lite.rst
|
|
37
|
+
./chapters/exceptions.rst
|
|
38
|
+
|
|
39
|
+
.. Indices and tables
|
|
40
|
+
.. ==================
|
|
41
|
+
|
|
42
|
+
.. * :ref:`genindex`
|
|
43
|
+
.. * :ref:`modindex`
|
|
44
|
+
.. * :ref:`search`
|
|
Binary file
|