amps-python-client 5.3.4.1__zip → 5.3.4.3__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.3/LICENSE +168 -0
- amps-python-client-5.3.4.3/PKG-INFO +112 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/intro.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/logon.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/publishing.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/removing.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/utilities.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/index.rst.txt +36 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/ack-messages.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/content-messages.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/intro.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/logon.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/protocol-reference.html +93 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/publishing.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/query-delimiters.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/query-subscribe.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/removing.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/utilities.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/genindex.html +97 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/index.html +98 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/objects.inv +6 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/html/code.html +6851 -0
- amps-python-client-5.3.4.3/docs/html/genindex.html +1363 -0
- amps-python-client-5.3.4.3/docs/html/index.html +131 -0
- amps-python-client-5.3.4.3/docs/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/html/py-modindex.html +111 -0
- amps-python-client-5.3.4.3/docs/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/deltas.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/error-handling.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/exceptions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/first-program.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/high-availability.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/installing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/introduction.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/advanced-topics.rst.txt +398 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +26 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/creating-commands.rst.txt +159 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/deltas.rst.txt +79 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/error-handling.rst.txt +481 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/exceptions.rst.txt +123 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/first-program.rst.txt +168 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/high-availability.rst.txt +879 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/installing.rst.txt +184 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/introduction.rst.txt +50 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +32 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/performance-tips.rst.txt +432 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/queues.rst.txt +282 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/sow.rst.txt +294 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/subscriptions.rst.txt +374 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/utilities.rst.txt +214 -0
- amps-python-client-5.3.4.3/docs/python/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/advanced-topics.html +447 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/cpp-compiler-list.html +92 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/cpp-feature-table.html +156 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/creating-commands.html +2882 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/deltas.html +169 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/error-handling.html +745 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/exceptions.html +266 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/first-program.html +526 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/high-availability.html +1017 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/installing.html +264 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/introduction.html +245 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/moving-from-python-lite.html +118 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/performance-tips.html +499 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/queues.html +352 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/sow.html +383 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/subscriptions.html +535 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/utilities.html +302 -0
- amps-python-client-5.3.4.3/docs/python/html/genindex.html +351 -0
- amps-python-client-5.3.4.3/docs/python/html/index.html +382 -0
- amps-python-client-5.3.4.3/docs/python/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/python/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/python/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/chapters/crankitup.html +271 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/chapters/equipment.html +105 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/genindex.html +97 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/index.html +381 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/events.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/views.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/acks.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/actions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/daemon.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/delta.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/distribution.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/events.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/glossary.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/ha.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/intro.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/logging.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/oof.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/operation.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/queues.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/replication.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/securing.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/sow.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/transports.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/txlog.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/usecases.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/utilities.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/views.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/index.rst.txt +62 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/acks.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/actions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/amps-statistics.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/amps_expressions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/amps_functions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/auxiliary_modules.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/config-file-shortcuts.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/conflated_topics.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/constructing-fields.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/daemon.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/delta.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/distribution.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/enrichment.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/events.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/file_format_versions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/glossary.html +92 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/ha.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/installing_and_starting.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/intro.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/logging.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/messageTypes.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/monitoring.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/oof.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/operation.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/pub_sub.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/queues.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/replication.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/securing.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/sow.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/sow_queries.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/spark.html +819 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/transports.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/troubleshooting.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/txlog.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/usecases.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/utilities.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/views.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/genindex.html +133 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/index.html +96 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/search.html +106 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/include/ampspy_bookmarkstore.hpp +63 -0
- amps-python-client-5.3.4.3/include/ampspy_compat.h +63 -0
- amps-python-client-5.3.4.3/include/ampspy_defs.hpp +181 -0
- amps-python-client-5.3.4.3/include/ampspy_recoverypointadapter.hpp +52 -0
- amps-python-client-5.3.4.3/include/ampspy_shims.hpp +113 -0
- amps-python-client-5.3.4.3/include/ampspy_type_object.hpp +242 -0
- amps-python-client-5.3.4.3/include/ampspy_types.hpp +1139 -0
- amps-python-client-5.3.4.3/include/ampspyver.h +30 -0
- amps-python-client-5.3.4.3/index.html +66 -0
- amps-python-client-5.3.4.3/samples/AMPSConsolePublisher.py +59 -0
- amps-python-client-5.3.4.3/samples/AMPSConsoleSubscriber.py +63 -0
- amps-python-client-5.3.4.3/samples/AMPSFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.3/samples/AMPSFIXShredderSubscriber.py +69 -0
- amps-python-client-5.3.4.3/samples/AMPSNVFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.3/samples/AMPSNVFIXShredderSubscriber.py +67 -0
- amps-python-client-5.3.4.3/samples/AMPSPublishForReplay.py +81 -0
- amps-python-client-5.3.4.3/samples/AMPSQueueConsumer.py +69 -0
- amps-python-client-5.3.4.3/samples/AMPSQueuePublisher.py +59 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWConsolePublisher.py +67 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWConsoleSubscriber.py +77 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWandSubscribeConsoleSubscriber.py +79 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWandSubscribeWithOOF.py +108 -0
- amps-python-client-5.3.4.3/samples/AMPSSubscribeForReplay.py +128 -0
- amps-python-client-5.3.4.3/samples/AMPSUpdateForOOF.py +123 -0
- amps-python-client-5.3.4.3/samples/CompositeMessagePublisher.py +84 -0
- amps-python-client-5.3.4.3/samples/CompositeMessageSubscriber.py +87 -0
- amps-python-client-5.3.4.3/samples/RandomServerChooser.py +66 -0
- amps-python-client-5.3.4.3/samples/sample.xml +335 -0
- amps-python-client-5.3.4.3/setup.py +210 -0
- amps-python-client-5.3.4.3/setup_amps.py +94 -0
- amps-python-client-5.3.4.3/src/ampspy_shims.cpp +214 -0
- amps-python-client-5.3.4.3/src/ampspy_type_object.cpp +495 -0
- amps-python-client-5.3.4.3/src/authenticator.cpp +128 -0
- amps-python-client-5.3.4.3/src/bookmarkstore.cpp +246 -0
- amps-python-client-5.3.4.3/src/client.cpp +2648 -0
- amps-python-client-5.3.4.3/src/client_docs.h +1210 -0
- amps-python-client-5.3.4.3/src/cmessagehandler.cpp +161 -0
- amps-python-client-5.3.4.3/src/command.cpp +164 -0
- amps-python-client-5.3.4.3/src/command_docs.h +274 -0
- amps-python-client-5.3.4.3/src/compositemessagebuilder.cpp +113 -0
- amps-python-client-5.3.4.3/src/compositemessageparser.cpp +151 -0
- amps-python-client-5.3.4.3/src/conflatingrecoverypointadapter.cpp +197 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/BlockPublishStore.hpp +2050 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/BlockStore.hpp +674 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/BookmarkStore.hpp +542 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/Buffer.hpp +214 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/CompositeMessageBuilder.hpp +174 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/CompositeMessageParser.hpp +151 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/DefaultServerChooser.hpp +162 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/Field.hpp +723 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/HAClient.hpp +370 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/HAClientImpl.hpp +460 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/HybridPublishStore.hpp +481 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/LoggedBookmarkStore.hpp +1256 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MMapBookmarkStore.hpp +1283 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MMapStoreBuffer.hpp +297 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemoryBookmarkStore.hpp +1628 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemoryPublishStore.hpp +66 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemoryStoreBuffer.hpp +247 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemorySubscriptionManager.hpp +850 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/Message.hpp +1827 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MessageRouter.hpp +647 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/PublishStore.hpp +158 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ReconnectDelayStrategy.hpp +106 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +317 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/RecoveryPoint.hpp +323 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/RecoveryPointAdapter.hpp +501 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/RingBookmarkStore.hpp +669 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +494 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ServerChooser.hpp +156 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ServerChooserImpl.hpp +95 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/amps.h +815 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/amps_impl.h +220 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/amps_ssl.h +78 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampscrc.hpp +208 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsplusplus.hpp +8846 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsuri.h +84 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsver.h +41 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsver.h.in +41 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/constants.hpp +194 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/util.hpp +1722 -0
- amps-python-client-5.3.4.3/src/cpp/src/amps_protocol.c +693 -0
- amps-python-client-5.3.4.3/src/cpp/src/amps_ssl.c +565 -0
- amps-python-client-5.3.4.3/src/cpp/src/atfork.c +484 -0
- amps-python-client-5.3.4.3/src/cpp/src/client.c +498 -0
- amps-python-client-5.3.4.3/src/cpp/src/message.c +837 -0
- amps-python-client-5.3.4.3/src/cpp/src/message_generated.h +611 -0
- amps-python-client-5.3.4.3/src/cpp/src/tcp.c +1683 -0
- amps-python-client-5.3.4.3/src/cpp/src/tcps.c +2005 -0
- amps-python-client-5.3.4.3/src/cpp/src/transports.c +129 -0
- amps-python-client-5.3.4.3/src/cpp/src/unix.c +1063 -0
- amps-python-client-5.3.4.3/src/cpp/src/uri.c +301 -0
- amps-python-client-5.3.4.3/src/exponentialdelaystrategy.cpp +131 -0
- amps-python-client-5.3.4.3/src/failedwritehandler.cpp +116 -0
- amps-python-client-5.3.4.3/src/fixbuilder.cpp +146 -0
- amps-python-client-5.3.4.3/src/fixeddelaystrategy.cpp +115 -0
- amps-python-client-5.3.4.3/src/fixshredder.cpp +105 -0
- amps-python-client-5.3.4.3/src/fixshredder_docs.h +38 -0
- amps-python-client-5.3.4.3/src/haclient.cpp +691 -0
- amps-python-client-5.3.4.3/src/haclient_docs.h +200 -0
- amps-python-client-5.3.4.3/src/hybridpublishstore.cpp +137 -0
- amps-python-client-5.3.4.3/src/hybridpublishstore_docs.h +31 -0
- amps-python-client-5.3.4.3/src/memorybookmarkstore.cpp +373 -0
- amps-python-client-5.3.4.3/src/memorybookmarkstore_docs.h +39 -0
- amps-python-client-5.3.4.3/src/memorypublishstore.cpp +160 -0
- amps-python-client-5.3.4.3/src/memorypublishstore_docs.h +32 -0
- amps-python-client-5.3.4.3/src/message.cpp +765 -0
- amps-python-client-5.3.4.3/src/message_docs.h +306 -0
- amps-python-client-5.3.4.3/src/messagestream.cpp +630 -0
- amps-python-client-5.3.4.3/src/messagestream_docs.h +45 -0
- amps-python-client-5.3.4.3/src/mmapbookmarkstore.cpp +422 -0
- amps-python-client-5.3.4.3/src/nvfixbuilder.cpp +160 -0
- amps-python-client-5.3.4.3/src/nvfixbuilder_docs.h +35 -0
- amps-python-client-5.3.4.3/src/nvfixshredder.cpp +99 -0
- amps-python-client-5.3.4.3/src/nvfixshredder_docs.h +43 -0
- amps-python-client-5.3.4.3/src/publishstore.cpp +183 -0
- amps-python-client-5.3.4.3/src/raw_wrapper.cpp +765 -0
- amps-python-client-5.3.4.3/src/reason.cpp +71 -0
- amps-python-client-5.3.4.3/src/recoverypoint.cpp +135 -0
- amps-python-client-5.3.4.3/src/recoverypointadapter.cpp +171 -0
- amps-python-client-5.3.4.3/src/ringbookmarkstore.cpp +360 -0
- amps-python-client-5.3.4.3/src/serverchooser.cpp +245 -0
- amps-python-client-5.3.4.3/src/serverchooser_docs.h +41 -0
- amps-python-client-5.3.4.3/src/sowrecoverypointadapter.cpp +248 -0
- amps-python-client-5.3.4.3/src/store.cpp +62 -0
- amps-python-client-5.3.4.3/src/versioninfo.cpp +175 -0
- amps-python-client-5.3.4.1/LICENSE +0 -157
- amps-python-client-5.3.4.1/PKG-INFO +0 -112
- 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 +0 -4
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +0 -32
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +0 -27
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/intro.rst.txt +0 -43
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/logon.rst.txt +0 -231
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +0 -1474
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/publishing.rst.txt +0 -25
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +0 -12
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +0 -23
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/removing.rst.txt +0 -6
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/utilities.rst.txt +0 -13
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/index.rst.txt +0 -56
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/ack-messages.html +0 -417
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/content-messages.html +0 -417
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/intro.html +0 -126
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/logon.html +0 -295
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/protocol-reference.html +0 -1190
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/publishing.html +0 -436
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-delimiters.html +0 -173
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-subscribe.html +0 -2123
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/removing.html +0 -299
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/utilities.html +0 -287
- amps-python-client-5.3.4.1/docs/command-reference/html/genindex.html +0 -97
- amps-python-client-5.3.4.1/docs/command-reference/html/index.html +0 -138
- 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 +0 -107
- amps-python-client-5.3.4.1/docs/command-reference/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/html/code.html +0 -6503
- amps-python-client-5.3.4.1/docs/html/genindex.html +0 -1361
- amps-python-client-5.3.4.1/docs/html/index.html +0 -131
- 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 +0 -111
- amps-python-client-5.3.4.1/docs/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/html/searchindex.js +0 -1
- 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 +0 -4
- amps-python-client-5.3.4.1/docs/python/html/_images/caution.svg +0 -25
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/advanced-topics.rst.txt +0 -398
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +0 -26
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/creating-commands.rst.txt +0 -159
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/deltas.rst.txt +0 -79
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/error-handling.rst.txt +0 -482
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/exceptions.rst.txt +0 -128
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/first-program.rst.txt +0 -142
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/high-availability.rst.txt +0 -876
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/installing.rst.txt +0 -184
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/introduction.rst.txt +0 -50
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +0 -32
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/performance-tips.rst.txt +0 -434
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/queues.rst.txt +0 -282
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/sow.rst.txt +0 -292
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/subscriptions.rst.txt +0 -374
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/utilities.rst.txt +0 -214
- amps-python-client-5.3.4.1/docs/python/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/python/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/python/html/chapters/advanced-topics.html +0 -447
- amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-compiler-list.html +0 -92
- amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-feature-table.html +0 -156
- amps-python-client-5.3.4.1/docs/python/html/chapters/creating-commands.html +0 -2837
- amps-python-client-5.3.4.1/docs/python/html/chapters/deltas.html +0 -169
- amps-python-client-5.3.4.1/docs/python/html/chapters/error-handling.html +0 -746
- amps-python-client-5.3.4.1/docs/python/html/chapters/exceptions.html +0 -272
- amps-python-client-5.3.4.1/docs/python/html/chapters/first-program.html +0 -499
- amps-python-client-5.3.4.1/docs/python/html/chapters/high-availability.html +0 -1014
- amps-python-client-5.3.4.1/docs/python/html/chapters/installing.html +0 -264
- amps-python-client-5.3.4.1/docs/python/html/chapters/introduction.html +0 -245
- amps-python-client-5.3.4.1/docs/python/html/chapters/moving-from-python-lite.html +0 -118
- amps-python-client-5.3.4.1/docs/python/html/chapters/performance-tips.html +0 -499
- amps-python-client-5.3.4.1/docs/python/html/chapters/queues.html +0 -352
- amps-python-client-5.3.4.1/docs/python/html/chapters/sow.html +0 -381
- amps-python-client-5.3.4.1/docs/python/html/chapters/subscriptions.html +0 -535
- amps-python-client-5.3.4.1/docs/python/html/chapters/utilities.html +0 -302
- amps-python-client-5.3.4.1/docs/python/html/genindex.html +0 -351
- amps-python-client-5.3.4.1/docs/python/html/index.html +0 -380
- 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 +0 -107
- amps-python-client-5.3.4.1/docs/python/html/searchindex.js +0 -1
- 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 +0 -4
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/crankitup.html +0 -271
- amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/equipment.html +0 -105
- amps-python-client-5.3.4.1/docs/python-quickstart/html/genindex.html +0 -97
- amps-python-client-5.3.4.1/docs/python-quickstart/html/index.html +0 -382
- 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 +0 -107
- amps-python-client-5.3.4.1/docs/python-quickstart/html/searchindex.js +0 -1
- 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 +0 -4
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/AMPS-Queues-Intro.svg +0 -1330
- 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 +0 -235
- 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 +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub2.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWAndSubscribeAndReplace.svg +0 -684
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery1.svg +0 -402
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery2.svg +0 -505
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig1.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig2.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig3.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig4.svg +0 -1
- 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 +0 -25
- 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 +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/inline_view_conflation.svg +0 -1
- 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 +0 -627
- 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 +0 -248
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_2.svg +0 -183
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_update_sequence.svg +0 -1
- 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 +0 -31
- 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 +0 -23
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/acks.rst.txt +0 -232
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/actions.rst.txt +0 -111
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +0 -358
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +0 -83
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +0 -11
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +0 -86
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +0 -9
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +0 -111
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +0 -269
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/daemon.rst.txt +0 -232
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/delta.rst.txt +0 -556
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/distribution.rst.txt +0 -186
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +0 -191
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/events.rst.txt +0 -39
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +0 -203
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/glossary.rst.txt +0 -101
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/ha.rst.txt +0 -465
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +0 -23
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/intro.rst.txt +0 -116
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/logging.rst.txt +0 -34
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +0 -1398
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +0 -326
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/oof.rst.txt +0 -312
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/operation.rst.txt +0 -27
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +0 -49
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/queues.rst.txt +0 -1351
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/replication.rst.txt +0 -1228
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/securing.rst.txt +0 -657
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow.rst.txt +0 -57
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/transports.rst.txt +0 -291
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +0 -517
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/txlog.rst.txt +0 -62
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/usecases.rst.txt +0 -21
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/utilities.rst.txt +0 -62
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/views.rst.txt +0 -175
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/index.rst.txt +0 -110
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/acks.html +0 -289
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/actions.html +0 -3782
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps-statistics.html +0 -439
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_expressions.html +0 -1552
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_functions.html +0 -1626
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/auxiliary_modules.html +0 -2548
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/config-file-shortcuts.html +0 -508
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/conflated_topics.html +0 -328
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/constructing-fields.html +0 -447
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/daemon.html +0 -295
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/delta.html +0 -609
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/distribution.html +0 -246
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/enrichment.html +0 -264
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/events.html +0 -449
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/file_format_versions.html +0 -229
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/glossary.html +0 -215
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/ha.html +0 -978
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/installing_and_starting.html +0 -357
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/intro.html +0 -572
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/logging.html +0 -972
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/messageTypes.html +0 -1280
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/monitoring.html +0 -718
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/oof.html +0 -341
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/operation.html +0 -1515
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/pub_sub.html +0 -934
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/queues.html +0 -1767
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/replication.html +0 -1777
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/securing.html +0 -697
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow.html +0 -1038
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow_queries.html +0 -621
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/spark.html +0 -819
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/transports.html +0 -352
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/troubleshooting.html +0 -530
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/txlog.html +0 -1013
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/usecases.html +0 -288
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/utilities.html +0 -133
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/views.html +0 -1120
- amps-python-client-5.3.4.1/docs/user-guide/html/genindex.html +0 -1261
- amps-python-client-5.3.4.1/docs/user-guide/html/index.html +0 -163
- 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 +0 -106
- amps-python-client-5.3.4.1/docs/user-guide/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/include/ampspy_bookmarkstore.hpp +0 -63
- amps-python-client-5.3.4.1/include/ampspy_compat.h +0 -63
- amps-python-client-5.3.4.1/include/ampspy_defs.hpp +0 -181
- amps-python-client-5.3.4.1/include/ampspy_recoverypointadapter.hpp +0 -52
- amps-python-client-5.3.4.1/include/ampspy_shims.hpp +0 -113
- amps-python-client-5.3.4.1/include/ampspy_type_object.hpp +0 -242
- amps-python-client-5.3.4.1/include/ampspy_types.hpp +0 -1139
- amps-python-client-5.3.4.1/include/ampspyver.h +0 -30
- amps-python-client-5.3.4.1/index.html +0 -66
- amps-python-client-5.3.4.1/samples/AMPSConsolePublisher.py +0 -59
- amps-python-client-5.3.4.1/samples/AMPSConsoleSubscriber.py +0 -63
- amps-python-client-5.3.4.1/samples/AMPSFIXBuilderPublisher.py +0 -71
- amps-python-client-5.3.4.1/samples/AMPSFIXShredderSubscriber.py +0 -69
- amps-python-client-5.3.4.1/samples/AMPSNVFIXBuilderPublisher.py +0 -71
- amps-python-client-5.3.4.1/samples/AMPSNVFIXShredderSubscriber.py +0 -67
- amps-python-client-5.3.4.1/samples/AMPSPublishForReplay.py +0 -81
- amps-python-client-5.3.4.1/samples/AMPSQueueConsumer.py +0 -69
- amps-python-client-5.3.4.1/samples/AMPSQueuePublisher.py +0 -59
- amps-python-client-5.3.4.1/samples/AMPSSOWConsolePublisher.py +0 -67
- amps-python-client-5.3.4.1/samples/AMPSSOWConsoleSubscriber.py +0 -77
- amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeConsoleSubscriber.py +0 -79
- amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeWithOOF.py +0 -108
- amps-python-client-5.3.4.1/samples/AMPSSubscribeForReplay.py +0 -128
- amps-python-client-5.3.4.1/samples/AMPSUpdateForOOF.py +0 -123
- amps-python-client-5.3.4.1/samples/CompositeMessagePublisher.py +0 -84
- amps-python-client-5.3.4.1/samples/CompositeMessageSubscriber.py +0 -87
- amps-python-client-5.3.4.1/samples/RandomServerChooser.py +0 -41
- amps-python-client-5.3.4.1/samples/sample.xml +0 -335
- amps-python-client-5.3.4.1/setup.py +0 -209
- amps-python-client-5.3.4.1/setup_amps.py +0 -94
- amps-python-client-5.3.4.1/src/ampspy_shims.cpp +0 -203
- amps-python-client-5.3.4.1/src/ampspy_type_object.cpp +0 -484
- amps-python-client-5.3.4.1/src/authenticator.cpp +0 -128
- amps-python-client-5.3.4.1/src/bookmarkstore.cpp +0 -238
- amps-python-client-5.3.4.1/src/client.cpp +0 -2430
- amps-python-client-5.3.4.1/src/client_docs.h +0 -956
- amps-python-client-5.3.4.1/src/cmessagehandler.cpp +0 -151
- amps-python-client-5.3.4.1/src/command.cpp +0 -164
- amps-python-client-5.3.4.1/src/command_docs.h +0 -194
- amps-python-client-5.3.4.1/src/compositemessagebuilder.cpp +0 -111
- amps-python-client-5.3.4.1/src/compositemessageparser.cpp +0 -146
- amps-python-client-5.3.4.1/src/conflatingrecoverypointadapter.cpp +0 -194
- amps-python-client-5.3.4.1/src/cpp/include/amps/BlockPublishStore.hpp +0 -2053
- amps-python-client-5.3.4.1/src/cpp/include/amps/BlockStore.hpp +0 -677
- amps-python-client-5.3.4.1/src/cpp/include/amps/BookmarkStore.hpp +0 -542
- amps-python-client-5.3.4.1/src/cpp/include/amps/Buffer.hpp +0 -214
- amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageBuilder.hpp +0 -174
- amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageParser.hpp +0 -151
- amps-python-client-5.3.4.1/src/cpp/include/amps/DefaultServerChooser.hpp +0 -162
- amps-python-client-5.3.4.1/src/cpp/include/amps/Field.hpp +0 -719
- amps-python-client-5.3.4.1/src/cpp/include/amps/HAClient.hpp +0 -370
- amps-python-client-5.3.4.1/src/cpp/include/amps/HAClientImpl.hpp +0 -460
- amps-python-client-5.3.4.1/src/cpp/include/amps/HybridPublishStore.hpp +0 -481
- amps-python-client-5.3.4.1/src/cpp/include/amps/LoggedBookmarkStore.hpp +0 -1255
- amps-python-client-5.3.4.1/src/cpp/include/amps/MMapBookmarkStore.hpp +0 -1283
- amps-python-client-5.3.4.1/src/cpp/include/amps/MMapStoreBuffer.hpp +0 -290
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryBookmarkStore.hpp +0 -1622
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryPublishStore.hpp +0 -66
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryStoreBuffer.hpp +0 -244
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemorySubscriptionManager.hpp +0 -850
- amps-python-client-5.3.4.1/src/cpp/include/amps/Message.hpp +0 -1819
- amps-python-client-5.3.4.1/src/cpp/include/amps/MessageRouter.hpp +0 -618
- amps-python-client-5.3.4.1/src/cpp/include/amps/PublishStore.hpp +0 -158
- amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategy.hpp +0 -106
- amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +0 -317
- amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPoint.hpp +0 -323
- amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPointAdapter.hpp +0 -501
- amps-python-client-5.3.4.1/src/cpp/include/amps/RingBookmarkStore.hpp +0 -669
- amps-python-client-5.3.4.1/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +0 -490
- amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooser.hpp +0 -145
- amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooserImpl.hpp +0 -95
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps.h +0 -775
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_impl.h +0 -204
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_ssl.h +0 -78
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampscrc.hpp +0 -210
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsplusplus.hpp +0 -8817
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsuri.h +0 -84
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h +0 -41
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h.in +0 -41
- amps-python-client-5.3.4.1/src/cpp/include/amps/constants.hpp +0 -194
- amps-python-client-5.3.4.1/src/cpp/include/amps/util.hpp +0 -1692
- amps-python-client-5.3.4.1/src/cpp/src/amps_protocol.c +0 -688
- amps-python-client-5.3.4.1/src/cpp/src/amps_ssl.c +0 -489
- amps-python-client-5.3.4.1/src/cpp/src/atfork.c +0 -446
- amps-python-client-5.3.4.1/src/cpp/src/client.c +0 -483
- amps-python-client-5.3.4.1/src/cpp/src/message.c +0 -837
- amps-python-client-5.3.4.1/src/cpp/src/message_generated.h +0 -611
- amps-python-client-5.3.4.1/src/cpp/src/tcp.c +0 -1489
- amps-python-client-5.3.4.1/src/cpp/src/tcps.c +0 -1894
- amps-python-client-5.3.4.1/src/cpp/src/transports.c +0 -123
- amps-python-client-5.3.4.1/src/cpp/src/unix.c +0 -984
- amps-python-client-5.3.4.1/src/cpp/src/uri.c +0 -301
- amps-python-client-5.3.4.1/src/exponentialdelaystrategy.cpp +0 -137
- amps-python-client-5.3.4.1/src/failedwritehandler.cpp +0 -116
- amps-python-client-5.3.4.1/src/fixbuilder.cpp +0 -146
- amps-python-client-5.3.4.1/src/fixeddelaystrategy.cpp +0 -114
- amps-python-client-5.3.4.1/src/fixshredder.cpp +0 -105
- amps-python-client-5.3.4.1/src/fixshredder_docs.h +0 -38
- amps-python-client-5.3.4.1/src/haclient.cpp +0 -691
- amps-python-client-5.3.4.1/src/haclient_docs.h +0 -132
- amps-python-client-5.3.4.1/src/hybridpublishstore.cpp +0 -137
- amps-python-client-5.3.4.1/src/hybridpublishstore_docs.h +0 -31
- amps-python-client-5.3.4.1/src/memorybookmarkstore.cpp +0 -373
- amps-python-client-5.3.4.1/src/memorybookmarkstore_docs.h +0 -39
- amps-python-client-5.3.4.1/src/memorypublishstore.cpp +0 -160
- amps-python-client-5.3.4.1/src/memorypublishstore_docs.h +0 -32
- amps-python-client-5.3.4.1/src/message.cpp +0 -765
- amps-python-client-5.3.4.1/src/message_docs.h +0 -306
- amps-python-client-5.3.4.1/src/messagestream.cpp +0 -623
- amps-python-client-5.3.4.1/src/messagestream_docs.h +0 -45
- amps-python-client-5.3.4.1/src/mmapbookmarkstore.cpp +0 -422
- amps-python-client-5.3.4.1/src/nvfixbuilder.cpp +0 -160
- amps-python-client-5.3.4.1/src/nvfixbuilder_docs.h +0 -33
- amps-python-client-5.3.4.1/src/nvfixshredder.cpp +0 -99
- amps-python-client-5.3.4.1/src/nvfixshredder_docs.h +0 -39
- amps-python-client-5.3.4.1/src/publishstore.cpp +0 -183
- amps-python-client-5.3.4.1/src/raw_wrapper.cpp +0 -756
- amps-python-client-5.3.4.1/src/reason.cpp +0 -71
- amps-python-client-5.3.4.1/src/recoverypoint.cpp +0 -135
- amps-python-client-5.3.4.1/src/recoverypointadapter.cpp +0 -171
- amps-python-client-5.3.4.1/src/ringbookmarkstore.cpp +0 -360
- amps-python-client-5.3.4.1/src/serverchooser.cpp +0 -245
- amps-python-client-5.3.4.1/src/serverchooser_docs.h +0 -39
- amps-python-client-5.3.4.1/src/sowrecoverypointadapter.cpp +0 -248
- amps-python-client-5.3.4.1/src/store.cpp +0 -62
- amps-python-client-5.3.4.1/src/versioninfo.cpp +0 -175
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/HISTORY +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/README.md +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_sources/code.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/classic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/default.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/sidebar.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/caution.png +0 -0
- {amps-python-client-5.3.4.1/docs/command-reference → amps-python-client-5.3.4.3/docs/python}/html/_images/caution.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/connection_string.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/important.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/important.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/tip.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/tip.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/warning.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_sources/chapters/cpp-compiler-list.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_sources/chapters/crankitup.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_sources/chapters/equipment.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/resources/custom.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/resources/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_sources/chapters/spark.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/src/cpp/include/amps/amps_generated.h +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/src/cpp/src/amps_protocol_generated.h +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/src/cpp/src/makefile +0 -0
|
@@ -1,876 +0,0 @@
|
|
|
1
|
-
.. index:: HAClient
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
9. High Availability
|
|
5
|
-
====================
|
|
6
|
-
|
|
7
|
-
The AMPS Python Client provides an easy way to create highly-available
|
|
8
|
-
applications using AMPS, via the ``HAClient`` class. ``HAClient``
|
|
9
|
-
derives from ``Client`` and offers the same methods, but also adds
|
|
10
|
-
protection against network, server, and client outages.
|
|
11
|
-
|
|
12
|
-
Using ``HAClient`` allows applications to automatically:
|
|
13
|
-
|
|
14
|
-
- Recover from temporary disconnects between client and server.
|
|
15
|
-
|
|
16
|
-
- Failover from one server to another when a server becomes
|
|
17
|
-
unavailable.
|
|
18
|
-
|
|
19
|
-
Because the ``HAClient`` automatically manages failover and
|
|
20
|
-
reconnection, 60East recommends using the ``HAClient`` for applications
|
|
21
|
-
that need to:
|
|
22
|
-
|
|
23
|
-
- Automatically reconnect and resume work in the case of disconnection.
|
|
24
|
-
|
|
25
|
-
- Ensure no messages are lost or duplicated after a reconnect or
|
|
26
|
-
failover.
|
|
27
|
-
|
|
28
|
-
- Persist messages and bookmarks on disk for protection against client
|
|
29
|
-
failure.
|
|
30
|
-
|
|
31
|
-
You can choose how your application uses ``HAClient`` features. For
|
|
32
|
-
example, you might need automatic reconnection, but have no need to
|
|
33
|
-
resume subscriptions or republish messages. The high availability
|
|
34
|
-
behavior in ``HAClient`` is provided by implementations of defined
|
|
35
|
-
interfaces. You can combine different implementations provided by 60East
|
|
36
|
-
to meet your needs, and implement those interfaces to provide your own
|
|
37
|
-
policies.
|
|
38
|
-
|
|
39
|
-
Some of these features require specific configuration settings on your
|
|
40
|
-
AMPS instance(s). This chapter mentions these features and describes how
|
|
41
|
-
to use them from the AMPS Java client. You can find full documentation
|
|
42
|
-
for these settings and server features in the *User Guide*.
|
|
43
|
-
|
|
44
|
-
.. include:: ./ha-overview-python.inc
|
|
45
|
-
Reconnection with HAClient
|
|
46
|
-
--------------------------
|
|
47
|
-
|
|
48
|
-
The most important difference between ``Client`` and ``HAClient`` is
|
|
49
|
-
that ``HAClient`` automatically provides a reconnect handler.
|
|
50
|
-
|
|
51
|
-
This description provides a high-level framework for understanding the
|
|
52
|
-
components involved in failover with the ``HAClient``. The components
|
|
53
|
-
are described in more detail in the following sections.
|
|
54
|
-
|
|
55
|
-
The ``HAClient`` reconnect handler performs the following steps when
|
|
56
|
-
reconnecting:
|
|
57
|
-
|
|
58
|
-
- Calls the ``ServerChooser`` to determine the next URI to connect to
|
|
59
|
-
and the authenticator to use for that connection.
|
|
60
|
-
|
|
61
|
-
If the connection fails, calls ``get_error`` on the ``ServerChooser``
|
|
62
|
-
to get a description of the failure, sends an exception to the
|
|
63
|
-
exception listener, and stops the reconnection process.
|
|
64
|
-
|
|
65
|
-
- Calls the ``DelayStrategy`` to determine how long to wait before
|
|
66
|
-
attempting to reconnect, and waits for that period of time.
|
|
67
|
-
|
|
68
|
-
- Connects to the AMPS server. If the connection fails, calls
|
|
69
|
-
``report_failure`` on the ``ServerChooser`` and begins the process
|
|
70
|
-
again.
|
|
71
|
-
|
|
72
|
-
- Logs on to the AMPS server. If the connection fails, calls
|
|
73
|
-
``report_failure`` on the ``ServerChooser`` and begins the process
|
|
74
|
-
again.
|
|
75
|
-
|
|
76
|
-
- Calls ``report_success`` on the ``ServerChooser``.
|
|
77
|
-
|
|
78
|
-
- Receives the bookmark for the last message that the server has
|
|
79
|
-
persisted. Discards any older messages from the ``PublishStore``.
|
|
80
|
-
|
|
81
|
-
- Republishes any messages in the ``PublishStore`` that have not been
|
|
82
|
-
persisted by the server.
|
|
83
|
-
|
|
84
|
-
- Re-establishes subscriptions using the ``SubscriptionManager`` for
|
|
85
|
-
the client. For bookmark subscriptions, the reconnect handler uses
|
|
86
|
-
the ``BookmarkStore`` for the client to determine the most recent
|
|
87
|
-
bookmark, and resubscribes with that bookmark. For subscriptions that
|
|
88
|
-
do not use a bookmark, the ``SubscriptionManager`` simply re-enters
|
|
89
|
-
the subscription, meaning that it is entered at the point at which
|
|
90
|
-
the ``HAClient`` reconnects.
|
|
91
|
-
|
|
92
|
-
The ``ServerChooser``, ``DelayStrategy``, ``PublishStore``,
|
|
93
|
-
and ``BookmarkStore`` are all extension points
|
|
94
|
-
for the ``HAClient``. You can adapt the failover and recovery behavior
|
|
95
|
-
by setting a different object for the behavior you want to customize on
|
|
96
|
-
the ``HAClient`` or by providing your own implementation.
|
|
97
|
-
|
|
98
|
-
For example, the convenience methods in the previous section customize
|
|
99
|
-
the behavior of the ``PublishStore`` and ``BookmarkStore`` by providing
|
|
100
|
-
either memory-backed or file-backed stores.
|
|
101
|
-
|
|
102
|
-
The reconnection process runs on the thread that discovers the
|
|
103
|
-
disconnection. This means that, in the event that an application
|
|
104
|
-
thread discovers the disconnection as a result of a call to
|
|
105
|
-
the Python AMPS client, that call may not return until a
|
|
106
|
-
connection is re-established (or until the server chooser
|
|
107
|
-
indicates failure, in which case the application will
|
|
108
|
-
receive an exception).
|
|
109
|
-
|
|
110
|
-
The Python client includes a ``retry_on_disconnect`` setting that
|
|
111
|
-
controls this retry behavior when the client is disconnected. When
|
|
112
|
-
set to ``True`` (the default), any call to the Client that results
|
|
113
|
-
in a command being sent to AMPS may block until a connection is
|
|
114
|
-
re-established. When set to ``False``, the ``HAClient`` will
|
|
115
|
-
retry the connection a single time and throw an exception
|
|
116
|
-
if the connection cannot be re-established.
|
|
117
|
-
|
|
118
|
-
Regardless of the ``retry_on_disconnect`` setting, a call
|
|
119
|
-
to ``publish`` will result in the message being stored in
|
|
120
|
-
the ``PublishStore`` for the client if one is set.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
Choosing Store Durability
|
|
124
|
-
-------------------------
|
|
125
|
-
|
|
126
|
-
.. index:: Method; create_file_backed(), createFileBacked(), Method; createMemoryBacked(),
|
|
127
|
-
create_memory_backed(),
|
|
128
|
-
|
|
129
|
-
If your application needs reliable publish to AMPS, install a
|
|
130
|
-
``PublishStore`` in the ``HAClient``. If your application needs to
|
|
131
|
-
resume replays from the transation log, install a ``BookmarkStore`` in
|
|
132
|
-
the ``HAClient``.
|
|
133
|
-
|
|
134
|
-
These stores provide the following capabilities:
|
|
135
|
-
|
|
136
|
-
- A bookmark store tracks received messages, and is used to resume
|
|
137
|
-
subscriptions that replay from the transaction log.
|
|
138
|
-
|
|
139
|
-
- A publish store tracks published messages, and is used to ensure that
|
|
140
|
-
messages are persisted in AMPS.
|
|
141
|
-
|
|
142
|
-
The AMPS client provides a memory-backed version of each store and a
|
|
143
|
-
file-backed version of each store. The store interface is public, and an
|
|
144
|
-
application can create and provide a custom store as necessary. An
|
|
145
|
-
``HAClient`` can use either a memory backed store or a file backed store
|
|
146
|
-
for protection. Each method provides resilience to different failures:
|
|
147
|
-
|
|
148
|
-
- Memory-backed stores provide recovery disconnection from AMPS by
|
|
149
|
-
storing messages and bookmarks in your process’ address space. This
|
|
150
|
-
is the highest performance option for working with AMPS in a highly
|
|
151
|
-
available manner. The trade-off with this method is there is no
|
|
152
|
-
protection from a crash or failure of your client application. If
|
|
153
|
-
your application is terminated prematurely or, if the application
|
|
154
|
-
terminates at the same time as an AMPS instance failure or network
|
|
155
|
-
outage, then messages may be lost or duplicated. The state of
|
|
156
|
-
bookmark replays will be lost when the application shuts down.
|
|
157
|
-
Messages in the publish store when the application shuts down
|
|
158
|
-
will not be maintained through a restart, so the application will
|
|
159
|
-
not be able to attempt any necessary redelivery when the application restarts.
|
|
160
|
-
|
|
161
|
-
A memory bookmark store should only be used by one instance of a client at
|
|
162
|
-
a time.
|
|
163
|
-
|
|
164
|
-
- File-backed stores provide recovery after client failure and
|
|
165
|
-
disconnection from AMPS by storing messages and bookmarks on disk. To
|
|
166
|
-
use this protection method, the ``create_file_backed`` method
|
|
167
|
-
requests additional arguments for the two files that will be used for
|
|
168
|
-
both bookmark storage and message storage. If these files exist and
|
|
169
|
-
are non-empty (as they would be after a client application is
|
|
170
|
-
restarted), the ``HAClient`` loads their contents and ensures
|
|
171
|
-
synchronization with the AMPS server once connected. The performance
|
|
172
|
-
of this option depends heavily on the speed of the device on which
|
|
173
|
-
these files are placed. When the files do not exist (as they would
|
|
174
|
-
the first time a client starts on a given system), the ``HAClient``
|
|
175
|
-
creates and initializes the files, and in this case the client does
|
|
176
|
-
not have a point at which to resume the subscription or messages to
|
|
177
|
-
republish.
|
|
178
|
-
|
|
179
|
-
A store file should only be used by one instance of a client at
|
|
180
|
-
a time.
|
|
181
|
-
|
|
182
|
-
When using file-backed stores, 60East recommends periodically removing
|
|
183
|
-
unneeded entries by calling the ``prune()`` method. The precise strategy
|
|
184
|
-
that your application uses to call ``prune()`` depends on the nature of the
|
|
185
|
-
application. Most applications call ``prune()`` when the application exits.
|
|
186
|
-
|
|
187
|
-
Most applications call ``prune()`` when the application exits.
|
|
188
|
-
|
|
189
|
-
There are two basic strategies that applications follow while the
|
|
190
|
-
application runs:
|
|
191
|
-
|
|
192
|
-
* Install a resize handler and call ``prune()`` after a specified number
|
|
193
|
-
of resize operations, or when the store reaches a specific size.
|
|
194
|
-
|
|
195
|
-
* Call ``prune()`` after a specific number of messages are processed (for
|
|
196
|
-
example, every 10,000 messages received or every 1,000 updates completed).
|
|
197
|
-
|
|
198
|
-
Regardless of the strategy, it is best to call ``prune()`` when the application
|
|
199
|
-
is idle, since the ``prune()`` call rewrites the log file.
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
The store interface is public, and an application can create and provide
|
|
203
|
-
a custom store as necessary. While clients provide convenience methods
|
|
204
|
-
for creating file-backed and memory-backed ``HAClient`` objects with the
|
|
205
|
-
appropriate stores, you can also create and set the stores in your
|
|
206
|
-
application code. For the AMPS Python Client, stores are implemented in
|
|
207
|
-
C++. You can implement stores using C++, and use the technique described
|
|
208
|
-
in Chapter 12 Using the C++ client, to set the store on the client.
|
|
209
|
-
|
|
210
|
-
Starting in 5.3.2.0, the underlying AMPS client contains a recovery point
|
|
211
|
-
adapter interface to make it easier to add a custom persistence layer
|
|
212
|
-
to a cookmark store. The distribution includes a recovery point adapter
|
|
213
|
-
that can store bookmark recovery information in an AMPS state of the
|
|
214
|
-
world topic.
|
|
215
|
-
|
|
216
|
-
The ``HAClient`` provides convenience methods for creating clients and
|
|
217
|
-
setting stores. You can also construct an ``HAClient`` and set the store
|
|
218
|
-
implementations you choose.
|
|
219
|
-
|
|
220
|
-
In this example, we create several clients. The first client uses memory
|
|
221
|
-
stores for both bookmarks and publishes. The second client uses files
|
|
222
|
-
for both bookmarks and publishes. The third client uses a file for
|
|
223
|
-
bookmarks. The third client does not set a store for publishes, which
|
|
224
|
-
means that AMPS provides the default store (and no outgoing messages are
|
|
225
|
-
stored). The final client does not specify any stores, and so has no
|
|
226
|
-
persistence for published messages or bookmark subscriptions, but can
|
|
227
|
-
take advantage of the automatic failover and reconnection in the
|
|
228
|
-
``HAClient``.
|
|
229
|
-
|
|
230
|
-
.. code:: python
|
|
231
|
-
|
|
232
|
-
# Memory publish store, memory bookmark store
|
|
233
|
-
memoryClient = AMPS.HAClient("lessImportantMessages")
|
|
234
|
-
|
|
235
|
-
# File-backed publish store, file-backed bookmark store
|
|
236
|
-
diskClient = AMPS.HAClient("moreImportantMessages",
|
|
237
|
-
"/mnt/fastDisk/moreImportantMessages.outgoing",
|
|
238
|
-
"/mnt/fastDisk/moreImportantMessages.incoming")
|
|
239
|
-
|
|
240
|
-
# No-op publish store, file-backed bookmark store
|
|
241
|
-
subscriberClient = AMPS.HAClient("subscriber", no_store=True)
|
|
242
|
-
subscriberClient.set_bookmark_store( \
|
|
243
|
-
AMPS.MMapBookmarkStore("/mnt/fastdisk/bookmark.store"))
|
|
244
|
-
|
|
245
|
-
# No-op publish store, no-op bookmark store
|
|
246
|
-
# Failover behavior only.
|
|
247
|
-
streamReader = AMPS.HAClient("streamReader",no_store=True)
|
|
248
|
-
|
|
249
|
-
**Example 9.1:** *HAClient creation example*
|
|
250
|
-
|
|
251
|
-
.. include:: ./sow_bookmark_store.inc
|
|
252
|
-
Capacity Planning and Store Sizing
|
|
253
|
-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
254
|
-
|
|
255
|
-
When an application uses a file-backed store, it is important to make
|
|
256
|
-
sure that there is enough space available on the file system to
|
|
257
|
-
be able to manage the store.
|
|
258
|
-
|
|
259
|
-
For logged bookmark stores, an application needs to keep a bookmark record for
|
|
260
|
-
each message received, each message discarded, and the persisted
|
|
261
|
-
acknowledgments delivered by the server approximately once a second.
|
|
262
|
-
Each bookmark entry consumes roughly 70 bytes of storage *plus* the length
|
|
263
|
-
of the subscription ID for the subscription receiving the message. The logged
|
|
264
|
-
bookmark store retains entries until an application explicitly calls
|
|
265
|
-
``prune()``. The capacity needed for a logged bookmark store will
|
|
266
|
-
depend on the strategy that the application uses for pruning the file.
|
|
267
|
-
|
|
268
|
-
For a file-backed publish store, the application needs to be able to
|
|
269
|
-
store published messages until the AMPS server that the publisher is
|
|
270
|
-
connected to acknowledges those messages as persisted. The volume of
|
|
271
|
-
messages that needs to be stored depends on the failover policy for
|
|
272
|
-
the server -- that is, the maximum amount of time that the server will
|
|
273
|
-
allow a downstream instance to fail to acknowledge a message before
|
|
274
|
-
the server downgrades that connection to ``async`` acknowledgment.
|
|
275
|
-
By default, AMPS does not downgrade connections: this policy must
|
|
276
|
-
be set explicitly using the AMPS actions. As an example, if the
|
|
277
|
-
server is configured to downgrade connections that are more than
|
|
278
|
-
120 seconds behind, then -- for disaster recovery -- the application
|
|
279
|
-
must be have the capacity to store 120 seconds of published messages
|
|
280
|
-
at peak publishing load. However, unlike the logged bookmark store, a
|
|
281
|
-
file-backed publish store removes messages from the store and reuses
|
|
282
|
-
the space once AMPS has acknowledged the message.
|
|
283
|
-
|
|
284
|
-
Connections and the ServerChooser
|
|
285
|
-
----------------------------------
|
|
286
|
-
|
|
287
|
-
.. index:: HAClient Client, Client Interface, ServerChooser Interface,
|
|
288
|
-
|
|
289
|
-
Unlike ``Client``, the ``HAClient`` attempts to keep itself connected to
|
|
290
|
-
an AMPS instance at all times, by automatically reconnecting or failing
|
|
291
|
-
over when it detects that the client is disconnected. When you are using
|
|
292
|
-
the ``Client`` directly, your disconnect handler usually takes care of
|
|
293
|
-
reconnection. ``HAClient``, on the other hand, provides a disconnect
|
|
294
|
-
handler that automatically reconnects to the current server or to the
|
|
295
|
-
next available server.
|
|
296
|
-
|
|
297
|
-
To inform the ``HAClient`` of the addresses of the AMPS instances in
|
|
298
|
-
your system, you pass a ``ServerChooser`` instance to the ``HAClient``.
|
|
299
|
-
``ServerChooser`` acts as a smart enumerator over the servers available:
|
|
300
|
-
``HAClient`` calls ``ServerChooser`` methods to inquire about what
|
|
301
|
-
server should be connected, and calls methods to indicate whether a
|
|
302
|
-
given server succeeded or failed.
|
|
303
|
-
|
|
304
|
-
.. index:: Method; connect_and_logon(), connect_and_logon() method,
|
|
305
|
-
|
|
306
|
-
The AMPS Python Client provides a simple implementation of
|
|
307
|
-
``ServerChooser``,called ``DefaultServerChooser``, that provides very
|
|
308
|
-
simple logic for reconnecting. This server chooser is most suitable for
|
|
309
|
-
basic testing, or in cases where an application should simply rotate
|
|
310
|
-
through a list of servers. For most applications, you implement the
|
|
311
|
-
``ServerChooser`` interface yourself for more advanced logic, such as
|
|
312
|
-
choosing a backup server based on your network topology, or limiting the
|
|
313
|
-
number of times your application should try to reconnect to a given
|
|
314
|
-
address.
|
|
315
|
-
|
|
316
|
-
To connect to AMPS, you provide a ``ServerChooser`` to ``HAClient`` and
|
|
317
|
-
then call ``connect_and_logon()`` to create the first connection:
|
|
318
|
-
|
|
319
|
-
.. code:: python
|
|
320
|
-
|
|
321
|
-
memoryClient = AMPS.HAClient("myClient")
|
|
322
|
-
|
|
323
|
-
# primary.amps.xyz.com is the primary AMPS instance, and
|
|
324
|
-
# secondary.amps.xyz.com is the secondary
|
|
325
|
-
chooser = AMPS.DefaultServerChooser()
|
|
326
|
-
chooser.add("tcp://primary.amps.xyz.com:12345/fix")
|
|
327
|
-
chooser.add("tcp://secondary.amps.xyz.com:12345/fix")
|
|
328
|
-
memoryClient.set_server_chooser(chooser)
|
|
329
|
-
memoryClient.connect_and_logon()
|
|
330
|
-
...
|
|
331
|
-
myClient.disconnect()
|
|
332
|
-
|
|
333
|
-
**Example 9.2:** *Multiple HAClient creation example*
|
|
334
|
-
|
|
335
|
-
.. index:: Disconnection, Method; disconnect(), Method;
|
|
336
|
-
connect_and_logon(),
|
|
337
|
-
|
|
338
|
-
Similar to ``Client``, ``HAClient`` remains connected to the server until
|
|
339
|
-
``disconnect()`` is called. Unlike ``Client``, ``HAClient``
|
|
340
|
-
automatically attempts to reconnect to your server if it detects a
|
|
341
|
-
disconnect and, if that server cannot be connected, fails over to the
|
|
342
|
-
next server provided by the ``ServerChooser``. In this example, the call
|
|
343
|
-
to ``connectAndLogon()`` attempts to connect and login to
|
|
344
|
-
``primary.amps.xyz.com``, and returns if that is successful. If it
|
|
345
|
-
cannot connect, it tries ``secondary.amps.xyz.com``, and continues
|
|
346
|
-
trying servers from the ``ServerChooser`` until a connection is
|
|
347
|
-
established. Likewise, if it detects a disconnection while the client is
|
|
348
|
-
in use, then ``HAClient`` attempts to reconnect to the server with which
|
|
349
|
-
it was most recently connected; if that is not possible, then it moves
|
|
350
|
-
on to the next server provided by the ``ServerChooser``.
|
|
351
|
-
|
|
352
|
-
The default ``ServerChooser`` simply provides the next URL in the
|
|
353
|
-
sequence. This strategy works for many applications. If you need a
|
|
354
|
-
different strategy, you can implement your own logic for failover by
|
|
355
|
-
creating a class derived from ``ServerChooser``.
|
|
356
|
-
|
|
357
|
-
Setting a Reconnect Delay and Timeout
|
|
358
|
-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
359
|
-
|
|
360
|
-
.. index:: ReconnectDelayStrategy, reconnection delay, reconnection
|
|
361
|
-
timeout,
|
|
362
|
-
|
|
363
|
-
You can control the amount of time between reconnection attempts and
|
|
364
|
-
set a total amount of time for the ``HAClient`` to attempt to reconnect.
|
|
365
|
-
|
|
366
|
-
The AMPS Python client includes a method for setting a delay strategy on
|
|
367
|
-
a client, ``set_reconnect_delay_strategy``. This method accepts an
|
|
368
|
-
instance of any type that provides the methods
|
|
369
|
-
``get_connect_wait_duration`` and ``reset``, as described in the API
|
|
370
|
-
documentation.
|
|
371
|
-
|
|
372
|
-
While you can easily implement your own delay strategy, the client also
|
|
373
|
-
provides two delay strategies:
|
|
374
|
-
|
|
375
|
-
- ``FixedDelayStrategy`` provides the same delay each time the
|
|
376
|
-
``HAClient`` tries to reconnect.
|
|
377
|
-
|
|
378
|
-
- ``ExponentialDelayStrategy`` provides an exponential backoff until a
|
|
379
|
-
connection attempt succeeds.
|
|
380
|
-
|
|
381
|
-
To use either of these classes, you simply create an instance, set the
|
|
382
|
-
appropriate parameters, and install that instance as the delay strategy
|
|
383
|
-
for the ``HAClient``. For example, the following code sets up a
|
|
384
|
-
reconnect delay that starts at 200ms and increases the delay by 1.5
|
|
385
|
-
times after each failure. The strategy allows a maximum delay between
|
|
386
|
-
connection attempts of 5 seconds, and will not retry longer than 60
|
|
387
|
-
seconds.
|
|
388
|
-
|
|
389
|
-
.. code:: python
|
|
390
|
-
|
|
391
|
-
theClient = AMPS.HAClient("myClient")
|
|
392
|
-
|
|
393
|
-
theClient.set_reconnect_delay_strategy( \
|
|
394
|
-
AMPS.ExponentialDelayStrategy( \
|
|
395
|
-
initial_delay=200, \
|
|
396
|
-
maximum_delay=5000, \
|
|
397
|
-
backoff_exponent=1.5, \
|
|
398
|
-
maximum_retry_time=60000) \
|
|
399
|
-
)
|
|
400
|
-
|
|
401
|
-
Implementing a Server Chooser
|
|
402
|
-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
403
|
-
|
|
404
|
-
.. index:: ServerChooser Interface,
|
|
405
|
-
|
|
406
|
-
As described above, you provide the ``HAClient``
|
|
407
|
-
with connection strings to one or more AMPS servers using a
|
|
408
|
-
``ServerChooser``. The purpose of a ``ServerChooser`` is to provide
|
|
409
|
-
information to the ``HAClient``. A ``ServerChooser`` does not manage the
|
|
410
|
-
reconnection process, and should not call methods on the ``HAClient``.
|
|
411
|
-
|
|
412
|
-
A ``ServerChooser`` has two required responsibilities to the
|
|
413
|
-
``HAClient``:
|
|
414
|
-
|
|
415
|
-
- Tells the ``HAClient`` the connection string for the server to
|
|
416
|
-
connect to. If there are no servers, or the ``ServerChooser`` wants
|
|
417
|
-
the connection to fail, the ``ServerChooser`` returns an empty
|
|
418
|
-
string.
|
|
419
|
-
|
|
420
|
-
To provide this information, the ``ServerChooser`` implements the
|
|
421
|
-
``get_current_uri()`` method.
|
|
422
|
-
|
|
423
|
-
- Provides an ``Authenticator`` for the current connection string. This
|
|
424
|
-
is especially important for installations where different servers
|
|
425
|
-
require different credentials or authentication tokens must be reset
|
|
426
|
-
after each connection attempt.
|
|
427
|
-
|
|
428
|
-
To provide the authenticator, the ``ServerChooser`` implements the
|
|
429
|
-
``get_current_authenticator()`` method.
|
|
430
|
-
|
|
431
|
-
The ``HAClient`` calls the ``get_current_uri()`` and
|
|
432
|
-
``get_current_authenticator()`` methods each time it needs to make a
|
|
433
|
-
connection.
|
|
434
|
-
|
|
435
|
-
Each time a connection succeeds, the ``HAClient`` calls the
|
|
436
|
-
``report_success()`` method of the ``ServerChooser``. Each time a
|
|
437
|
-
connection fails, the ``HAClient`` calls the ``report_failure()`` method
|
|
438
|
-
of the ``ServerChooser``. The ``HAClient`` does not require the
|
|
439
|
-
``ServerChooser`` to take any particular action when it calls these
|
|
440
|
-
methods. These methods are provided for the ``HAClient`` to do internal
|
|
441
|
-
maintenance, logging, or record keeping. For example, an ``HAClient``
|
|
442
|
-
might keep a list of available URIs with a current failure count, and
|
|
443
|
-
skip over URIs that have failed more than 5 consecutive times until all
|
|
444
|
-
URIs in the list have failed more than 5 consecutive times.
|
|
445
|
-
|
|
446
|
-
When the ``ServerChooser`` returns an empty string from
|
|
447
|
-
``get_current_uri()``, indicating that no servers are available for
|
|
448
|
-
connection, the ``HAClient`` calls the ``get_error()`` method on the
|
|
449
|
-
``ServerChooser``, if one is provided, and includes the string returned
|
|
450
|
-
by ``get_error()`` in the generated exception.
|
|
451
|
-
|
|
452
|
-
Heartbeats and Failure Detection
|
|
453
|
-
---------------------------------
|
|
454
|
-
|
|
455
|
-
.. index:: Heartbeat,
|
|
456
|
-
|
|
457
|
-
Use of the ``HAClient`` allows your application to quickly recover from
|
|
458
|
-
detected connection failures. By default, connection failure detection
|
|
459
|
-
occurs when AMPS receives an operating system error on the connection.
|
|
460
|
-
This system may result in unpredictable delays in detecting a connection
|
|
461
|
-
failure on the client, particularly when failures in network routing
|
|
462
|
-
hardware occur, and the client primarily acts as a subscriber.
|
|
463
|
-
|
|
464
|
-
The heartbeat feature of the AMPS client allows connection failure to be
|
|
465
|
-
detected quickly. Heartbeats ensure that regular messages are sent
|
|
466
|
-
between the AMPS client and server on a predictable schedule. The AMPS
|
|
467
|
-
client and server both assume disconnection has occurred if these
|
|
468
|
-
regular heartbeats cease, ensuring disconnection is detected in a timely
|
|
469
|
-
manner. To use heartbeating, call the ``set_heartbeat`` method on
|
|
470
|
-
``Client`` or ``HAClient``:
|
|
471
|
-
|
|
472
|
-
.. code:: python
|
|
473
|
-
|
|
474
|
-
memoryClient = AMPS.HAClient("importantStuff")
|
|
475
|
-
...
|
|
476
|
-
memoryClient.set_heartbeat(3)
|
|
477
|
-
memoryClient.connect_and_logon()
|
|
478
|
-
...
|
|
479
|
-
|
|
480
|
-
**Example 9.3:** *Heartbeat example*
|
|
481
|
-
|
|
482
|
-
.. index:: Method; set_heartbeat(), set_heartbeat() method,
|
|
483
|
-
|
|
484
|
-
Method ``set_heartbeat`` takes one parameter: the heartbeat interval. The
|
|
485
|
-
heartbeat interval specifies the periodicity of heartbeat messages sent
|
|
486
|
-
by the server: the value ``3`` indicates messages are sent on a
|
|
487
|
-
three-second interval. If the client receives no messages in a
|
|
488
|
-
six-second window (two heartbeat intervals), the connection is assumed
|
|
489
|
-
to be dead, and the ``HAClient`` attempts reconnection. An additional
|
|
490
|
-
variant of ``set_heartbeat`` allows the idle period to be set to a value
|
|
491
|
-
other than two heartbeat intervals. (The server, however, will always consider
|
|
492
|
-
a connection to be closed after two heartbeat intervals without any traffic.)
|
|
493
|
-
|
|
494
|
-
Notice that, for ``HAClient``, ``setHeartbeat`` must be called before
|
|
495
|
-
the client is connected. For ``Client``, ``setHeartbeat`` must be called
|
|
496
|
-
after the client is connected.
|
|
497
|
-
|
|
498
|
-
.. caution::
|
|
499
|
-
|
|
500
|
-
Heartbeats are serviced on the receive thread created by the AMPS
|
|
501
|
-
client. Your application must not block the receive thread for longer
|
|
502
|
-
than the heartbeat interval, or the application is subject to being
|
|
503
|
-
disconnected.
|
|
504
|
-
|
|
505
|
-
Considerations for Publishers
|
|
506
|
-
-----------------------------
|
|
507
|
-
|
|
508
|
-
.. index:: Method; publish(), publish() method, Store interface,
|
|
509
|
-
Method; get_unpersisted_count(), get_unpersisted_count() method,
|
|
510
|
-
|
|
511
|
-
Publishing with an ``HAClient`` is nearly identical to regular
|
|
512
|
-
publishing; you simply call the ``publish()`` method with your message’s
|
|
513
|
-
topic and data. The AMPS client sends the message to AMPS, and then
|
|
514
|
-
returns from the ``publish()`` call. For maximum performance, the client
|
|
515
|
-
does not wait for the AMPS server to acknowledge that the message has
|
|
516
|
-
been received.
|
|
517
|
-
|
|
518
|
-
When an ``HAClient`` sets a publish store, the publish store retains a
|
|
519
|
-
copy of each outgoing message and requests that AMPS acknowledge that
|
|
520
|
-
the message has been persisted. The AMPS server acknowledges messages
|
|
521
|
-
back to the publisher. Acknowledgments can be delivered for multiple
|
|
522
|
-
messages at periodic intervals (for topics recorded in the transaction
|
|
523
|
-
log) or after each message (for topics that are not recorded in the
|
|
524
|
-
transaction log). When an acknowledgment for a message is received, the
|
|
525
|
-
HAClient removes that message from the bookmark store. When a connection
|
|
526
|
-
to a server is made, the ``HAClient``\ automatically determines which
|
|
527
|
-
messages from the publish store (if any) the server has not processed,
|
|
528
|
-
and replays those messages to the server once the connection is
|
|
529
|
-
established.
|
|
530
|
-
|
|
531
|
-
For reliable publishers, the application must choose how best to handle
|
|
532
|
-
application shutdown. For example, it is possible for the network to
|
|
533
|
-
fail immediately after the publisher sends the message, while the
|
|
534
|
-
message is still in transit. In this case, the publisher has sent the
|
|
535
|
-
message, but the server has not processed it and acknowledged it. During
|
|
536
|
-
normal operation, the ``HAClient`` will automatically connect and retry
|
|
537
|
-
the message. On shutdown, however, the application must decide whether
|
|
538
|
-
to wait for messages to be acknowledged, or whether to exit.
|
|
539
|
-
|
|
540
|
-
Publish store implementations provide an ``unpersisted_count()`` method
|
|
541
|
-
that reports the number of messages that have not yet been acknowledged
|
|
542
|
-
by the AMPS server. When the ``unpersisted_count()`` reaches ``0``,
|
|
543
|
-
there are no unpersisted messages in the local publish store.
|
|
544
|
-
|
|
545
|
-
For the highest level of safety, an application can wait until the
|
|
546
|
-
``unpersisted_count()`` reaches ``0``, which indicates that all of the
|
|
547
|
-
messages have been persisted to the instance that the application is
|
|
548
|
-
connected to, and the synchronous replication destinations configured
|
|
549
|
-
for that instance. When a synchronous replication destination goes
|
|
550
|
-
offline, this approach will cause the publisher to wait to exit until
|
|
551
|
-
the destination comes back online or until the destination is downgraded
|
|
552
|
-
to asynchronous replication.
|
|
553
|
-
|
|
554
|
-
For applications that are shut down periodically for short periods of
|
|
555
|
-
time (for example, applications that are only offline during a weekly
|
|
556
|
-
maintenance window), another approach is to use the ``publish_flush()``
|
|
557
|
-
method to ensure that messages are delivered to AMPS, and then rely on
|
|
558
|
-
the connection logic to replay messages as necessary when the
|
|
559
|
-
application restarts.
|
|
560
|
-
|
|
561
|
-
For example, the following code flushes messages to AMPS, then warns if
|
|
562
|
-
not all messages have been acknowledged:
|
|
563
|
-
|
|
564
|
-
.. code:: python
|
|
565
|
-
|
|
566
|
-
client = AMPS.HAClient("ha-publisher",
|
|
567
|
-
"/mnt/fastDisk/moreImportantMessages.outgoing",
|
|
568
|
-
"/mnt/fastDisk/moreImportantMessages.incoming")
|
|
569
|
-
...
|
|
570
|
-
client.connect_and_logon()
|
|
571
|
-
|
|
572
|
-
# Publish messages
|
|
573
|
-
...
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
# We think we are done, but the server may not
|
|
577
|
-
# have received or acknowledged all messages yet.
|
|
578
|
-
|
|
579
|
-
# Wait for the server to have received all messages.
|
|
580
|
-
# The program could also specify a timeout in this
|
|
581
|
-
# command to avoid blocking forever if the network
|
|
582
|
-
# is down or all servers are offline.
|
|
583
|
-
|
|
584
|
-
client.publish_flush()
|
|
585
|
-
|
|
586
|
-
# Print warning to the console if messages have
|
|
587
|
-
# been published but not yet acknowledged as
|
|
588
|
-
# persisted
|
|
589
|
-
|
|
590
|
-
if (client.get_unpersisted_count() > 0):
|
|
591
|
-
print( "all messages have been published, " \
|
|
592
|
-
+ " but not all have been persisted" )
|
|
593
|
-
|
|
594
|
-
client.disconnect()
|
|
595
|
-
|
|
596
|
-
**Example 9.4:** *HAPublisher*
|
|
597
|
-
|
|
598
|
-
.. index:: Method; disconnect(), disconnect() method, Method; publish(),
|
|
599
|
-
publish() method, Method; get_unpersisted_count(),
|
|
600
|
-
get_unpersisted_count() method
|
|
601
|
-
|
|
602
|
-
In this example, the client sends each
|
|
603
|
-
message immediately when ``publish()`` is called. If AMPS becomes
|
|
604
|
-
unavailable between the final ``publish()`` and the ``disconnect()``, or
|
|
605
|
-
one of the servers that the AMPS instance replicates to is offline, the
|
|
606
|
-
client may not have received a persisted acknowledgment for all of the
|
|
607
|
-
published messages. For example, if a message has not yet been persisted
|
|
608
|
-
by all of the servers in the replication fabric that are connected with
|
|
609
|
-
synchronous replication, AMPS will not have acknowledged the message.
|
|
610
|
-
|
|
611
|
-
Before shutting down the client, the code does two This code first
|
|
612
|
-
flushes messages to the server to ensure that all messages have been
|
|
613
|
-
delivered to AMPS.
|
|
614
|
-
|
|
615
|
-
The code next checks to see if all of the messages in the publish store
|
|
616
|
-
have been acknowledged as persisted by AMPS. If the messages have not
|
|
617
|
-
been acknowledged, they will remain in the publish store file and will
|
|
618
|
-
be published to AMPS, if necessary, the next time the application
|
|
619
|
-
connects. An application may choose to loop until
|
|
620
|
-
``get_unpersisted_count()`` returns ``0``, or (as we do in this case)
|
|
621
|
-
simply warn that AMPS has not confirmed that the messages are fully
|
|
622
|
-
persisted. The behavior you choose in your application should be
|
|
623
|
-
consistent with the high-availability guarantees your application needs
|
|
624
|
-
to provide.
|
|
625
|
-
|
|
626
|
-
.. caution::
|
|
627
|
-
|
|
628
|
-
AMPS uses the name of the ``HAClient`` to determine the
|
|
629
|
-
origin of messages. For the AMPS server to correctly
|
|
630
|
-
identify duplicate messages, each instance of an
|
|
631
|
-
application that publishes messages must use a distinct
|
|
632
|
-
name. That name must be consistent across different runs
|
|
633
|
-
of the application.
|
|
634
|
-
|
|
635
|
-
If your application crashes or is terminated, some published messages
|
|
636
|
-
may not have been persisted in the AMPS server. If you use the
|
|
637
|
-
file-based store—in other words, if you provide file names for
|
|
638
|
-
persistent storage when you create the ``HAClient``—the ``HAClient``
|
|
639
|
-
will recover the messages, and once logged on, will correlate the
|
|
640
|
-
message store to what the AMPS server has received, re-publishing any
|
|
641
|
-
missing messages. This occurs automatically when ``HAClient`` connects,
|
|
642
|
-
without any explicit consideration in your code, other than ensuring
|
|
643
|
-
that the same file name is used to create the ``HAClient`` if recovery
|
|
644
|
-
is desired.
|
|
645
|
-
|
|
646
|
-
.. warning::
|
|
647
|
-
|
|
648
|
-
AMPS provides persisted acknowledgment messages for
|
|
649
|
-
topics that do not have a transaction log enabled.
|
|
650
|
-
However, the level of durability provided for topics with
|
|
651
|
-
no transaction log is minimal. Learn more about
|
|
652
|
-
transaction logs in the *User Guide*.
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
.. include:: ./detecting-early-failover-python.inc
|
|
656
|
-
|
|
657
|
-
Considerations for Subscribers
|
|
658
|
-
------------------------------
|
|
659
|
-
|
|
660
|
-
``HAClient`` provides two important features for applications that
|
|
661
|
-
subscribe to one or more topics: re-subscription, and a bookmark store
|
|
662
|
-
to track the correct point at which to resume a bookmark subscription.
|
|
663
|
-
|
|
664
|
-
Resubscription With Asynchronous Message Processing
|
|
665
|
-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
666
|
-
|
|
667
|
-
Any asynchronous subscription placed using an ``HAClient`` is
|
|
668
|
-
automatically reinstated after a disconnect or a failover. These
|
|
669
|
-
subscriptions are placed in an in-memory ``SubscriptionManager``, which
|
|
670
|
-
is created automatically when the ``HAClient`` is instantiated.
|
|
671
|
-
|
|
672
|
-
When a re-subscription occurs, the AMPS Python Client re-executes the
|
|
673
|
-
command as originally submitted, including the original topic, options,
|
|
674
|
-
and so on. AMPS sends the subscriber any messages for the specified
|
|
675
|
-
topic (or topic expression) that are published after the subscription is
|
|
676
|
-
placed. For a ``sow_and_subscribe`` command, this means that the client
|
|
677
|
-
reissues the full command, including the SOW query as well as the
|
|
678
|
-
subscription.
|
|
679
|
-
|
|
680
|
-
Resubscription With Synchronous Message Processing
|
|
681
|
-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
682
|
-
|
|
683
|
-
The ``HAClient`` (starting with the AMPS Python Client version 4.3.1.1)
|
|
684
|
-
does not track synchronous message processing subscriptions in the
|
|
685
|
-
``SubscriptionManager``. The reason for this is to preserve the iterator
|
|
686
|
-
semantics. That is, once the ``MessageStream`` indicates that there are
|
|
687
|
-
no more elements in the stream, it does not suddenly produce more
|
|
688
|
-
elements.
|
|
689
|
-
|
|
690
|
-
To resubscribe when the ``HAClient`` fails over, you can simply reissue
|
|
691
|
-
the subscription. For example, the snippet below re-issues the subscribe
|
|
692
|
-
command when the message stream ends:
|
|
693
|
-
|
|
694
|
-
.. code:: python
|
|
695
|
-
|
|
696
|
-
while still_need_to_process:
|
|
697
|
-
# Exiting the for loop is the end of stream.
|
|
698
|
-
# For a subscribe, this likely means that the
|
|
699
|
-
# client has disconnected.
|
|
700
|
-
try:
|
|
701
|
-
for message in client.subscribe("messages"):
|
|
702
|
-
# process messages here
|
|
703
|
-
# check condition on still_need_to_process
|
|
704
|
-
if still_need_to_process == False: break
|
|
705
|
-
except AMPS.DisconnectedException as e:
|
|
706
|
-
pass
|
|
707
|
-
|
|
708
|
-
**Example 9.5:** *Resubscription*
|
|
709
|
-
|
|
710
|
-
Bookmark Stores
|
|
711
|
-
^^^^^^^^^^^^^^^^
|
|
712
|
-
|
|
713
|
-
In cases where it is critical not to miss a single message, it is
|
|
714
|
-
important to be able to resume a subscription at the exact point that a
|
|
715
|
-
failure occurred. In this case, simply recreating a subscription isn't
|
|
716
|
-
sufficient. Even though the subscription is recreated, the subscriber
|
|
717
|
-
may have been disconnected at precisely the wrong time, and will not see
|
|
718
|
-
the message.
|
|
719
|
-
|
|
720
|
-
To ensure delivery of every message from a topic or set of topics, the
|
|
721
|
-
AMPS ``HAClient`` includes a ``BookmarkStore`` that, combined with the
|
|
722
|
-
bookmark subscription and transaction log functionality in the AMPS
|
|
723
|
-
server, ensures that clients receive any messages that might have been
|
|
724
|
-
missed. The client stores the bookmark associated with each message
|
|
725
|
-
received, and tracks whether the application has processed that message;
|
|
726
|
-
if a disconnect occurs, the client uses the BookmarkStore to determine
|
|
727
|
-
the correct resubscription point, and sends that bookmark to AMPS when
|
|
728
|
-
it re-subscribes. AMPS then replays messages from its transaction log
|
|
729
|
-
from the point after the specified bookmark, thus ensuring the client is
|
|
730
|
-
completely up-to-date.
|
|
731
|
-
|
|
732
|
-
``HAClient`` helps you to take advantage of this bookmark mechanism
|
|
733
|
-
through the ``BookmarkStore`` interface and ``bookmarkSubscribe()``
|
|
734
|
-
method on ``Client``. When you create subscriptions with
|
|
735
|
-
``bookmarkSubscribe()``, whenever a disconnection or failover occurs,
|
|
736
|
-
your application automatically resubscribes to the message after the
|
|
737
|
-
last message it processed. ``HAClients`` created by
|
|
738
|
-
``createFileBacked()`` additionally store these bookmarks on disk, so
|
|
739
|
-
that the application can restart with the appropriate message if the
|
|
740
|
-
client application fails and restarts.
|
|
741
|
-
|
|
742
|
-
To take advantage of bookmark subscriptions, do the following:
|
|
743
|
-
|
|
744
|
-
- Ensure the topic(s) to be subscribed are included in a transaction
|
|
745
|
-
log. See the *User Guide* for information on how to specify the
|
|
746
|
-
contents of a transaction log.
|
|
747
|
-
|
|
748
|
-
.. index:: SubId,
|
|
749
|
-
|
|
750
|
-
- Use ``bookmark_subscribe()`` instead of ``subscribe()`` when
|
|
751
|
-
creating a ``subscription()``, and decide how the application will
|
|
752
|
-
manage subscription identifiers (SubIds). If you are using a
|
|
753
|
-
``Command`` object, you can simply set the bookmark on that object.
|
|
754
|
-
|
|
755
|
-
.. index:: Method; discard(), discard() method,
|
|
756
|
-
|
|
757
|
-
- Use the ``discard()`` method in message handlers to indicate
|
|
758
|
-
when a message has been fully processed by the application,
|
|
759
|
-
that is, when the application does not need to receive
|
|
760
|
-
the message again if the application fails over.
|
|
761
|
-
|
|
762
|
-
The following example creates a bookmark subscription against a
|
|
763
|
-
transaction-logged topic, and fully processes each message as soon as it
|
|
764
|
-
is delivered:
|
|
765
|
-
|
|
766
|
-
.. code:: python
|
|
767
|
-
|
|
768
|
-
class MessagePrinter(object):
|
|
769
|
-
def __init__(self, client):
|
|
770
|
-
self._client = client
|
|
771
|
-
|
|
772
|
-
def __call__(self, message):
|
|
773
|
-
print (message.get_data())
|
|
774
|
-
self._client.discard(message)
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
...
|
|
778
|
-
|
|
779
|
-
client = AMPS.HAClient(
|
|
780
|
-
"aClient",
|
|
781
|
-
"/logs/aClient.publishLog",
|
|
782
|
-
"/logs/aClient.subscribeLog")
|
|
783
|
-
|
|
784
|
-
# Create ServerChooser, populate chooser, connect client
|
|
785
|
-
...
|
|
786
|
-
|
|
787
|
-
client.execute_async( \
|
|
788
|
-
AMPS.Command("subscribe") \
|
|
789
|
-
.set_topic("myTopic") \
|
|
790
|
-
.set_bookmark(AMPS.Client.Bookmarks.MOST_RECENT) \
|
|
791
|
-
.set_sub_id("MySubID"), \
|
|
792
|
-
MessagePrinter(client))
|
|
793
|
-
|
|
794
|
-
**Example 9.6:** *HAClient subscription*
|
|
795
|
-
|
|
796
|
-
In this example, the client is a file-backed client, meaning that
|
|
797
|
-
arriving bookmarks will be stored in a file (``aClient.subscribeLog``).
|
|
798
|
-
Storing these bookmarks in a file allows the application to restart the
|
|
799
|
-
subscription from the last message processed, in the event of either
|
|
800
|
-
server or client failure.
|
|
801
|
-
|
|
802
|
-
.. tip::
|
|
803
|
-
|
|
804
|
-
For optimum performance, it is critical to discard every
|
|
805
|
-
message once its processing is complete. If a message is
|
|
806
|
-
never discarded, it remains in the bookmark store. During
|
|
807
|
-
re-subscription, ``HAClient`` always restarts the
|
|
808
|
-
bookmark subscription with the oldest undiscarded
|
|
809
|
-
message, and then filters out any more recent messages
|
|
810
|
-
that have been discarded. If an old message remains in
|
|
811
|
-
the store, but is no longer important for the
|
|
812
|
-
application’s functioning, then the client and the AMPS
|
|
813
|
-
server will incur unnecessary network, disk, and CPU
|
|
814
|
-
activity.
|
|
815
|
-
|
|
816
|
-
The fourth parameter, ``sub_id``, specifies an identifier to be used for
|
|
817
|
-
this subscription. Passing ``None`` causes ``HAClient`` to generate one
|
|
818
|
-
and return it, like most other ``Client`` functions. However, if you
|
|
819
|
-
wish to resume a subscription from a previous point after the
|
|
820
|
-
application has terminated and restarted, the application must pass the
|
|
821
|
-
same subscription ID as during its previous run. Passing a different
|
|
822
|
-
subscription ID bypasses any recovery mechanisms, creating an entirely
|
|
823
|
-
new subscription. When you use an existing subscription ID, the
|
|
824
|
-
``HAClient`` locates the last-used bookmark for that subscription in the
|
|
825
|
-
local store, and attempts to re-subscribe from that point.
|
|
826
|
-
|
|
827
|
-
.. index:: Method; subscribe(), subscribe() method, Parameters; NOW,
|
|
828
|
-
NOW parameter
|
|
829
|
-
|
|
830
|
-
- ``Client.Bookmarks.NOW`` specifies that the subscription
|
|
831
|
-
should begin from the moment the server receives the subscription
|
|
832
|
-
request. This results in the same messages being delivered as if you
|
|
833
|
-
had invoked ``subscribe()`` instead, except that the messages will be
|
|
834
|
-
accompanied by bookmarks. This is also the behavior that results if
|
|
835
|
-
you supply an invalid bookmark.
|
|
836
|
-
|
|
837
|
-
.. index:: Parameters; EPOCH, EPOCH parameter,
|
|
838
|
-
|
|
839
|
-
- ``Client.Bookmarks.EPOCH``
|
|
840
|
-
specifies that the subscription should begin from the beginning of
|
|
841
|
-
the AMPS transaction log (that is, the first entry in the oldest
|
|
842
|
-
journal file for the transaction log).
|
|
843
|
-
|
|
844
|
-
.. index:: Parameters; MOST_RECENT, MOST_RECENT parameter,
|
|
845
|
-
|
|
846
|
-
- ``Client.Bookmarks.MOST_RECENT`` specifies that the
|
|
847
|
-
subscription should begin from the last-used message in the
|
|
848
|
-
associated ``BookmarkStore``. Alternatively, if this subscription has
|
|
849
|
-
not been seen before, it instructs the subscription to begin with
|
|
850
|
-
``EPOCH``. This is the most common value for this parameter, and is
|
|
851
|
-
the value used in the preceding example. By using ``MOST_RECENT``,
|
|
852
|
-
the application automatically resumes from wherever the subscription
|
|
853
|
-
left off, taking into account any messages that have already been
|
|
854
|
-
processed and discarded.
|
|
855
|
-
|
|
856
|
-
When the ``HAClient`` re-subscribes after a disconnection and
|
|
857
|
-
reconnection, it always uses ``MOST_RECENT``, ensuring that the
|
|
858
|
-
continued subscription always begins from the last message used before
|
|
859
|
-
the disconnect, so that no messages are missed.
|
|
860
|
-
|
|
861
|
-
Conclusion
|
|
862
|
-
----------
|
|
863
|
-
|
|
864
|
-
With only a few changes, most AMPS applications can take advantage of
|
|
865
|
-
the ``HAClient`` and associated classes to become more highly-available
|
|
866
|
-
and resilient. Using the ``PublishStore``, publishers can ensure that
|
|
867
|
-
every message published has actually been persisted by AMPS. Using
|
|
868
|
-
``BookmarkStore``, subscribers can make sure that there are no gaps or
|
|
869
|
-
duplicates in the messages received. ``HAClient`` makes both kinds of
|
|
870
|
-
applications more resilient to network and server outages and temporary
|
|
871
|
-
issues, and, by using the file based ``HAClient``, clients can recover
|
|
872
|
-
their state after an unexpected termination or crash. Though
|
|
873
|
-
``HAClient`` provides useful defaults for the ``Store``,
|
|
874
|
-
``BookmarkStore``, and ``ServerChooser``, you
|
|
875
|
-
can customize any or all of these to the specific needs of your
|
|
876
|
-
application and architecture.
|