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,719 @@
|
|
|
1
|
+
////////////////////////////////////////////////////////////////////////////
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2010-2023 60East Technologies Inc., All Rights Reserved.
|
|
4
|
+
//
|
|
5
|
+
// This computer software is owned by 60East Technologies Inc. and is
|
|
6
|
+
// protected by U.S. copyright laws and other laws and by international
|
|
7
|
+
// treaties. This computer software is furnished by 60East Technologies
|
|
8
|
+
// Inc. pursuant to a written license agreement and may be used, copied,
|
|
9
|
+
// transmitted, and stored only in accordance with the terms of such
|
|
10
|
+
// license agreement and with the inclusion of the above copyright notice.
|
|
11
|
+
// This computer software or any other copies thereof may not be provided
|
|
12
|
+
// or otherwise made available to any other person.
|
|
13
|
+
//
|
|
14
|
+
// U.S. Government Restricted Rights. This computer software: (a) was
|
|
15
|
+
// developed at private expense and is in all respects the proprietary
|
|
16
|
+
// information of 60East Technologies Inc.; (b) was not developed with
|
|
17
|
+
// government funds; (c) is a trade secret of 60East Technologies Inc.
|
|
18
|
+
// for all purposes of the Freedom of Information Act; and (d) is a
|
|
19
|
+
// commercial item and thus, pursuant to Section 12.212 of the Federal
|
|
20
|
+
// Acquisition Regulations (FAR) and DFAR Supplement Section 227.7202,
|
|
21
|
+
// Government's use, duplication or disclosure of the computer software
|
|
22
|
+
// is subject to the restrictions set forth by 60East Technologies Inc..
|
|
23
|
+
//
|
|
24
|
+
////////////////////////////////////////////////////////////////////////////
|
|
25
|
+
#ifndef __AMPS_FIELD_HPP__
|
|
26
|
+
#define __AMPS_FIELD_HPP__
|
|
27
|
+
|
|
28
|
+
#define _AMPS_SKIP_AMPSPLUSPLUS
|
|
29
|
+
#include <amps/amps.h>
|
|
30
|
+
#undef _AMPS_SKIP_AMPSPLUSPLUS
|
|
31
|
+
#include <algorithm>
|
|
32
|
+
#include <string>
|
|
33
|
+
#include <string.h>
|
|
34
|
+
#include <vector>
|
|
35
|
+
|
|
36
|
+
#define AMPS_UNSET_INDEX (size_t)-1
|
|
37
|
+
#define AMPS_TIMESTAMP_LEN 16
|
|
38
|
+
#define AMPS_TIMESTAMP_LEN_LONG 23
|
|
39
|
+
#define AMPS_MAX_BOOKMARK_LEN 42
|
|
40
|
+
// Used in bookmark store recovery to look for corruption, NOT FIXED IN AMPS
|
|
41
|
+
#define AMPS_MAX_SUBID_LEN 1048576 // 1MB, NOT FIXED IN AMPS
|
|
42
|
+
#ifdef _WIN32
|
|
43
|
+
#if (_MSC_VER >= 1400) // VS2005 or higher
|
|
44
|
+
#define AMPS_snprintf(buf_, sz_, ...) _snprintf_s(buf_, sz_, _TRUNCATE, __VA_ARGS__)
|
|
45
|
+
#define AMPS_snprintf_amps_uint64_t(buf,sz,val) sprintf_s(buf,sz,"%I64u",val)
|
|
46
|
+
#ifdef _WIN64
|
|
47
|
+
#define AMPS_snprintf_sizet(buf,sz,val) sprintf_s(buf,sz,"%lu",val)
|
|
48
|
+
#else
|
|
49
|
+
#define AMPS_snprintf_sizet(buf,sz,val) sprintf_s(buf,sz,"%u",val)
|
|
50
|
+
#endif
|
|
51
|
+
#else // VS2003 or older
|
|
52
|
+
#define AMPS_snprintf _snprintf
|
|
53
|
+
#ifdef _WIN64
|
|
54
|
+
#define AMPS_snprintf_sizet(buf,sz,val) _sprintf(buf,sz,"%lu",val)
|
|
55
|
+
#else
|
|
56
|
+
#define AMPS_snprintf_sizet(buf,sz,val) _sprintf(buf,sz,"%u",val)
|
|
57
|
+
#endif
|
|
58
|
+
#endif
|
|
59
|
+
#else
|
|
60
|
+
#define AMPS_snprintf snprintf
|
|
61
|
+
#if defined(__x86_64__) || defined(__aarch64__)
|
|
62
|
+
#define AMPS_snprintf_amps_uint64_t(buf,sz,val) snprintf(buf,sz,"%lu", (unsigned long)val)
|
|
63
|
+
#define AMPS_snprintf_sizet(buf,sz,val) snprintf(buf,sz,"%lu",val)
|
|
64
|
+
#else
|
|
65
|
+
#define AMPS_snprintf_amps_uint64_t(buf,sz,val) snprintf(buf,sz,"%llu",val)
|
|
66
|
+
#define AMPS_snprintf_sizet(buf,sz,val) snprintf(buf,sz,"%u",val)
|
|
67
|
+
#endif
|
|
68
|
+
#endif
|
|
69
|
+
|
|
70
|
+
namespace AMPS
|
|
71
|
+
{
|
|
72
|
+
|
|
73
|
+
using std::string;
|
|
74
|
+
|
|
75
|
+
/// \file Field.hpp
|
|
76
|
+
/// \brief Defines the AMPS::Field class, which represents the value of a
|
|
77
|
+
/// field in a message.
|
|
78
|
+
|
|
79
|
+
///
|
|
80
|
+
/// Field represents the value of a single field in a Message.
|
|
81
|
+
/// Field has limited string functionality, but doesn't require a copy of
|
|
82
|
+
/// the data to be made until you want to copy it out to your own
|
|
83
|
+
/// std::string.
|
|
84
|
+
///
|
|
85
|
+
|
|
86
|
+
class Field
|
|
87
|
+
{
|
|
88
|
+
protected:
|
|
89
|
+
const char* _data;
|
|
90
|
+
size_t _len;
|
|
91
|
+
public:
|
|
92
|
+
Field() : _data(NULL), _len(0) {;}
|
|
93
|
+
Field(const char* data_)
|
|
94
|
+
{
|
|
95
|
+
_data = data_;
|
|
96
|
+
_len = ::strlen(data_);
|
|
97
|
+
}
|
|
98
|
+
Field(const char* data_, size_t len_)
|
|
99
|
+
{
|
|
100
|
+
_data = data_;
|
|
101
|
+
_len = len_;
|
|
102
|
+
}
|
|
103
|
+
Field(const Field& rhs)
|
|
104
|
+
{
|
|
105
|
+
_data = rhs._data;
|
|
106
|
+
_len = rhs._len;
|
|
107
|
+
}
|
|
108
|
+
Field& operator=(const Field& rhs)
|
|
109
|
+
{
|
|
110
|
+
_data = rhs._data;
|
|
111
|
+
_len = rhs._len;
|
|
112
|
+
return *this;
|
|
113
|
+
}
|
|
114
|
+
Field(const std::string& string_)
|
|
115
|
+
{
|
|
116
|
+
_data = string_.c_str();
|
|
117
|
+
_len = string_.length();
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
bool contains(const char* searchString, size_t len) const
|
|
121
|
+
{
|
|
122
|
+
const char* dataEnd = _data + _len;
|
|
123
|
+
return std::search(_data, dataEnd, searchString, searchString + len) != dataEnd;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
///
|
|
127
|
+
/// Returns 'true' if empty, 'false' otherwise.
|
|
128
|
+
bool empty () const
|
|
129
|
+
{
|
|
130
|
+
return _len == 0;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
///
|
|
134
|
+
/// Conversion operator to std::string.
|
|
135
|
+
/// Makes a copy of the data in self.
|
|
136
|
+
operator std::string () const
|
|
137
|
+
{
|
|
138
|
+
return _len ? std::string(_data, _len) : std::string();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
///
|
|
142
|
+
/// Comparison operator
|
|
143
|
+
/// Returns `true' if self and rhs are equivalent, `false' otherwise
|
|
144
|
+
/// \param rhs_ Field to compare against.
|
|
145
|
+
///
|
|
146
|
+
bool operator==(const Field& rhs_) const
|
|
147
|
+
{
|
|
148
|
+
if ( _len == rhs_._len )
|
|
149
|
+
{
|
|
150
|
+
return ::memcmp(_data, rhs_._data, _len) == 0;
|
|
151
|
+
}
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
///
|
|
156
|
+
/// String comparison operator
|
|
157
|
+
/// Returns `true' if self and rhs are equivalent, `false' otherwise
|
|
158
|
+
/// \param rhs_ Null-terminated string to compare against.
|
|
159
|
+
///
|
|
160
|
+
bool operator==(const char* rhs_) const
|
|
161
|
+
{
|
|
162
|
+
if (!_data || !rhs_)
|
|
163
|
+
{
|
|
164
|
+
return (!_data && !rhs_);
|
|
165
|
+
}
|
|
166
|
+
return ::strncmp(_data, rhs_, _len) == 0 && rhs_[_len] == '\0';
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
bool operator<(const Field& rhs) const;
|
|
170
|
+
|
|
171
|
+
///
|
|
172
|
+
/// Comparison operator
|
|
173
|
+
/// Returns `true` if self and rhs are not equivalent.
|
|
174
|
+
/// \param rhs_ Field to compare against.
|
|
175
|
+
///
|
|
176
|
+
bool operator!=(const Field& rhs_) const
|
|
177
|
+
{
|
|
178
|
+
if ( _len == rhs_._len )
|
|
179
|
+
{
|
|
180
|
+
return ::memcmp(_data, rhs_._data, _len) != 0;
|
|
181
|
+
}
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
///
|
|
186
|
+
/// String comparison operator
|
|
187
|
+
/// Returns `true` if self and rhs are not equivalent.
|
|
188
|
+
/// \param rhs_ Null-terminated string to compare against.
|
|
189
|
+
///
|
|
190
|
+
bool operator!=(const char* rhs_) const
|
|
191
|
+
{
|
|
192
|
+
return strncmp(_data, rhs_, _len) != 0 || rhs_[_len] != '\0';
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
///
|
|
196
|
+
/// String comparison operator
|
|
197
|
+
/// Returns `true' if self and rhs are not equivalent.
|
|
198
|
+
/// \param rhs_ std::string to compare against.
|
|
199
|
+
///
|
|
200
|
+
bool operator!=(const std::string& rhs_) const
|
|
201
|
+
{
|
|
202
|
+
return rhs_.compare(0, rhs_.length(), _data, _len) != 0;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
///
|
|
206
|
+
/// String comparison operator
|
|
207
|
+
/// Returns `true' if self and rhs are equivalent.
|
|
208
|
+
/// \param rhs_ std::string to compare against.
|
|
209
|
+
///
|
|
210
|
+
bool operator==(const std::string& rhs_) const
|
|
211
|
+
{
|
|
212
|
+
return rhs_.compare(0, rhs_.length(), _data, _len) == 0;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
///
|
|
216
|
+
/// Makes self a deep copy of the original field
|
|
217
|
+
/// \param orig_ Field to copy
|
|
218
|
+
void deepCopy(const Field& orig_)
|
|
219
|
+
{
|
|
220
|
+
delete[] _data;
|
|
221
|
+
if (orig_._len > 0)
|
|
222
|
+
{
|
|
223
|
+
_data = new char[orig_._len];
|
|
224
|
+
::memcpy(static_cast<void*>(const_cast<char*>(_data)),
|
|
225
|
+
orig_._data, orig_._len);
|
|
226
|
+
_len = orig_._len;
|
|
227
|
+
}
|
|
228
|
+
else
|
|
229
|
+
{
|
|
230
|
+
_data = NULL;
|
|
231
|
+
_len = 0;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
///
|
|
236
|
+
/// Makes a deep copy of self, returns it.
|
|
237
|
+
Field deepCopy() const
|
|
238
|
+
{
|
|
239
|
+
Field newField;
|
|
240
|
+
newField.deepCopy(*this);
|
|
241
|
+
return newField;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
///
|
|
245
|
+
/// Deletes the data associated with this Field, should only be
|
|
246
|
+
/// used on Fields that were created as deepCopy of other Fields.
|
|
247
|
+
void clear()
|
|
248
|
+
{
|
|
249
|
+
if (!_data || !_len)
|
|
250
|
+
{
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
delete[] _data;
|
|
254
|
+
_len = 0;
|
|
255
|
+
_data = NULL;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
///
|
|
259
|
+
/// Returns the (non-null-terminated) data underlying this field.
|
|
260
|
+
const char* data() const
|
|
261
|
+
{
|
|
262
|
+
return _data;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
///
|
|
266
|
+
/// Returns the length of the data underlying this field.
|
|
267
|
+
size_t len() const
|
|
268
|
+
{
|
|
269
|
+
return _len;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// assign a new range into this Message::Field
|
|
273
|
+
void assign(const char* ptr, size_t len)
|
|
274
|
+
{
|
|
275
|
+
_data = ptr;
|
|
276
|
+
_len = len;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// compute a hash value
|
|
280
|
+
inline size_t hash_function() const
|
|
281
|
+
{
|
|
282
|
+
size_t n_ = _len;
|
|
283
|
+
const char* p_ = _data;
|
|
284
|
+
size_t h = 0, c;
|
|
285
|
+
while (n_ != 0)
|
|
286
|
+
{
|
|
287
|
+
c = (unsigned long) * p_;
|
|
288
|
+
h += (h << 5) + c;
|
|
289
|
+
++p_, --n_;
|
|
290
|
+
}
|
|
291
|
+
return h;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
struct FieldHash
|
|
295
|
+
{
|
|
296
|
+
size_t operator()(const Field& f) const
|
|
297
|
+
{
|
|
298
|
+
return f.hash_function();
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
bool operator()(const Field& f1, const Field& f2) const
|
|
302
|
+
{
|
|
303
|
+
if (f1.len() < f2.len())
|
|
304
|
+
{
|
|
305
|
+
return true;
|
|
306
|
+
}
|
|
307
|
+
if (f1.len() > f2.len())
|
|
308
|
+
{
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
// Length is the same, don't compare empty
|
|
312
|
+
if (f1.len() == 0)
|
|
313
|
+
{
|
|
314
|
+
return true;
|
|
315
|
+
}
|
|
316
|
+
return ::memcmp(f1.data(), f2.data(), f2.len()) < 0;
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
// Determine if the Field represents a timestamp
|
|
321
|
+
static bool isTimestamp(const Field& field_)
|
|
322
|
+
{
|
|
323
|
+
return (field_.len() >= AMPS_TIMESTAMP_LEN
|
|
324
|
+
&& field_.len() <= AMPS_TIMESTAMP_LEN_LONG
|
|
325
|
+
&& field_.data()[8] == 'T');
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
static std::vector<Field> parseBookmarkList(const Field& field_)
|
|
329
|
+
{
|
|
330
|
+
std::vector<Field> list;
|
|
331
|
+
const char* start = field_.data();
|
|
332
|
+
size_t remain = field_.len();
|
|
333
|
+
const char* comma = (const char*)memchr((const void*)start,
|
|
334
|
+
(int)',', remain);
|
|
335
|
+
while (comma)
|
|
336
|
+
{
|
|
337
|
+
size_t len = (size_t)(comma - start);
|
|
338
|
+
if (len != 0)
|
|
339
|
+
{
|
|
340
|
+
#ifdef AMPS_USE_EMPLACE
|
|
341
|
+
list.emplace_back(Field(start, len));
|
|
342
|
+
#else
|
|
343
|
+
list.push_back(Field(start, len));
|
|
344
|
+
#endif
|
|
345
|
+
}
|
|
346
|
+
start = ++comma;
|
|
347
|
+
remain = field_.len() - (size_t)(start - field_.data());
|
|
348
|
+
comma = (const char*)memchr((const void*)start,
|
|
349
|
+
(int)',', remain);
|
|
350
|
+
}
|
|
351
|
+
if (remain != 0)
|
|
352
|
+
{
|
|
353
|
+
#ifdef AMPS_USE_EMPLACE
|
|
354
|
+
list.emplace_back(Field(start, remain));
|
|
355
|
+
#else
|
|
356
|
+
list.push_back(Field(start, remain));
|
|
357
|
+
#endif
|
|
358
|
+
}
|
|
359
|
+
return list;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// Get sequence number from a Field that is a bookmark
|
|
363
|
+
static void parseBookmark(const Field& field_,
|
|
364
|
+
amps_uint64_t& publisherId_,
|
|
365
|
+
amps_uint64_t& sequenceNumber_)
|
|
366
|
+
{
|
|
367
|
+
publisherId_ = sequenceNumber_ = (amps_uint64_t)0;
|
|
368
|
+
const char* data = field_.data();
|
|
369
|
+
size_t len = field_.len();
|
|
370
|
+
// Can't parse a timestamp
|
|
371
|
+
if (isTimestamp(field_))
|
|
372
|
+
{
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
size_t i = 0;
|
|
376
|
+
for ( ; i < len; ++i)
|
|
377
|
+
{
|
|
378
|
+
if (!isdigit(data[i]))
|
|
379
|
+
{
|
|
380
|
+
break;
|
|
381
|
+
}
|
|
382
|
+
publisherId_ *= 10;
|
|
383
|
+
publisherId_ += (amps_uint64_t)(data[i] - '0');
|
|
384
|
+
}
|
|
385
|
+
// Make sure it's just the | separator
|
|
386
|
+
if (i < len && data[i] != '|')
|
|
387
|
+
{
|
|
388
|
+
publisherId_ = sequenceNumber_ = (amps_uint64_t)0;
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
for (i = i + 1; i < len; ++i)
|
|
392
|
+
{
|
|
393
|
+
if (!isdigit(data[i]))
|
|
394
|
+
{
|
|
395
|
+
break;
|
|
396
|
+
}
|
|
397
|
+
sequenceNumber_ *= 10;
|
|
398
|
+
sequenceNumber_ += (amps_uint64_t)(data[i] - '0');
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
};
|
|
403
|
+
|
|
404
|
+
class BookmarkRange : public Field
|
|
405
|
+
{
|
|
406
|
+
public:
|
|
407
|
+
static bool isRange(const Field& bookmark_)
|
|
408
|
+
{
|
|
409
|
+
return memchr(bookmark_.data(), ':', bookmark_.len()) != NULL;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
BookmarkRange()
|
|
413
|
+
: Field(), _start(), _end(), _open(AMPS_UNSET_INDEX)
|
|
414
|
+
, _capacity(AMPS_UNSET_INDEX)
|
|
415
|
+
{
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
// Parse it for a range, set everything empty if not a valid range
|
|
419
|
+
BookmarkRange(const Field& field_)
|
|
420
|
+
: Field(), _start(), _end(), _open(AMPS_UNSET_INDEX)
|
|
421
|
+
, _capacity(field_.len())
|
|
422
|
+
{
|
|
423
|
+
set(field_);
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
void set(const Field& field_)
|
|
427
|
+
{
|
|
428
|
+
// Are we already the same
|
|
429
|
+
if (_data == field_.data() || operator==(field_))
|
|
430
|
+
{
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
// Reset self
|
|
434
|
+
notValid();
|
|
435
|
+
// Make self a copy
|
|
436
|
+
deepCopy(field_);
|
|
437
|
+
_capacity = _len;
|
|
438
|
+
bool foundSeparator = false;
|
|
439
|
+
bool foundClose = false;
|
|
440
|
+
for (size_t i = 0; i < _len; ++i)
|
|
441
|
+
{
|
|
442
|
+
switch (_data[i])
|
|
443
|
+
{
|
|
444
|
+
case '(':
|
|
445
|
+
case '[':
|
|
446
|
+
{
|
|
447
|
+
// Is this within the range?
|
|
448
|
+
if (foundClose || _open != AMPS_UNSET_INDEX)
|
|
449
|
+
{
|
|
450
|
+
notValid();
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
_open = i;
|
|
454
|
+
}
|
|
455
|
+
break;
|
|
456
|
+
// Valid bookmark characters [0-9|,TZ]
|
|
457
|
+
case '0':
|
|
458
|
+
case '1':
|
|
459
|
+
case '2':
|
|
460
|
+
case '3':
|
|
461
|
+
case '4':
|
|
462
|
+
case '5':
|
|
463
|
+
case '6':
|
|
464
|
+
case '7':
|
|
465
|
+
case '8':
|
|
466
|
+
case '9':
|
|
467
|
+
case '|':
|
|
468
|
+
case ',':
|
|
469
|
+
case 'T':
|
|
470
|
+
case 'Z':
|
|
471
|
+
{
|
|
472
|
+
// Is this within the range?
|
|
473
|
+
if (foundClose || _open == AMPS_UNSET_INDEX)
|
|
474
|
+
{
|
|
475
|
+
notValid();
|
|
476
|
+
return;
|
|
477
|
+
}
|
|
478
|
+
else if (foundSeparator) // Part of end?
|
|
479
|
+
{
|
|
480
|
+
if (!_end.data()) // Start of end?
|
|
481
|
+
{
|
|
482
|
+
_end.assign(_data + i, 0);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
else if (!_start.data()) // Start of start?
|
|
486
|
+
{
|
|
487
|
+
_start.assign(_data + i, 0);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
break;
|
|
491
|
+
case ':':
|
|
492
|
+
{
|
|
493
|
+
// Is this within the range and do we have a start?
|
|
494
|
+
if (foundSeparator || foundClose || _open == AMPS_UNSET_INDEX
|
|
495
|
+
|| !_start.data())
|
|
496
|
+
{
|
|
497
|
+
notValid();
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
foundSeparator = true;
|
|
501
|
+
// Do we need to set start length?
|
|
502
|
+
if (_start.len() == 0)
|
|
503
|
+
{
|
|
504
|
+
// Length is here, minus beginning of start - 1
|
|
505
|
+
_start.assign(_start.data(), i - (size_t)(_start.data() - _data));
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
break;
|
|
509
|
+
case ']':
|
|
510
|
+
case ')':
|
|
511
|
+
{
|
|
512
|
+
// Is this within the range and do we have an end?
|
|
513
|
+
if (foundClose || _open == AMPS_UNSET_INDEX || !_end.data())
|
|
514
|
+
{
|
|
515
|
+
notValid();
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
518
|
+
foundClose = true;
|
|
519
|
+
_len = i + 1;
|
|
520
|
+
// Do we need to set end length?
|
|
521
|
+
if (_end.len() == 0)
|
|
522
|
+
{
|
|
523
|
+
// Length is here, minus beginning of end - 1
|
|
524
|
+
_end.assign(_end.data(), i - (size_t)(_end.data() - _data));
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
break;
|
|
528
|
+
case ' ':
|
|
529
|
+
{
|
|
530
|
+
// Do we need to set end length?
|
|
531
|
+
if (_end.data() && _end.len() == 0)
|
|
532
|
+
{
|
|
533
|
+
// Length is here, minus beginning of end - 1
|
|
534
|
+
_end.assign(_end.data(), i - (size_t)(_end.data() - _data));
|
|
535
|
+
}
|
|
536
|
+
// Else do we need to set start length?
|
|
537
|
+
else if (_start.data() && _start.len() == 0)
|
|
538
|
+
{
|
|
539
|
+
// Length is here, minus beginning of start - 1
|
|
540
|
+
_start.assign(_start.data(), i - (size_t)(_start.data() - _data));
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
break;
|
|
544
|
+
default:
|
|
545
|
+
{
|
|
546
|
+
notValid();
|
|
547
|
+
}
|
|
548
|
+
break;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
// If we didn't find everything clear self
|
|
552
|
+
if (_start.empty() || _end.empty())
|
|
553
|
+
{
|
|
554
|
+
notValid();
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
// Centralized place to clear self
|
|
559
|
+
void notValid()
|
|
560
|
+
{
|
|
561
|
+
if (!_data || !_len)
|
|
562
|
+
{
|
|
563
|
+
return;
|
|
564
|
+
}
|
|
565
|
+
delete[] _data;
|
|
566
|
+
_data = 0;
|
|
567
|
+
_len = 0;
|
|
568
|
+
_start.assign(0, 0);
|
|
569
|
+
_end.assign(0, 0);
|
|
570
|
+
_open = AMPS_UNSET_INDEX;
|
|
571
|
+
_capacity = 0;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
/// If this range was created with a valid range, return true.
|
|
575
|
+
/// \return If this is a valid range.
|
|
576
|
+
bool isValid() const
|
|
577
|
+
{
|
|
578
|
+
return !empty();
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
/// Does the range start inclusive of the first bookmark.
|
|
582
|
+
/// \return If the range start inclusive of the first bookmark.
|
|
583
|
+
bool isStartInclusive() const
|
|
584
|
+
{
|
|
585
|
+
return _data[_open] == '[';
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
/// Does the range start inclusive of the first bookmark.
|
|
589
|
+
/// \return If the range start inclusive of the first bookmark.
|
|
590
|
+
void makeStartExclusive()
|
|
591
|
+
{
|
|
592
|
+
const_cast<char*>(_data)[_open] = '(';
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
/// Does the range end inclusive of the last bookmark.
|
|
596
|
+
/// \return If the range end inclusive of the last bookmark.
|
|
597
|
+
bool isEndInclusive() const
|
|
598
|
+
{
|
|
599
|
+
return _data[_len - 1] == ']';
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
/// Does the range end inclusive of the last bookmark.
|
|
603
|
+
/// \return If the range end inclusive of the last bookmark.
|
|
604
|
+
void makeEndExclusive()
|
|
605
|
+
{
|
|
606
|
+
const_cast<char*>(_data)[_len - 1] = ')';
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
/// The start bookmark
|
|
610
|
+
/// \return The starting bookmark in the range.
|
|
611
|
+
const Field& getStart() const
|
|
612
|
+
{
|
|
613
|
+
return _start;
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
const Field& getEnd() const
|
|
617
|
+
{
|
|
618
|
+
return _end;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
/// This copies start_ to replace the beginning of the range.
|
|
622
|
+
/// \param start_ The bookmark field to copy as this range's start.
|
|
623
|
+
void replaceStart(const Field& start_, bool makeExclusive_ = false)
|
|
624
|
+
{
|
|
625
|
+
// Best case, it fits in our existing self. Since we may do this more
|
|
626
|
+
// than once, just add start+end+open+close+separator
|
|
627
|
+
if (_capacity >= (start_.len() + _end.len() + 3))
|
|
628
|
+
{
|
|
629
|
+
char* data = const_cast<char*>(_data);
|
|
630
|
+
if (makeExclusive_)
|
|
631
|
+
{
|
|
632
|
+
data[_open] = '(';
|
|
633
|
+
}
|
|
634
|
+
if (_open) // Move open to beginning if not there
|
|
635
|
+
{
|
|
636
|
+
data[0] = _data[_open];
|
|
637
|
+
_open = 0;
|
|
638
|
+
}
|
|
639
|
+
if ((size_t)(_end.data() - _data - 2) < start_.len())
|
|
640
|
+
{
|
|
641
|
+
size_t newLen = start_.len() + _end.len() + 3;
|
|
642
|
+
// Need to move end to make room for new start
|
|
643
|
+
// This copies _end and close
|
|
644
|
+
// Last char of _start will be at _start.len() because of open
|
|
645
|
+
for (size_t dest = newLen - 1, src = _len - 1;
|
|
646
|
+
src > _start.len(); --src, --dest)
|
|
647
|
+
{
|
|
648
|
+
data[dest] = _data[src];
|
|
649
|
+
// Find separator, we're done
|
|
650
|
+
if (data[src] == ':')
|
|
651
|
+
{
|
|
652
|
+
_end.assign(data + dest + 1, _end.len());
|
|
653
|
+
break;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
_len = newLen;
|
|
657
|
+
}
|
|
658
|
+
// Copy in new start after _open
|
|
659
|
+
::memcpy(static_cast<void*>(data + 1), start_.data(), start_.len());
|
|
660
|
+
_start.assign(data + 1, start_.len());
|
|
661
|
+
// Possibly move end left
|
|
662
|
+
if ((size_t)(_end.data() - _start.data()) > _start.len() + 1UL)
|
|
663
|
+
{
|
|
664
|
+
// Copy to just after start starting with ':'
|
|
665
|
+
for (size_t dest = _start.len() + 1, src = (size_t)(_end.data() - data - 1);
|
|
666
|
+
src < _len; ++dest, ++src)
|
|
667
|
+
{
|
|
668
|
+
data[dest] = data[src];
|
|
669
|
+
if (data[src] == ']' || data[src] == ')')
|
|
670
|
+
{
|
|
671
|
+
_end.assign(data + _start.len() + 2, _end.len());
|
|
672
|
+
break;
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
_len = _start.len() + _end.len() + 3;
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
else // We need to resize and copy everything over
|
|
679
|
+
{
|
|
680
|
+
// Let's set min resize at 4 bookmarks + 3 commas + 3
|
|
681
|
+
// Some MSVC versions have issues with max so use ?:
|
|
682
|
+
_capacity = (4UL * AMPS_MAX_BOOKMARK_LEN + 6UL
|
|
683
|
+
>= start_.len() + _end.len() + 3UL)
|
|
684
|
+
? (4UL * AMPS_MAX_BOOKMARK_LEN + 6UL)
|
|
685
|
+
: (start_.len() + _end.len() + 3UL);
|
|
686
|
+
char* data = new char[_capacity];
|
|
687
|
+
if (makeExclusive_)
|
|
688
|
+
{
|
|
689
|
+
data[0] = '(';
|
|
690
|
+
}
|
|
691
|
+
else
|
|
692
|
+
{
|
|
693
|
+
data[0] = _data[_open];
|
|
694
|
+
}
|
|
695
|
+
_open = 0;
|
|
696
|
+
::memcpy(static_cast<void*>(data + 1), start_.data(), start_.len());
|
|
697
|
+
_start.assign(data + 1, start_.len());
|
|
698
|
+
data[start_.len() + 1] = ':';
|
|
699
|
+
::memcpy(static_cast<void*>(data + start_.len() + 2), _end.data(),
|
|
700
|
+
_end.len());
|
|
701
|
+
_end.assign(data + start_.len() + 2, _end.len());
|
|
702
|
+
size_t len = start_.len() + 3 + _end.len();
|
|
703
|
+
data[len - 1] = _data[_len - 1];
|
|
704
|
+
clear();
|
|
705
|
+
assign(data, len);
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
private:
|
|
710
|
+
Field _start;
|
|
711
|
+
Field _end;
|
|
712
|
+
size_t _open;
|
|
713
|
+
size_t _capacity;
|
|
714
|
+
};
|
|
715
|
+
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
#endif
|
|
719
|
+
|