amps-python-client 5.3.4.1__zip → 5.3.4.2__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.2/PKG-INFO +112 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/.buildinfo +4 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/intro.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/logon.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/publishing.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/removing.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/utilities.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/index.rst.txt +36 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/ack-messages.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/content-messages.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/intro.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/logon.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/protocol-reference.html +93 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/publishing.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/query-delimiters.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/query-subscribe.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/removing.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/utilities.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/genindex.html +97 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/index.html +98 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/objects.inv +6 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/search.html +107 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/searchindex.js +1 -0
- amps-python-client-5.3.4.2/docs/html/.buildinfo +4 -0
- amps-python-client-5.3.4.2/docs/html/code.html +6616 -0
- amps-python-client-5.3.4.2/docs/html/genindex.html +1363 -0
- amps-python-client-5.3.4.2/docs/html/index.html +131 -0
- amps-python-client-5.3.4.2/docs/html/objects.inv +0 -0
- amps-python-client-5.3.4.2/docs/html/py-modindex.html +111 -0
- amps-python-client-5.3.4.2/docs/html/search.html +107 -0
- amps-python-client-5.3.4.2/docs/html/searchindex.js +1 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/deltas.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/error-handling.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/exceptions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/first-program.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/high-availability.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/installing.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/introduction.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/html/.buildinfo +4 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/advanced-topics.rst.txt +398 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +26 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/creating-commands.rst.txt +159 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/deltas.rst.txt +79 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/error-handling.rst.txt +481 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/exceptions.rst.txt +123 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/first-program.rst.txt +168 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/high-availability.rst.txt +879 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/installing.rst.txt +184 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/introduction.rst.txt +50 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +32 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/performance-tips.rst.txt +432 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/queues.rst.txt +282 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/sow.rst.txt +294 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/subscriptions.rst.txt +374 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/utilities.rst.txt +214 -0
- amps-python-client-5.3.4.2/docs/python/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/advanced-topics.html +447 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/cpp-compiler-list.html +92 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/cpp-feature-table.html +156 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/creating-commands.html +2882 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/deltas.html +169 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/error-handling.html +745 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/exceptions.html +266 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/first-program.html +526 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/high-availability.html +1017 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/installing.html +264 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/introduction.html +245 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/moving-from-python-lite.html +118 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/performance-tips.html +499 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/queues.html +352 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/sow.html +383 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/subscriptions.html +535 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/utilities.html +302 -0
- amps-python-client-5.3.4.2/docs/python/html/genindex.html +351 -0
- amps-python-client-5.3.4.2/docs/python/html/index.html +382 -0
- amps-python-client-5.3.4.2/docs/python/html/objects.inv +0 -0
- amps-python-client-5.3.4.2/docs/python/html/search.html +107 -0
- amps-python-client-5.3.4.2/docs/python/html/searchindex.js +1 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/.buildinfo +4 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/chapters/crankitup.html +271 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/chapters/equipment.html +105 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/genindex.html +97 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/index.html +381 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/objects.inv +0 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/search.html +107 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/searchindex.js +1 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/events.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/views.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/.buildinfo +4 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/acks.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/actions.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/daemon.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/delta.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/distribution.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/events.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/glossary.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/ha.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/intro.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/logging.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/oof.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/operation.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/queues.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/replication.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/securing.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/sow.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/transports.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/txlog.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/usecases.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/utilities.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/views.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/index.rst.txt +62 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/acks.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/actions.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/amps-statistics.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/amps_expressions.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/amps_functions.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/auxiliary_modules.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/config-file-shortcuts.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/conflated_topics.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/constructing-fields.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/daemon.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/delta.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/distribution.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/enrichment.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/events.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/file_format_versions.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/glossary.html +92 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/ha.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/installing_and_starting.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/intro.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/logging.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/messageTypes.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/monitoring.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/oof.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/operation.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/pub_sub.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/queues.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/replication.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/securing.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/sow.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/sow_queries.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/spark.html +819 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/transports.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/troubleshooting.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/txlog.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/usecases.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/utilities.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/views.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/genindex.html +133 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/index.html +96 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/objects.inv +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/search.html +106 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/searchindex.js +1 -0
- amps-python-client-5.3.4.2/include/ampspy_bookmarkstore.hpp +63 -0
- amps-python-client-5.3.4.2/include/ampspy_compat.h +63 -0
- amps-python-client-5.3.4.2/include/ampspy_defs.hpp +181 -0
- amps-python-client-5.3.4.2/include/ampspy_recoverypointadapter.hpp +52 -0
- amps-python-client-5.3.4.2/include/ampspy_shims.hpp +113 -0
- amps-python-client-5.3.4.2/include/ampspy_type_object.hpp +242 -0
- amps-python-client-5.3.4.2/include/ampspy_types.hpp +1139 -0
- amps-python-client-5.3.4.2/include/ampspyver.h +30 -0
- amps-python-client-5.3.4.2/index.html +66 -0
- amps-python-client-5.3.4.2/samples/AMPSConsolePublisher.py +59 -0
- amps-python-client-5.3.4.2/samples/AMPSConsoleSubscriber.py +63 -0
- amps-python-client-5.3.4.2/samples/AMPSFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.2/samples/AMPSFIXShredderSubscriber.py +69 -0
- amps-python-client-5.3.4.2/samples/AMPSNVFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.2/samples/AMPSNVFIXShredderSubscriber.py +67 -0
- amps-python-client-5.3.4.2/samples/AMPSPublishForReplay.py +81 -0
- amps-python-client-5.3.4.2/samples/AMPSQueueConsumer.py +69 -0
- amps-python-client-5.3.4.2/samples/AMPSQueuePublisher.py +59 -0
- amps-python-client-5.3.4.2/samples/AMPSSOWConsolePublisher.py +67 -0
- amps-python-client-5.3.4.2/samples/AMPSSOWConsoleSubscriber.py +77 -0
- amps-python-client-5.3.4.2/samples/AMPSSOWandSubscribeConsoleSubscriber.py +79 -0
- amps-python-client-5.3.4.2/samples/AMPSSOWandSubscribeWithOOF.py +108 -0
- amps-python-client-5.3.4.2/samples/AMPSSubscribeForReplay.py +128 -0
- amps-python-client-5.3.4.2/samples/AMPSUpdateForOOF.py +123 -0
- amps-python-client-5.3.4.2/samples/CompositeMessagePublisher.py +84 -0
- amps-python-client-5.3.4.2/samples/CompositeMessageSubscriber.py +87 -0
- amps-python-client-5.3.4.2/samples/RandomServerChooser.py +66 -0
- amps-python-client-5.3.4.2/samples/sample.xml +335 -0
- amps-python-client-5.3.4.2/setup.py +210 -0
- amps-python-client-5.3.4.2/setup_amps.py +94 -0
- amps-python-client-5.3.4.2/src/ampspy_shims.cpp +214 -0
- amps-python-client-5.3.4.2/src/ampspy_type_object.cpp +495 -0
- amps-python-client-5.3.4.2/src/authenticator.cpp +128 -0
- amps-python-client-5.3.4.2/src/bookmarkstore.cpp +246 -0
- amps-python-client-5.3.4.2/src/client.cpp +2648 -0
- amps-python-client-5.3.4.2/src/client_docs.h +956 -0
- amps-python-client-5.3.4.2/src/cmessagehandler.cpp +161 -0
- amps-python-client-5.3.4.2/src/command.cpp +164 -0
- amps-python-client-5.3.4.2/src/command_docs.h +269 -0
- amps-python-client-5.3.4.2/src/compositemessagebuilder.cpp +113 -0
- amps-python-client-5.3.4.2/src/compositemessageparser.cpp +151 -0
- amps-python-client-5.3.4.2/src/conflatingrecoverypointadapter.cpp +197 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/BlockPublishStore.hpp +2053 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/BlockStore.hpp +677 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/BookmarkStore.hpp +542 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/Buffer.hpp +214 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/CompositeMessageBuilder.hpp +174 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/CompositeMessageParser.hpp +151 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/DefaultServerChooser.hpp +162 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/Field.hpp +719 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/HAClient.hpp +370 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/HAClientImpl.hpp +460 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/HybridPublishStore.hpp +481 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/LoggedBookmarkStore.hpp +1256 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MMapBookmarkStore.hpp +1283 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MMapStoreBuffer.hpp +290 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MemoryBookmarkStore.hpp +1628 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MemoryPublishStore.hpp +66 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MemoryStoreBuffer.hpp +244 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MemorySubscriptionManager.hpp +850 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/Message.hpp +1819 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MessageRouter.hpp +647 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/PublishStore.hpp +158 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ReconnectDelayStrategy.hpp +106 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +317 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/RecoveryPoint.hpp +323 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/RecoveryPointAdapter.hpp +501 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/RingBookmarkStore.hpp +669 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +494 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ServerChooser.hpp +145 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ServerChooserImpl.hpp +95 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/amps.h +803 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/amps_impl.h +208 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/amps_ssl.h +78 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ampscrc.hpp +210 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ampsplusplus.hpp +8850 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ampsuri.h +84 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ampsver.h +41 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ampsver.h.in +41 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/constants.hpp +194 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/util.hpp +1722 -0
- amps-python-client-5.3.4.2/src/cpp/src/amps_protocol.c +693 -0
- amps-python-client-5.3.4.2/src/cpp/src/amps_ssl.c +489 -0
- amps-python-client-5.3.4.2/src/cpp/src/atfork.c +451 -0
- amps-python-client-5.3.4.2/src/cpp/src/client.c +498 -0
- amps-python-client-5.3.4.2/src/cpp/src/message.c +837 -0
- amps-python-client-5.3.4.2/src/cpp/src/message_generated.h +611 -0
- amps-python-client-5.3.4.2/src/cpp/src/tcp.c +1517 -0
- amps-python-client-5.3.4.2/src/cpp/src/tcps.c +1885 -0
- amps-python-client-5.3.4.2/src/cpp/src/transports.c +129 -0
- amps-python-client-5.3.4.2/src/cpp/src/unix.c +1002 -0
- amps-python-client-5.3.4.2/src/cpp/src/uri.c +301 -0
- amps-python-client-5.3.4.2/src/exponentialdelaystrategy.cpp +137 -0
- amps-python-client-5.3.4.2/src/failedwritehandler.cpp +116 -0
- amps-python-client-5.3.4.2/src/fixbuilder.cpp +146 -0
- amps-python-client-5.3.4.2/src/fixeddelaystrategy.cpp +114 -0
- amps-python-client-5.3.4.2/src/fixshredder.cpp +105 -0
- amps-python-client-5.3.4.2/src/fixshredder_docs.h +38 -0
- amps-python-client-5.3.4.2/src/haclient.cpp +691 -0
- amps-python-client-5.3.4.2/src/haclient_docs.h +186 -0
- amps-python-client-5.3.4.2/src/hybridpublishstore.cpp +137 -0
- amps-python-client-5.3.4.2/src/hybridpublishstore_docs.h +31 -0
- amps-python-client-5.3.4.2/src/memorybookmarkstore.cpp +373 -0
- amps-python-client-5.3.4.2/src/memorybookmarkstore_docs.h +39 -0
- amps-python-client-5.3.4.2/src/memorypublishstore.cpp +160 -0
- amps-python-client-5.3.4.2/src/memorypublishstore_docs.h +32 -0
- amps-python-client-5.3.4.2/src/message.cpp +765 -0
- amps-python-client-5.3.4.2/src/message_docs.h +306 -0
- amps-python-client-5.3.4.2/src/messagestream.cpp +630 -0
- amps-python-client-5.3.4.2/src/messagestream_docs.h +45 -0
- amps-python-client-5.3.4.2/src/mmapbookmarkstore.cpp +422 -0
- amps-python-client-5.3.4.2/src/nvfixbuilder.cpp +160 -0
- amps-python-client-5.3.4.2/src/nvfixbuilder_docs.h +35 -0
- amps-python-client-5.3.4.2/src/nvfixshredder.cpp +99 -0
- amps-python-client-5.3.4.2/src/nvfixshredder_docs.h +43 -0
- amps-python-client-5.3.4.2/src/publishstore.cpp +183 -0
- amps-python-client-5.3.4.2/src/raw_wrapper.cpp +765 -0
- amps-python-client-5.3.4.2/src/reason.cpp +71 -0
- amps-python-client-5.3.4.2/src/recoverypoint.cpp +135 -0
- amps-python-client-5.3.4.2/src/recoverypointadapter.cpp +171 -0
- amps-python-client-5.3.4.2/src/ringbookmarkstore.cpp +360 -0
- amps-python-client-5.3.4.2/src/serverchooser.cpp +245 -0
- amps-python-client-5.3.4.2/src/serverchooser_docs.h +41 -0
- amps-python-client-5.3.4.2/src/sowrecoverypointadapter.cpp +248 -0
- amps-python-client-5.3.4.2/src/store.cpp +62 -0
- amps-python-client-5.3.4.2/src/versioninfo.cpp +175 -0
- 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.2}/HISTORY +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/LICENSE +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/README.md +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/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.2}/docs/command-reference/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/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.2}/docs/command-reference/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_sources/code.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/classic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/default.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/sidebar.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/caution.png +0 -0
- {amps-python-client-5.3.4.1/docs/command-reference → amps-python-client-5.3.4.2/docs/python}/html/_images/caution.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/connection_string.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/important.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/important.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/tip.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/tip.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/warning.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/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.2}/docs/python/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_sources/chapters/crankitup.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_sources/chapters/equipment.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/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.2}/docs/python-quickstart/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/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.2}/docs/python-quickstart/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/resources/custom.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/resources/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_sources/chapters/spark.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/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.2}/docs/user-guide/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/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.2}/docs/user-guide/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/src/cpp/include/amps/amps_generated.h +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/src/cpp/src/amps_protocol_generated.h +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/src/cpp/src/makefile +0 -0
|
@@ -1,1819 +0,0 @@
|
|
|
1
|
-
////////////////////////////////////////////////////////////////////////////
|
|
2
|
-
//
|
|
3
|
-
// Copyright (c) 2010-2023 60East Technologies Inc., All Rights Reserved.
|
|
4
|
-
//
|
|
5
|
-
// This computer software is owned by 60East Technologies Inc. and is
|
|
6
|
-
// protected by U.S. copyright laws and other laws and by international
|
|
7
|
-
// treaties. This computer software is furnished by 60East Technologies
|
|
8
|
-
// Inc. pursuant to a written license agreement and may be used, copied,
|
|
9
|
-
// transmitted, and stored only in accordance with the terms of such
|
|
10
|
-
// license agreement and with the inclusion of the above copyright notice.
|
|
11
|
-
// This computer software or any other copies thereof may not be provided
|
|
12
|
-
// or otherwise made available to any other person.
|
|
13
|
-
//
|
|
14
|
-
// U.S. Government Restricted Rights. This computer software: (a) was
|
|
15
|
-
// developed at private expense and is in all respects the proprietary
|
|
16
|
-
// information of 60East Technologies Inc.; (b) was not developed with
|
|
17
|
-
// government funds; (c) is a trade secret of 60East Technologies Inc.
|
|
18
|
-
// for all purposes of the Freedom of Information Act; and (d) is a
|
|
19
|
-
// commercial item and thus, pursuant to Section 12.212 of the Federal
|
|
20
|
-
// Acquisition Regulations (FAR) and DFAR Supplement Section 227.7202,
|
|
21
|
-
// Government's use, duplication or disclosure of the computer software
|
|
22
|
-
// is subject to the restrictions set forth by 60East Technologies Inc..
|
|
23
|
-
//
|
|
24
|
-
////////////////////////////////////////////////////////////////////////////
|
|
25
|
-
#ifndef __AMPS_MESSAGE_HPP__
|
|
26
|
-
#define __AMPS_MESSAGE_HPP__
|
|
27
|
-
#include "amps/util.hpp"
|
|
28
|
-
#include "amps/constants.hpp"
|
|
29
|
-
#include "amps/amps_generated.h"
|
|
30
|
-
#include "amps/Field.hpp"
|
|
31
|
-
#include <stdio.h>
|
|
32
|
-
#include <algorithm>
|
|
33
|
-
#include <ostream>
|
|
34
|
-
#include <string>
|
|
35
|
-
#define AMPS_UNSET_SEQUENCE (amps_uint64_t)-1
|
|
36
|
-
|
|
37
|
-
// Macros for determing what parts of TR1 we can depend on
|
|
38
|
-
#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (_MSC_VER >= 1600)
|
|
39
|
-
#define AMPS_USE_FUNCTIONAL 1
|
|
40
|
-
#endif
|
|
41
|
-
|
|
42
|
-
#if (_MSC_VER >= 1600) || (__GNUC__ > 4) || ( (__GNUC__ == 4) && (__GNUC_MINOR__) >=5 )
|
|
43
|
-
#define AMPS_USE_LAMBDAS 1
|
|
44
|
-
#endif
|
|
45
|
-
|
|
46
|
-
#if (_MSC_VER >= 1600) || (__GNUC__ > 4) || ( (__GNUC__ == 4) && (__GNUC_MINOR__) >=8 )
|
|
47
|
-
#define AMPS_USE_EMPLACE 1
|
|
48
|
-
#endif
|
|
49
|
-
|
|
50
|
-
#ifdef AMPS_USE_FUNCTIONAL
|
|
51
|
-
#include <functional>
|
|
52
|
-
#endif
|
|
53
|
-
|
|
54
|
-
#include <algorithm>
|
|
55
|
-
|
|
56
|
-
///
|
|
57
|
-
/// \file Message.hpp
|
|
58
|
-
/// \brief Defines the AMPS::Message class and related classes.
|
|
59
|
-
|
|
60
|
-
#define AMPS_OPTIONS_NONE ""
|
|
61
|
-
#define AMPS_OPTIONS_LIVE "live,"
|
|
62
|
-
#define AMPS_OPTIONS_OOF "oof,"
|
|
63
|
-
#define AMPS_OPTIONS_REPLACE "replace,"
|
|
64
|
-
#define AMPS_OPTIONS_NOEMPTIES "no_empties,"
|
|
65
|
-
#define AMPS_OPTIONS_SENDKEYS "send_keys,"
|
|
66
|
-
#define AMPS_OPTIONS_TIMESTAMP "timestamp,"
|
|
67
|
-
#define AMPS_OPTIONS_NOSOWKEY "no_sowkey,"
|
|
68
|
-
#define AMPS_OPTIONS_CANCEL "cancel,"
|
|
69
|
-
#define AMPS_OPTIONS_RESUME "resume,"
|
|
70
|
-
#define AMPS_OPTIONS_PAUSE "pause,"
|
|
71
|
-
#define AMPS_OPTIONS_FULLY_DURABLE "fully_durable,"
|
|
72
|
-
#define AMPS_OPTIONS_EXPIRE "expire,"
|
|
73
|
-
#define AMPS_OPTIONS_TOPN(x) "top_n=##x,"
|
|
74
|
-
#define AMPS_OPTIONS_MAXBACKLOG(x) "max_backlog=##x,"
|
|
75
|
-
#define AMPS_OPTIONS_RATE(x) "rate=##x,"
|
|
76
|
-
|
|
77
|
-
namespace AMPS
|
|
78
|
-
{
|
|
79
|
-
typedef void* amps_subscription_handle;
|
|
80
|
-
|
|
81
|
-
class ClientImpl;
|
|
82
|
-
|
|
83
|
-
///
|
|
84
|
-
/// Implementation class for a Message. Holds an amps_handle
|
|
85
|
-
/// with the real body and storage for the message.
|
|
86
|
-
///
|
|
87
|
-
class MessageImpl : public RefBody
|
|
88
|
-
{
|
|
89
|
-
private:
|
|
90
|
-
amps_handle _message;
|
|
91
|
-
//Mutex _lock;
|
|
92
|
-
bool _owner;
|
|
93
|
-
mutable bool _isIgnoreAutoAck;
|
|
94
|
-
size_t _bookmarkSeqNo;
|
|
95
|
-
amps_subscription_handle _subscription;
|
|
96
|
-
ClientImpl* _clientImpl;
|
|
97
|
-
public:
|
|
98
|
-
///
|
|
99
|
-
/// Constructs a messageImpl from an existing AMPS message.
|
|
100
|
-
/// The owner flag tells us if we own the message and should destroy it
|
|
101
|
-
/// when done or not.
|
|
102
|
-
/// \param message_ The AMPS message to use.
|
|
103
|
-
/// \param owner_ If we own the memory of the message_.
|
|
104
|
-
/// \param ignoreAutoAck_ If we own the memory of the message_.
|
|
105
|
-
/// \param bookmarkSeqNo_ The sequence number in the bookmark store.
|
|
106
|
-
/// \param subscription_ The handle of the subscription where message was logged.
|
|
107
|
-
/// \param clientImpl_ The client creating the message, used for automatic queue acking.
|
|
108
|
-
///
|
|
109
|
-
MessageImpl(amps_handle message_, bool owner_ = false,
|
|
110
|
-
bool ignoreAutoAck_ = false, size_t bookmarkSeqNo_ = 0,
|
|
111
|
-
amps_subscription_handle subscription_ = NULL,
|
|
112
|
-
ClientImpl* clientImpl_ = NULL)
|
|
113
|
-
: _message(message_), _owner(owner_), _isIgnoreAutoAck(ignoreAutoAck_)
|
|
114
|
-
, _bookmarkSeqNo(bookmarkSeqNo_)
|
|
115
|
-
, _subscription(subscription_), _clientImpl(clientImpl_)
|
|
116
|
-
{
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
///
|
|
120
|
-
/// Constructs a MessageImpl with a new, empty AMPS message.
|
|
121
|
-
///
|
|
122
|
-
MessageImpl()
|
|
123
|
-
: _message(NULL), _owner(true), _isIgnoreAutoAck(false), _bookmarkSeqNo(0), _subscription(NULL), _clientImpl(NULL)
|
|
124
|
-
{
|
|
125
|
-
// try to create one
|
|
126
|
-
_message = amps_message_create(NULL);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
virtual ~MessageImpl()
|
|
130
|
-
{
|
|
131
|
-
if (_owner && _message)
|
|
132
|
-
{
|
|
133
|
-
amps_message_destroy(_message);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
MessageImpl* copy() const
|
|
138
|
-
{
|
|
139
|
-
amps_handle copy = amps_message_copy(_message);
|
|
140
|
-
return new MessageImpl(copy, true, _isIgnoreAutoAck, _bookmarkSeqNo,
|
|
141
|
-
_subscription, _clientImpl);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
void copy(const MessageImpl& rhs_)
|
|
145
|
-
{
|
|
146
|
-
if (_owner && _message)
|
|
147
|
-
{
|
|
148
|
-
amps_message_destroy(_message);
|
|
149
|
-
}
|
|
150
|
-
_message = amps_message_copy(rhs_._message);
|
|
151
|
-
_owner = true;
|
|
152
|
-
_bookmarkSeqNo = rhs_._bookmarkSeqNo;
|
|
153
|
-
_subscription = rhs_._subscription;
|
|
154
|
-
_isIgnoreAutoAck = rhs_._isIgnoreAutoAck;
|
|
155
|
-
_clientImpl = rhs_._clientImpl;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
void setClientImpl(ClientImpl* clientImpl_)
|
|
159
|
-
{
|
|
160
|
-
_clientImpl = clientImpl_;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
ClientImpl* clientImpl(void) const
|
|
164
|
-
{
|
|
165
|
-
return _clientImpl;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
///
|
|
169
|
-
/// Returns the underling AMPS message object from the C layer.
|
|
170
|
-
amps_handle getMessage() const
|
|
171
|
-
{
|
|
172
|
-
return _message;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
void reset()
|
|
176
|
-
{
|
|
177
|
-
//Lock<Mutex> l(_lock);
|
|
178
|
-
amps_message_reset(_message);
|
|
179
|
-
_bookmarkSeqNo = 0;
|
|
180
|
-
_subscription = NULL;
|
|
181
|
-
_isIgnoreAutoAck = false;
|
|
182
|
-
_clientImpl = NULL;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
///
|
|
186
|
-
/// Causes self to refer to a new AMPS message, freeing any
|
|
187
|
-
/// current message owned by self along the way.
|
|
188
|
-
/// \param message_ The new AMPS message to use.
|
|
189
|
-
/// \param owner_ If this MessageImpl owns the memory of message_.
|
|
190
|
-
void replace(amps_handle message_, bool owner_ = false)
|
|
191
|
-
{
|
|
192
|
-
//Lock<Mutex> l(_lock);
|
|
193
|
-
if (_message == message_)
|
|
194
|
-
{
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
if (_owner && _message)
|
|
198
|
-
{
|
|
199
|
-
amps_message_destroy(_message);
|
|
200
|
-
}
|
|
201
|
-
_owner = owner_;
|
|
202
|
-
_message = message_;
|
|
203
|
-
_bookmarkSeqNo = 0;
|
|
204
|
-
_subscription = NULL;
|
|
205
|
-
_isIgnoreAutoAck = false;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
void disown()
|
|
209
|
-
{
|
|
210
|
-
//Lock<Mutex> l(_lock);
|
|
211
|
-
_owner = false;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
static unsigned long newId()
|
|
215
|
-
{
|
|
216
|
-
#if __cplusplus >= 201100L || _MSC_VER >= 1900
|
|
217
|
-
static std::atomic<uint_fast64_t> _id(0);
|
|
218
|
-
return (unsigned long)++_id;
|
|
219
|
-
#else
|
|
220
|
-
static AMPS_ATOMIC_TYPE _id = 0;
|
|
221
|
-
return (unsigned long)(AMPS_FETCH_ADD(&_id, 1));
|
|
222
|
-
#endif
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
void setBookmarkSeqNo(size_t val_)
|
|
226
|
-
{
|
|
227
|
-
_bookmarkSeqNo = val_;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
size_t getBookmarkSeqNo(void) const
|
|
231
|
-
{
|
|
232
|
-
return _bookmarkSeqNo;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
void setSubscriptionHandle(amps_subscription_handle subscription_)
|
|
236
|
-
{
|
|
237
|
-
_subscription = subscription_;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
amps_subscription_handle getSubscriptionHandle(void) const
|
|
241
|
-
{
|
|
242
|
-
return _subscription;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
void setIgnoreAutoAck() const
|
|
246
|
-
{
|
|
247
|
-
_isIgnoreAutoAck = true;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
bool getIgnoreAutoAck() const
|
|
251
|
-
{
|
|
252
|
-
return _isIgnoreAutoAck;
|
|
253
|
-
}
|
|
254
|
-
};
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
// This block of macros works with the Doxygen preprocessor to
|
|
258
|
-
// create documentation comments for fields defined with the AMPS_FIELD macro.
|
|
259
|
-
// A C++ compiler removes comments before expanding macros, so these macros
|
|
260
|
-
// must ONLY be defined for Doxygen and not for actual compilation.
|
|
261
|
-
|
|
262
|
-
#ifdef DOXYGEN_PREPROCESSOR
|
|
263
|
-
|
|
264
|
-
#define DOX_COMMENTHEAD(s) / ## ** ## s ## * ## /
|
|
265
|
-
#define DOX_GROUPNAME(s) DOX_COMMENTHEAD(@name s Functions)
|
|
266
|
-
#define DOX_OPENGROUP(s) DOX_COMMENTHEAD(@{) \
|
|
267
|
-
DOX_GROUPNAME(s)
|
|
268
|
-
#define DOX_CLOSEGROUP() DOX_COMMENTHEAD(@})
|
|
269
|
-
#define DOX_MAKEGETCOMMENT(x) DOX_COMMENTHEAD( Retrieves the value of the x header of the Message as a new Field. Notice that not all headers are present on all messages returned by AMPS. See the AMPS %Command Reference for details on which fields will be present in response to a specific command. )
|
|
270
|
-
#define DOX_MAKEGETRAWCOMMENT(x) DOX_COMMENTHEAD( Retrieves the value of the x header of self as a Field that references the underlying buffer managed by this Message. Notice that not all headers are present on all messages returned by AMPS. See the AMPS %Command Reference for details on which fields will be present in response to a specific command. )
|
|
271
|
-
#define DOX_MAKESETCOMMENT(x) DOX_COMMENTHEAD( Sets the value of the x header for this Message. Not all headers are processed by AMPS for all commands. See the AMPS %Command Reference for which headers are used by AMPS for a specific command. )
|
|
272
|
-
#define DOX_MAKEASSIGNCOMMENT(x) DOX_COMMENTHEAD( Sets the value of the x header for this Message. Not all headers are processed by AMPS for all commands. See the AMPS %Command Reference for which headers are used by AMPS for a specific command. )
|
|
273
|
-
#define DOX_MAKENEWCOMMENT(x) DOX_COMMENTHEAD(Creates and sets a new sequential value for the x header for this Message. This function is most useful for headers such as %CommandId and %SubId.)
|
|
274
|
-
|
|
275
|
-
#else
|
|
276
|
-
|
|
277
|
-
#define DOX_COMMENTHEAD(s)
|
|
278
|
-
#define DOX_GROUPNAME(s)
|
|
279
|
-
#define DOX_OPENGROUP(x)
|
|
280
|
-
#define DOX_CLOSEGROUP()
|
|
281
|
-
#define DOX_MAKEGETCOMMENT(x)
|
|
282
|
-
#define DOX_MAKEGETRAWCOMMENT(x)
|
|
283
|
-
#define DOX_MAKESETCOMMENT(x)
|
|
284
|
-
#define DOX_MAKEASSIGNCOMMENT(x)
|
|
285
|
-
#define DOX_MAKENEWCOMMENT(x)
|
|
286
|
-
|
|
287
|
-
#endif
|
|
288
|
-
|
|
289
|
-
// Macro for defining all of the necessary methods for a field in an AMPS
|
|
290
|
-
// message.
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
#define AMPS_FIELD(x) \
|
|
294
|
-
DOX_OPENGROUP(x) \
|
|
295
|
-
DOX_MAKEGETCOMMENT(x) \
|
|
296
|
-
Field get##x() const {\
|
|
297
|
-
Field returnValue;\
|
|
298
|
-
const char* ptr;\
|
|
299
|
-
size_t sz;\
|
|
300
|
-
amps_message_get_field_value(_body.get().getMessage(),\
|
|
301
|
-
AMPS_##x, &ptr, &sz);\
|
|
302
|
-
returnValue.assign(ptr, sz);\
|
|
303
|
-
return returnValue;\
|
|
304
|
-
}\
|
|
305
|
-
DOX_MAKEGETRAWCOMMENT(x) \
|
|
306
|
-
void getRaw##x(const char** dataptr, size_t* sizeptr) const {\
|
|
307
|
-
amps_message_get_field_value(_body.get().getMessage(),\
|
|
308
|
-
AMPS_##x, dataptr, sizeptr);\
|
|
309
|
-
return;\
|
|
310
|
-
}\
|
|
311
|
-
DOX_MAKESETCOMMENT(x) \
|
|
312
|
-
Message& set##x(const std::string& v) {\
|
|
313
|
-
amps_message_set_field_value(_body.get().getMessage(),\
|
|
314
|
-
AMPS_##x, v.c_str(), v.length());\
|
|
315
|
-
return *this;\
|
|
316
|
-
}\
|
|
317
|
-
DOX_MAKESETCOMMENT(x) \
|
|
318
|
-
Message& set##x(amps_uint64_t v) {\
|
|
319
|
-
char buf[22];\
|
|
320
|
-
AMPS_snprintf_amps_uint64_t(buf,22,v);\
|
|
321
|
-
amps_message_set_field_value_nts(_body.get().getMessage(),\
|
|
322
|
-
AMPS_##x, buf);\
|
|
323
|
-
return *this;\
|
|
324
|
-
}\
|
|
325
|
-
DOX_MAKEASSIGNCOMMENT(x) \
|
|
326
|
-
Message& assign##x(const std::string& v) {\
|
|
327
|
-
amps_message_assign_field_value(_body.get().getMessage(),\
|
|
328
|
-
AMPS_##x, v.c_str(), v.length());\
|
|
329
|
-
return *this;\
|
|
330
|
-
}\
|
|
331
|
-
DOX_MAKEASSIGNCOMMENT(x) \
|
|
332
|
-
Message& assign##x(const char* data, size_t len) {\
|
|
333
|
-
amps_message_assign_field_value(_body.get().getMessage(),\
|
|
334
|
-
AMPS_##x, data, len);\
|
|
335
|
-
return *this;\
|
|
336
|
-
}\
|
|
337
|
-
DOX_MAKESETCOMMENT(x) \
|
|
338
|
-
Message& set##x(const char* str) {\
|
|
339
|
-
amps_message_set_field_value_nts(_body.get().getMessage(),\
|
|
340
|
-
AMPS_##x, str);\
|
|
341
|
-
return *this;\
|
|
342
|
-
}\
|
|
343
|
-
DOX_MAKESETCOMMENT(x) \
|
|
344
|
-
Message& set##x(const char* str,size_t len) {\
|
|
345
|
-
amps_message_set_field_value(_body.get().getMessage(),\
|
|
346
|
-
AMPS_##x, str,len);\
|
|
347
|
-
return *this;\
|
|
348
|
-
}\
|
|
349
|
-
DOX_MAKENEWCOMMENT(x) \
|
|
350
|
-
Message& new##x() {\
|
|
351
|
-
char buf[Message::IdentifierLength+1];\
|
|
352
|
-
buf[Message::IdentifierLength] = 0;\
|
|
353
|
-
AMPS_snprintf(buf, Message::IdentifierLength+1, "auto%lu" , (unsigned long)(_body.get().newId()));\
|
|
354
|
-
amps_message_set_field_value_nts(_body.get().getMessage(),\
|
|
355
|
-
AMPS_##x, buf);\
|
|
356
|
-
return *this;\
|
|
357
|
-
} \
|
|
358
|
-
DOX_CLOSEGROUP()
|
|
359
|
-
|
|
360
|
-
#define AMPS_FIELD_ALIAS(x,y) \
|
|
361
|
-
DOX_OPENGROUP(y) \
|
|
362
|
-
DOX_MAKEGETCOMMENT(y) \
|
|
363
|
-
Field get##y() const {\
|
|
364
|
-
Field returnValue;\
|
|
365
|
-
const char* ptr;\
|
|
366
|
-
size_t sz;\
|
|
367
|
-
amps_message_get_field_value(_body.get().getMessage(),\
|
|
368
|
-
AMPS_##y, &ptr, &sz);\
|
|
369
|
-
returnValue.assign(ptr, sz);\
|
|
370
|
-
return returnValue;\
|
|
371
|
-
}\
|
|
372
|
-
DOX_MAKEGETRAWCOMMENT(y) \
|
|
373
|
-
void getRaw##y(const char** dataptr, size_t* sizeptr) const {\
|
|
374
|
-
amps_message_get_field_value(_body.get().getMessage(),\
|
|
375
|
-
AMPS_##y, dataptr, sizeptr);\
|
|
376
|
-
return;\
|
|
377
|
-
}\
|
|
378
|
-
DOX_MAKESETCOMMENT(y) \
|
|
379
|
-
Message& set##y(const std::string& v) {\
|
|
380
|
-
amps_message_set_field_value(_body.get().getMessage(),\
|
|
381
|
-
AMPS_##y, v.c_str(), v.length());\
|
|
382
|
-
return *this;\
|
|
383
|
-
}\
|
|
384
|
-
DOX_MAKESETCOMMENT(y) \
|
|
385
|
-
Message& set##y(amps_uint64_t v) {\
|
|
386
|
-
char buf[22];\
|
|
387
|
-
AMPS_snprintf_amps_uint64_t(buf,22,v);\
|
|
388
|
-
amps_message_set_field_value_nts(_body.get().getMessage(),\
|
|
389
|
-
AMPS_##y, buf);\
|
|
390
|
-
return *this;\
|
|
391
|
-
}\
|
|
392
|
-
DOX_MAKEASSIGNCOMMENT(y) \
|
|
393
|
-
Message& assign##y(const std::string& v) {\
|
|
394
|
-
amps_message_assign_field_value(_body.get().getMessage(),\
|
|
395
|
-
AMPS_##y, v.c_str(), v.length());\
|
|
396
|
-
return *this;\
|
|
397
|
-
}\
|
|
398
|
-
DOX_MAKEASSIGNCOMMENT(y) \
|
|
399
|
-
Message& assign##y(const char* data, size_t len) {\
|
|
400
|
-
amps_message_assign_field_value(_body.get().getMessage(),\
|
|
401
|
-
AMPS_##y, data, len);\
|
|
402
|
-
return *this;\
|
|
403
|
-
}\
|
|
404
|
-
DOX_MAKESETCOMMENT(y) \
|
|
405
|
-
Message& set##y(const char* str) {\
|
|
406
|
-
amps_message_set_field_value_nts(_body.get().getMessage(),\
|
|
407
|
-
AMPS_##y, str);\
|
|
408
|
-
return *this;\
|
|
409
|
-
}\
|
|
410
|
-
DOX_MAKESETCOMMENT(y) \
|
|
411
|
-
Message& set##y(const char* str,size_t len) {\
|
|
412
|
-
amps_message_set_field_value(_body.get().getMessage(),\
|
|
413
|
-
AMPS_##y, str,len);\
|
|
414
|
-
return *this;\
|
|
415
|
-
}\
|
|
416
|
-
DOX_MAKENEWCOMMENT(y) \
|
|
417
|
-
Message& new##y() {\
|
|
418
|
-
char buf[Message::IdentifierLength+1];\
|
|
419
|
-
buf[Message::IdentifierLength] = 0;\
|
|
420
|
-
AMPS_snprintf(buf, Message::IdentifierLength+1, "auto%lux" , (unsigned long)(_body.get().newId()));\
|
|
421
|
-
amps_message_set_field_value_nts(_body.get().getMessage(),\
|
|
422
|
-
AMPS_##y, buf);\
|
|
423
|
-
return *this;\
|
|
424
|
-
}\
|
|
425
|
-
DOX_MAKEGETCOMMENT(y) \
|
|
426
|
-
Field get##x() const {\
|
|
427
|
-
Field returnValue;\
|
|
428
|
-
const char* ptr;\
|
|
429
|
-
size_t sz;\
|
|
430
|
-
amps_message_get_field_value(_body.get().getMessage(),\
|
|
431
|
-
AMPS_##y, &ptr, &sz);\
|
|
432
|
-
returnValue.assign(ptr, sz);\
|
|
433
|
-
return returnValue;\
|
|
434
|
-
}\
|
|
435
|
-
DOX_MAKEGETRAWCOMMENT(y) \
|
|
436
|
-
void getRaw##x(const char** dataptr, size_t* sizeptr) const {\
|
|
437
|
-
amps_message_get_field_value(_body.get().getMessage(),\
|
|
438
|
-
AMPS_##y, dataptr, sizeptr);\
|
|
439
|
-
return;\
|
|
440
|
-
}\
|
|
441
|
-
DOX_MAKESETCOMMENT(y) \
|
|
442
|
-
Message& set##x(const std::string& v) {\
|
|
443
|
-
amps_message_set_field_value(_body.get().getMessage(),\
|
|
444
|
-
AMPS_##y, v.c_str(), v.length());\
|
|
445
|
-
return *this;\
|
|
446
|
-
}\
|
|
447
|
-
DOX_MAKESETCOMMENT(y) \
|
|
448
|
-
Message& set##x(amps_uint64_t v) {\
|
|
449
|
-
char buf[22];\
|
|
450
|
-
AMPS_snprintf_amps_uint64_t(buf,22,v);\
|
|
451
|
-
amps_message_set_field_value_nts(_body.get().getMessage(),\
|
|
452
|
-
AMPS_##y, buf);\
|
|
453
|
-
return *this;\
|
|
454
|
-
}\
|
|
455
|
-
DOX_MAKEASSIGNCOMMENT(y) \
|
|
456
|
-
Message& assign##x(const std::string& v) {\
|
|
457
|
-
amps_message_assign_field_value(_body.get().getMessage(),\
|
|
458
|
-
AMPS_##y, v.c_str(), v.length());\
|
|
459
|
-
return *this;\
|
|
460
|
-
}\
|
|
461
|
-
DOX_MAKEASSIGNCOMMENT(y) \
|
|
462
|
-
Message& assign##x(const char* data, size_t len) {\
|
|
463
|
-
amps_message_assign_field_value(_body.get().getMessage(),\
|
|
464
|
-
AMPS_##y, data, len);\
|
|
465
|
-
return *this;\
|
|
466
|
-
}\
|
|
467
|
-
DOX_MAKESETCOMMENT(y) \
|
|
468
|
-
Message& set##x(const char* str) {\
|
|
469
|
-
amps_message_set_field_value_nts(_body.get().getMessage(),\
|
|
470
|
-
AMPS_##y, str);\
|
|
471
|
-
return *this;\
|
|
472
|
-
}\
|
|
473
|
-
DOX_MAKESETCOMMENT(y) \
|
|
474
|
-
Message& set##x(const char* str,size_t len) {\
|
|
475
|
-
amps_message_set_field_value(_body.get().getMessage(),\
|
|
476
|
-
AMPS_##y, str,len);\
|
|
477
|
-
return *this;\
|
|
478
|
-
}\
|
|
479
|
-
DOX_MAKENEWCOMMENT(y) \
|
|
480
|
-
Message& new##x() {\
|
|
481
|
-
char buf[Message::IdentifierLength+1];\
|
|
482
|
-
buf[Message::IdentifierLength] = 0;\
|
|
483
|
-
AMPS_snprintf(buf, Message::IdentifierLength+1, "auto%lux" , (unsigned long)(_body.get().newId()));\
|
|
484
|
-
amps_message_set_field_value_nts(_body.get().getMessage(),\
|
|
485
|
-
AMPS_##y, buf);\
|
|
486
|
-
return *this;\
|
|
487
|
-
} \
|
|
488
|
-
DOX_CLOSEGROUP()
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
///
|
|
492
|
-
/// Message encapsulates a single message sent to or received from an AMPS
|
|
493
|
-
/// server, and provides methods for every header that can be present,
|
|
494
|
-
/// whether or not that header will be populated or used in a particular
|
|
495
|
-
/// context.
|
|
496
|
-
///
|
|
497
|
-
/// Applications typically use a Command to create outgoing requests to AMPS,
|
|
498
|
-
/// and receive instances of Message in response.
|
|
499
|
-
///
|
|
500
|
-
/// The AMPS %Command Reference provides details on which headers are used
|
|
501
|
-
/// by AMPS and which will be populated on messages received from AMPS,
|
|
502
|
-
/// depending on the command the Message responds to, the options and
|
|
503
|
-
/// headers set on that command, and the type of the response Message.
|
|
504
|
-
///
|
|
505
|
-
/// Message is based on a handle-body metaphor, so you can copy
|
|
506
|
-
/// Message objects around with fairly high performance, and without worrying
|
|
507
|
-
/// about resource leaks or double-frees.
|
|
508
|
-
///
|
|
509
|
-
/// The Message class has been designed to minimize unnecessary memory
|
|
510
|
-
/// allocation. Copying a Message copies the handle, but does not copy
|
|
511
|
-
/// the underlying body. When the AMPS client provides a Message
|
|
512
|
-
/// to a MessageHandler function, the data in that Message refers to the
|
|
513
|
-
/// buffer that the AMPS client uses to read from the socket. If your
|
|
514
|
-
/// application will use the Message after the MessageHandler returns
|
|
515
|
-
/// (for example, by dispatching the message to a worker thread), you
|
|
516
|
-
/// should use the deepCopy() function to copy the underlying data, since
|
|
517
|
-
/// in this case the AMPS client will reuse the underlying buffer once
|
|
518
|
-
/// the MessageHandler returns.
|
|
519
|
-
///
|
|
520
|
-
/// If your application has the need to bypass most of the Client
|
|
521
|
-
/// infrastructure for some reason when sending commands to AMPS, the
|
|
522
|
-
/// Message / Client.send() interface provides the flexibility to do so.
|
|
523
|
-
/// In return, your application must provide functionality that is normally
|
|
524
|
-
/// provided automatically by the Client (for example, tracking subscriptions
|
|
525
|
-
/// for failover, recording the message in the publish store and managing
|
|
526
|
-
/// success or failure of the publish, and so on). Although this functionality
|
|
527
|
-
/// is available for flexibility, it is rarely needed in practice. 60East
|
|
528
|
-
/// recommends using Command objects with Client.execute() and
|
|
529
|
-
/// Client.executeAsync() for sending commands to AMPS.
|
|
530
|
-
///
|
|
531
|
-
class Message
|
|
532
|
-
{
|
|
533
|
-
RefHandle<MessageImpl> _body;
|
|
534
|
-
|
|
535
|
-
Message(MessageImpl* body_) : _body(body_) { ; }
|
|
536
|
-
|
|
537
|
-
public:
|
|
538
|
-
typedef AMPS::Field Field;
|
|
539
|
-
|
|
540
|
-
/// The length of identifiers used for unique identification
|
|
541
|
-
/// of commands and subscriptions.
|
|
542
|
-
static const unsigned int IdentifierLength = 32;
|
|
543
|
-
|
|
544
|
-
///
|
|
545
|
-
/// An indicator of no bookmark value.
|
|
546
|
-
static const size_t BOOKMARK_NONE = AMPS_UNSET_INDEX;
|
|
547
|
-
|
|
548
|
-
///
|
|
549
|
-
/// A flag to indicate not to create a body. Useful for creating a
|
|
550
|
-
/// Message that is only going to copy another Message.
|
|
551
|
-
enum CtorFlag { EMPTY };
|
|
552
|
-
|
|
553
|
-
///
|
|
554
|
-
/// Constructs a new empty, invalid Message.
|
|
555
|
-
Message(CtorFlag) : _body()
|
|
556
|
-
{
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
///
|
|
560
|
-
/// Constructs a new Message to wrap message.
|
|
561
|
-
/// Only necessary if you're using both the C client and C++.
|
|
562
|
-
/// \param message_ the C-client message handle to wrap.
|
|
563
|
-
/// \param owner_ Flag to indicate if this Message object is the owner of message handle and responsible for destroying it.
|
|
564
|
-
///
|
|
565
|
-
Message(amps_handle message_, bool owner_ = false)
|
|
566
|
-
: _body(new MessageImpl(message_, owner_))
|
|
567
|
-
{
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
///
|
|
571
|
-
/// Construct a new, empty Message.
|
|
572
|
-
///
|
|
573
|
-
Message() : _body(new MessageImpl())
|
|
574
|
-
{
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
///
|
|
578
|
-
/// Returns a deep copy of self
|
|
579
|
-
Message deepCopy(void) const
|
|
580
|
-
{
|
|
581
|
-
return Message(_body.get().copy());
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
///
|
|
585
|
-
/// Makes self a deep copy of rhs_
|
|
586
|
-
void deepCopy(const Message& rhs_)
|
|
587
|
-
{
|
|
588
|
-
_body.get().copy(rhs_._body.get());
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
///
|
|
592
|
-
/// Class for constructing the options string to pass to AMPS in a Message.
|
|
593
|
-
///
|
|
594
|
-
/// This class can provide a convenient way to format an options string
|
|
595
|
-
/// in a command provided to AMPS. Notice that this class is only
|
|
596
|
-
/// intended to help with correctly formatting the options string
|
|
597
|
-
/// and to provide constant values for option names. The class does not
|
|
598
|
-
/// validate the values provided to options, or that the combination of
|
|
599
|
-
/// options provided is useful or valid for any particular command.
|
|
600
|
-
///
|
|
601
|
-
class Options
|
|
602
|
-
{
|
|
603
|
-
public:
|
|
604
|
-
static const char* None(void)
|
|
605
|
-
{
|
|
606
|
-
return AMPS_OPTIONS_NONE;
|
|
607
|
-
}
|
|
608
|
-
static const char* Live(void)
|
|
609
|
-
{
|
|
610
|
-
return AMPS_OPTIONS_LIVE;
|
|
611
|
-
}
|
|
612
|
-
static const char* OOF(void)
|
|
613
|
-
{
|
|
614
|
-
return AMPS_OPTIONS_OOF;
|
|
615
|
-
}
|
|
616
|
-
static const char* Replace(void)
|
|
617
|
-
{
|
|
618
|
-
return AMPS_OPTIONS_REPLACE;
|
|
619
|
-
}
|
|
620
|
-
static const char* NoEmpties(void)
|
|
621
|
-
{
|
|
622
|
-
return AMPS_OPTIONS_NOEMPTIES;
|
|
623
|
-
}
|
|
624
|
-
static const char* SendKeys(void)
|
|
625
|
-
{
|
|
626
|
-
return AMPS_OPTIONS_SENDKEYS;
|
|
627
|
-
}
|
|
628
|
-
static const char* Timestamp(void)
|
|
629
|
-
{
|
|
630
|
-
return AMPS_OPTIONS_TIMESTAMP;
|
|
631
|
-
}
|
|
632
|
-
static const char* NoSowKey(void)
|
|
633
|
-
{
|
|
634
|
-
return AMPS_OPTIONS_NOSOWKEY;
|
|
635
|
-
}
|
|
636
|
-
static const char* Cancel(void)
|
|
637
|
-
{
|
|
638
|
-
return AMPS_OPTIONS_CANCEL;
|
|
639
|
-
}
|
|
640
|
-
static const char* Resume(void)
|
|
641
|
-
{
|
|
642
|
-
return AMPS_OPTIONS_RESUME;
|
|
643
|
-
}
|
|
644
|
-
static const char* Pause(void)
|
|
645
|
-
{
|
|
646
|
-
return AMPS_OPTIONS_PAUSE;
|
|
647
|
-
}
|
|
648
|
-
static const char* FullyDurable(void)
|
|
649
|
-
{
|
|
650
|
-
return AMPS_OPTIONS_FULLY_DURABLE;
|
|
651
|
-
}
|
|
652
|
-
static const char* Expire(void)
|
|
653
|
-
{
|
|
654
|
-
return AMPS_OPTIONS_EXPIRE;
|
|
655
|
-
}
|
|
656
|
-
static std::string Conflation(const char* conflation_)
|
|
657
|
-
{
|
|
658
|
-
char buf[64];
|
|
659
|
-
AMPS_snprintf(buf, sizeof(buf), "conflation=%s,", conflation_);
|
|
660
|
-
return buf;
|
|
661
|
-
}
|
|
662
|
-
static std::string ConflationKey(const char* conflationKey_)
|
|
663
|
-
{
|
|
664
|
-
std::string option("conflation_key=");
|
|
665
|
-
option.append(conflationKey_).append(",");
|
|
666
|
-
return option;
|
|
667
|
-
}
|
|
668
|
-
static std::string TopN(int topN_)
|
|
669
|
-
{
|
|
670
|
-
char buf[24];
|
|
671
|
-
AMPS_snprintf(buf, sizeof(buf), "top_n=%d,", topN_);
|
|
672
|
-
return buf;
|
|
673
|
-
}
|
|
674
|
-
static std::string MaxBacklog(int maxBacklog_)
|
|
675
|
-
{
|
|
676
|
-
char buf[24];
|
|
677
|
-
AMPS_snprintf(buf, sizeof(buf), "max_backlog=%d,", maxBacklog_);
|
|
678
|
-
return buf;
|
|
679
|
-
}
|
|
680
|
-
static std::string Rate(const char* rate_)
|
|
681
|
-
{
|
|
682
|
-
char buf[64];
|
|
683
|
-
AMPS_snprintf(buf, sizeof(buf), "rate=%s,", rate_);
|
|
684
|
-
return buf;
|
|
685
|
-
}
|
|
686
|
-
static std::string RateMaxGap(const char* rateMaxGap_)
|
|
687
|
-
{
|
|
688
|
-
char buf[64];
|
|
689
|
-
AMPS_snprintf(buf, sizeof(buf), "rate_max_gap=%s,", rateMaxGap_);
|
|
690
|
-
return buf;
|
|
691
|
-
}
|
|
692
|
-
static std::string SkipN(int skipN_)
|
|
693
|
-
{
|
|
694
|
-
char buf[24];
|
|
695
|
-
AMPS_snprintf(buf, sizeof(buf), "skip_n=%d,", skipN_);
|
|
696
|
-
return buf;
|
|
697
|
-
}
|
|
698
|
-
|
|
699
|
-
static std::string Projection(const std::string& projection_)
|
|
700
|
-
{
|
|
701
|
-
return "projection=[" + projection_ + "],";
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
template<class Iterator>
|
|
705
|
-
static std::string Projection(Iterator begin_, Iterator end_)
|
|
706
|
-
{
|
|
707
|
-
std::string projection = "projection=[";
|
|
708
|
-
for (Iterator i = begin_; i != end_; ++i)
|
|
709
|
-
{
|
|
710
|
-
projection += *i;
|
|
711
|
-
projection += ',';
|
|
712
|
-
}
|
|
713
|
-
projection.insert(projection.length() - 1, "]");
|
|
714
|
-
return projection;
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
static std::string Grouping(const std::string& grouping_)
|
|
718
|
-
{
|
|
719
|
-
return "grouping=[" + grouping_ + "],";
|
|
720
|
-
}
|
|
721
|
-
|
|
722
|
-
template<class Iterator>
|
|
723
|
-
static std::string Grouping(Iterator begin_, Iterator end_)
|
|
724
|
-
{
|
|
725
|
-
std::string grouping = "grouping=[";
|
|
726
|
-
for (Iterator i = begin_; i != end_; ++i)
|
|
727
|
-
{
|
|
728
|
-
grouping += *i;
|
|
729
|
-
grouping += ',';
|
|
730
|
-
}
|
|
731
|
-
grouping.insert(grouping.length() - 1, "]");
|
|
732
|
-
return grouping;
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
static std::string Select(const std::string& select_)
|
|
736
|
-
{
|
|
737
|
-
return "select=[" + select_ + "],";
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
template<class Iterator>
|
|
741
|
-
static std::string Select(Iterator begin_, Iterator end_)
|
|
742
|
-
{
|
|
743
|
-
std::string select = "select=[";
|
|
744
|
-
for (Iterator i = begin_; i != end_; ++i)
|
|
745
|
-
{
|
|
746
|
-
select += *i;
|
|
747
|
-
select += ',';
|
|
748
|
-
}
|
|
749
|
-
select.insert(select.length() - 1, "]");
|
|
750
|
-
return select;
|
|
751
|
-
}
|
|
752
|
-
|
|
753
|
-
static std::string AckConflationInterval(const std::string& interval_)
|
|
754
|
-
{
|
|
755
|
-
return "ack_conflation=" + interval_ + ",";
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
static std::string AckConflationInterval(const char* interval_)
|
|
759
|
-
{
|
|
760
|
-
static const std::string start("ack_conflation=");
|
|
761
|
-
return start + interval_ + ",";
|
|
762
|
-
}
|
|
763
|
-
|
|
764
|
-
///
|
|
765
|
-
/// ctor - default to None
|
|
766
|
-
Options(std::string options_ = "")
|
|
767
|
-
: _optionStr(options_)
|
|
768
|
-
, _maxBacklog(0)
|
|
769
|
-
, _topN(0)
|
|
770
|
-
, _skipN(0)
|
|
771
|
-
{;}
|
|
772
|
-
|
|
773
|
-
int getMaxBacklog(void) const
|
|
774
|
-
{
|
|
775
|
-
return _maxBacklog;
|
|
776
|
-
}
|
|
777
|
-
std::string getConflation(void) const
|
|
778
|
-
{
|
|
779
|
-
return _conflation;
|
|
780
|
-
}
|
|
781
|
-
std::string getConflationKey(void) const
|
|
782
|
-
{
|
|
783
|
-
return _conflationKey;
|
|
784
|
-
}
|
|
785
|
-
int getTopN(void) const
|
|
786
|
-
{
|
|
787
|
-
return _topN;
|
|
788
|
-
}
|
|
789
|
-
std::string getRate(void) const
|
|
790
|
-
{
|
|
791
|
-
return _rate;
|
|
792
|
-
}
|
|
793
|
-
std::string getRateMaxGap(void) const
|
|
794
|
-
{
|
|
795
|
-
return _rateMaxGap;
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
///
|
|
799
|
-
/// Clear any previously set options and set the options
|
|
800
|
-
/// to an empty string (AMPS_OPTIONS_NONE).
|
|
801
|
-
void setNone(void)
|
|
802
|
-
{
|
|
803
|
-
_optionStr.clear();
|
|
804
|
-
}
|
|
805
|
-
|
|
806
|
-
///
|
|
807
|
-
/// Set the live option for a bookmark subscription, which
|
|
808
|
-
/// requests that the subscription receives messages before
|
|
809
|
-
/// they are persisted to the transaction log after replay
|
|
810
|
-
/// is complete. This can, in case of a simultaneous AMPS failure
|
|
811
|
-
/// and publisher failure, lead to an application receiving
|
|
812
|
-
/// messages that do not appear in the transaction log.
|
|
813
|
-
/// See the AMPS User Guide and the AMPS %Command Reference for
|
|
814
|
-
/// details.
|
|
815
|
-
void setLive(void)
|
|
816
|
-
{
|
|
817
|
-
_optionStr += AMPS_OPTIONS_LIVE;
|
|
818
|
-
}
|
|
819
|
-
|
|
820
|
-
///
|
|
821
|
-
/// Set the option to receive out of focus (OOF) messages
|
|
822
|
-
/// on a subscription, where applicable. See the AMPS User
|
|
823
|
-
/// Guide and the AMPS %Command Reference for details.
|
|
824
|
-
void setOOF(void)
|
|
825
|
-
{
|
|
826
|
-
_optionStr += AMPS_OPTIONS_OOF;
|
|
827
|
-
}
|
|
828
|
-
|
|
829
|
-
///
|
|
830
|
-
/// Set the option to replace a current subscription with this one.
|
|
831
|
-
/// See the AMPS User Guide and the AMPS %Command Reference for
|
|
832
|
-
/// details.
|
|
833
|
-
void setReplace(void)
|
|
834
|
-
{
|
|
835
|
-
_optionStr += AMPS_OPTIONS_REPLACE;
|
|
836
|
-
}
|
|
837
|
-
|
|
838
|
-
///
|
|
839
|
-
/// Set the option to not send empty messages on a delta
|
|
840
|
-
/// subscription. See the AMPS %Command Reference for details.
|
|
841
|
-
void setNoEmpties(void)
|
|
842
|
-
{
|
|
843
|
-
_optionStr += AMPS_OPTIONS_NOEMPTIES;
|
|
844
|
-
}
|
|
845
|
-
|
|
846
|
-
///
|
|
847
|
-
/// Set the option to send key fields with a delta subscription.
|
|
848
|
-
/// See the AMPS %Command Reference for details.
|
|
849
|
-
void setSendKeys(void)
|
|
850
|
-
{
|
|
851
|
-
_optionStr += AMPS_OPTIONS_SENDKEYS;
|
|
852
|
-
}
|
|
853
|
-
|
|
854
|
-
///
|
|
855
|
-
/// Set the option to send a timestamp that the message was
|
|
856
|
-
/// processed on a subscription or query. See the AMPS %Command
|
|
857
|
-
/// Reference for details.
|
|
858
|
-
void setTimestamp(void)
|
|
859
|
-
{
|
|
860
|
-
_optionStr += AMPS_OPTIONS_TIMESTAMP;
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
///
|
|
864
|
-
/// Set the option to not set the SowKey header on messages.
|
|
865
|
-
/// See the AMPS %Command Reference for details.
|
|
866
|
-
void setNoSowKey(void)
|
|
867
|
-
{
|
|
868
|
-
_optionStr += AMPS_OPTIONS_NOSOWKEY;
|
|
869
|
-
}
|
|
870
|
-
|
|
871
|
-
///
|
|
872
|
-
/// Set the cancel option, used on a sow_delete command to
|
|
873
|
-
/// return a message to the queue.
|
|
874
|
-
void setCancel(void)
|
|
875
|
-
{
|
|
876
|
-
_optionStr += AMPS_OPTIONS_CANCEL;
|
|
877
|
-
}
|
|
878
|
-
|
|
879
|
-
///
|
|
880
|
-
/// Set the option to resume a subscription. This option
|
|
881
|
-
/// is only valid for bookmark subscriptions that do not use
|
|
882
|
-
/// the "live" option that have been previously paused.
|
|
883
|
-
/// See the AMPS User Guide and the AMPS %Command Reference for
|
|
884
|
-
/// details.
|
|
885
|
-
void setResume(void)
|
|
886
|
-
{
|
|
887
|
-
_optionStr += AMPS_OPTIONS_RESUME;
|
|
888
|
-
}
|
|
889
|
-
|
|
890
|
-
///
|
|
891
|
-
/// Set the option to pause a bookmark subscription. This option is
|
|
892
|
-
/// typically used when entering a number of subscriptions for
|
|
893
|
-
/// synchronized replay (for example, when duplicating message
|
|
894
|
-
/// flow for analysis or testing purposes). The subscriptions
|
|
895
|
-
/// are registered with the "pause" option one-by-one, and then
|
|
896
|
-
/// simultaneously resumed to begin the replay. This option is
|
|
897
|
-
/// only valid for bookmark subscriptions that do not use
|
|
898
|
-
/// the "live" option. See the AMPS User Guide and AMPS
|
|
899
|
-
/// %Command Reference for details.
|
|
900
|
-
void setPause(void)
|
|
901
|
-
{
|
|
902
|
-
_optionStr += AMPS_OPTIONS_PAUSE;
|
|
903
|
-
}
|
|
904
|
-
|
|
905
|
-
///
|
|
906
|
-
/// Set the option to only provide messages that have been
|
|
907
|
-
/// persisted to all replication destinations that use
|
|
908
|
-
/// synchronous acknowledgements. This option is only valid
|
|
909
|
-
/// for bookmark subscriptions that do not use the "live" option.
|
|
910
|
-
/// See the AMPS User Guide and AMPS %Command Reference for details.
|
|
911
|
-
void setFullyDurable(void)
|
|
912
|
-
{
|
|
913
|
-
_optionStr += AMPS_OPTIONS_FULLY_DURABLE;
|
|
914
|
-
}
|
|
915
|
-
|
|
916
|
-
///
|
|
917
|
-
/// Set the option for maximum backlog this subscription is
|
|
918
|
-
/// willing to accept. This option only applies to
|
|
919
|
-
/// subscriptions to queue topics, and the server will only
|
|
920
|
-
/// grant a backlog up to the maximum per subscription backlog
|
|
921
|
-
/// configured for the queue. See the AMPS User Guide and the
|
|
922
|
-
/// AMPS %Command Reference for a description of queue backlogs,
|
|
923
|
-
/// and see the AMPS Configuration Reference for details on
|
|
924
|
-
/// configuring the queue.
|
|
925
|
-
/// \param maxBacklog_ The max unacked queue messages in backlog.
|
|
926
|
-
void setMaxBacklog(int maxBacklog_)
|
|
927
|
-
{
|
|
928
|
-
char buf[24];
|
|
929
|
-
AMPS_snprintf(buf, sizeof(buf), "max_backlog=%d,", maxBacklog_);
|
|
930
|
-
_optionStr += buf;
|
|
931
|
-
_maxBacklog = maxBacklog_;
|
|
932
|
-
}
|
|
933
|
-
|
|
934
|
-
///
|
|
935
|
-
/// Set the options for conflation on a subscription. See the
|
|
936
|
-
/// AMPS User Guide for a description of conflation, and see
|
|
937
|
-
/// the AMPS %Command Reference for details on this option.
|
|
938
|
-
/// \param conflation_ The conflation interval, auto, or none.
|
|
939
|
-
void setConflation(const char* conflation_)
|
|
940
|
-
{
|
|
941
|
-
char buf[64];
|
|
942
|
-
AMPS_snprintf(buf, sizeof(buf), "conflation=%s,", conflation_);
|
|
943
|
-
_optionStr += buf;
|
|
944
|
-
_conflation = conflation_;
|
|
945
|
-
}
|
|
946
|
-
|
|
947
|
-
///
|
|
948
|
-
/// Set the options for the conflation key, the identifiers for
|
|
949
|
-
/// the field or fields used by AMPS to determine which changes
|
|
950
|
-
/// to the underlying topic are considered to be changes to a
|
|
951
|
-
/// distinct record. The conflation key does not need to be the
|
|
952
|
-
/// same as the keys configured for the topic. See the AMPS
|
|
953
|
-
/// User Guide for details on conflation, and see the AMPS
|
|
954
|
-
/// %Command Reference for details on this option.
|
|
955
|
-
/// \param conflationKey_ The message key to use for conflation.
|
|
956
|
-
void setConflationKey(const char* conflationKey_)
|
|
957
|
-
{
|
|
958
|
-
char buf[64];
|
|
959
|
-
AMPS_snprintf(buf, sizeof(buf), "conflation_key=%s,", conflationKey_);
|
|
960
|
-
_optionStr += buf;
|
|
961
|
-
_conflationKey = conflationKey_;
|
|
962
|
-
}
|
|
963
|
-
|
|
964
|
-
///
|
|
965
|
-
/// Set the top N option, which specifies the maximum number
|
|
966
|
-
/// of messages to return for this command. See the AMPS
|
|
967
|
-
/// %Command Reference for details.
|
|
968
|
-
/// \param topN_ The max number of messages to return.
|
|
969
|
-
void setTopN(int topN_)
|
|
970
|
-
{
|
|
971
|
-
char buf[24];
|
|
972
|
-
AMPS_snprintf(buf, sizeof(buf), "top_n=%d,", topN_);
|
|
973
|
-
_optionStr += buf;
|
|
974
|
-
_topN = topN_;
|
|
975
|
-
}
|
|
976
|
-
|
|
977
|
-
///
|
|
978
|
-
/// Set the option for the maximum rate at which messages are
|
|
979
|
-
/// provided to the subscription. This option is only valid for
|
|
980
|
-
/// bookmark subscriptions. See the AMPS %Command Reference for
|
|
981
|
-
/// details.
|
|
982
|
-
/// \param rate_ The rate for sending messages on the bookmark subscription.
|
|
983
|
-
void setRate(const char* rate_)
|
|
984
|
-
{
|
|
985
|
-
char buf[64];
|
|
986
|
-
AMPS_snprintf(buf, sizeof(buf), "rate=%s,", rate_);
|
|
987
|
-
_optionStr += buf;
|
|
988
|
-
_rate = rate_;
|
|
989
|
-
}
|
|
990
|
-
|
|
991
|
-
///
|
|
992
|
-
/// Set the option for the maximum amount of time that a bookmark
|
|
993
|
-
/// replay with a specified rate will allow the subscription to
|
|
994
|
-
/// go without producing messages. This
|
|
995
|
-
/// option is only valid for bookmark subscriptions when a "rate" is
|
|
996
|
-
/// specified, and prevents situations where a subscription would
|
|
997
|
-
/// be idle for an extended period of time. For example, if a replay
|
|
998
|
-
/// has a specified rate of "2x" and there is a quiet period in
|
|
999
|
-
/// the transaction logs (overnight, weekends) where no matching
|
|
1000
|
-
/// messages were received for the subscription for 8 hours,
|
|
1001
|
-
/// the subscription would be idle for 4 hours unless a
|
|
1002
|
-
/// shorter maximum gap is specified using this option.
|
|
1003
|
-
/// See the AMPS %Command Reference for details.
|
|
1004
|
-
/// \param rateMaxGap_ The max gap between messages on the subscription.
|
|
1005
|
-
void setRateMaxGap(const char* rateMaxGap_)
|
|
1006
|
-
{
|
|
1007
|
-
char buf[64];
|
|
1008
|
-
AMPS_snprintf(buf, sizeof(buf), "rate_max_gap=%s,", rateMaxGap_);
|
|
1009
|
-
_optionStr += buf;
|
|
1010
|
-
_rateMaxGap = rateMaxGap_;
|
|
1011
|
-
}
|
|
1012
|
-
|
|
1013
|
-
///
|
|
1014
|
-
/// Set the option for skip N, the number of messages in the result
|
|
1015
|
-
/// set to skip before returning messages to a client. See the
|
|
1016
|
-
/// AMPS %Command Reference for details.
|
|
1017
|
-
/// \param skipN_ The number of messages to skip before sending to client.
|
|
1018
|
-
void setSkipN(int skipN_)
|
|
1019
|
-
{
|
|
1020
|
-
char buf[24];
|
|
1021
|
-
AMPS_snprintf(buf, sizeof(buf), "skip_n=%d,", skipN_);
|
|
1022
|
-
_optionStr += buf;
|
|
1023
|
-
_skipN = skipN_;
|
|
1024
|
-
}
|
|
1025
|
-
|
|
1026
|
-
///
|
|
1027
|
-
/// Set the option for projecting the results of an aggregated query
|
|
1028
|
-
/// or subscription.
|
|
1029
|
-
/// \param projection_ A string containing the projection specification, either a single field description or a comma-separated list of field descriptions.
|
|
1030
|
-
void setProjection(const std::string& projection_)
|
|
1031
|
-
{
|
|
1032
|
-
_projection = "projection=[" + projection_ + "],";
|
|
1033
|
-
_optionStr += _projection;
|
|
1034
|
-
}
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
///
|
|
1038
|
-
/// Set the option for projecting the results of an aggregated query
|
|
1039
|
-
/// or subscription.
|
|
1040
|
-
/// \param begin_ The starting forward iterator for field descriptions.
|
|
1041
|
-
/// \param end_ The ending forward iterator for field descriptions.
|
|
1042
|
-
template<class Iterator>
|
|
1043
|
-
void setProjection(Iterator begin_, Iterator end_)
|
|
1044
|
-
{
|
|
1045
|
-
_projection = "projection=[";
|
|
1046
|
-
for (Iterator i = begin_; i != end_; ++i)
|
|
1047
|
-
{
|
|
1048
|
-
_projection += *i;
|
|
1049
|
-
_projection += ',';
|
|
1050
|
-
}
|
|
1051
|
-
_projection.insert(_projection.length() - 1, "]");
|
|
1052
|
-
_optionStr += _projection;
|
|
1053
|
-
}
|
|
1054
|
-
|
|
1055
|
-
///
|
|
1056
|
-
/// Set the option for grouping the results of an aggregated query
|
|
1057
|
-
/// or subscription.
|
|
1058
|
-
/// \param grouping_ The comma-separated list of grouping field names.
|
|
1059
|
-
void setGrouping(const std::string& grouping_)
|
|
1060
|
-
{
|
|
1061
|
-
_grouping = "grouping=[" + grouping_ + "],";
|
|
1062
|
-
_optionStr += _grouping;
|
|
1063
|
-
}
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
///
|
|
1067
|
-
/// Set the option for grouping the results of an aggregated query
|
|
1068
|
-
/// or subscription.
|
|
1069
|
-
/// \param begin_ The starting forward iterator for field descriptions.
|
|
1070
|
-
/// \param end_ The ending forward iterator for field descriptions.
|
|
1071
|
-
template<class Iterator>
|
|
1072
|
-
void setGrouping(Iterator begin_, Iterator end_)
|
|
1073
|
-
{
|
|
1074
|
-
_grouping = "grouping=[";
|
|
1075
|
-
for (Iterator i = begin_; i != end_; ++i)
|
|
1076
|
-
{
|
|
1077
|
-
_grouping += *i;
|
|
1078
|
-
_grouping += ',';
|
|
1079
|
-
}
|
|
1080
|
-
_grouping.insert(_grouping.length() - 1, "]");
|
|
1081
|
-
_optionStr += _grouping;
|
|
1082
|
-
}
|
|
1083
|
-
|
|
1084
|
-
///
|
|
1085
|
-
/// Convert this object to a std::string, allows you to pass an
|
|
1086
|
-
/// Options object as the options_ argument directly
|
|
1087
|
-
operator const std::string()
|
|
1088
|
-
{
|
|
1089
|
-
return _optionStr.substr(0, _optionStr.length() - 1);
|
|
1090
|
-
}
|
|
1091
|
-
///
|
|
1092
|
-
/// Return the length of this Options object as a string.
|
|
1093
|
-
/// \return The length of the string representation of self.
|
|
1094
|
-
size_t getLength() const
|
|
1095
|
-
{
|
|
1096
|
-
return (_optionStr.empty()?0:_optionStr.length()-1);
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
|
-
///
|
|
1100
|
-
/// Return this Options object as a non-NULL-terminated string.
|
|
1101
|
-
/// \return The pointer to the beginning of self as a string. Only
|
|
1102
|
-
/// use this in conjunction with #getLength
|
|
1103
|
-
const char* getStr() const
|
|
1104
|
-
{
|
|
1105
|
-
return (_optionStr.empty()?0:_optionStr.data());
|
|
1106
|
-
}
|
|
1107
|
-
|
|
1108
|
-
private:
|
|
1109
|
-
std::string _optionStr;
|
|
1110
|
-
int _maxBacklog;
|
|
1111
|
-
std::string _conflation;
|
|
1112
|
-
std::string _conflationKey;
|
|
1113
|
-
int _topN;
|
|
1114
|
-
std::string _rate;
|
|
1115
|
-
std::string _rateMaxGap;
|
|
1116
|
-
int _skipN;
|
|
1117
|
-
std::string _projection;
|
|
1118
|
-
std::string _grouping;
|
|
1119
|
-
};
|
|
1120
|
-
|
|
1121
|
-
/// Valid values for the setAckTypeEnum() and getAckTypeEnum() methods.
|
|
1122
|
-
/// These values may be bitwise OR'ed together to request multiple acks.
|
|
1123
|
-
struct AckType
|
|
1124
|
-
{
|
|
1125
|
-
typedef enum : unsigned
|
|
1126
|
-
{
|
|
1127
|
-
None = 0, Received = 1, Parsed = 2, Processed = 4, Persisted = 8, Completed = 16, Stats = 32
|
|
1128
|
-
} Type;
|
|
1129
|
-
};
|
|
1130
|
-
AMPS_FIELD(AckType)
|
|
1131
|
-
/// Decodes a single ack string. Use getAckTypeEnum for strings that may contain
|
|
1132
|
-
/// multiple acks (e.g. 'processed,persisted')
|
|
1133
|
-
static inline AckType::Type decodeSingleAckType(const char* begin, const char* end)
|
|
1134
|
-
{
|
|
1135
|
-
switch (end - begin)
|
|
1136
|
-
{
|
|
1137
|
-
case 5:
|
|
1138
|
-
return AckType::Stats;
|
|
1139
|
-
case 6:
|
|
1140
|
-
return AckType::Parsed;
|
|
1141
|
-
case 8:
|
|
1142
|
-
return AckType::Received;
|
|
1143
|
-
case 9:
|
|
1144
|
-
switch (begin[1])
|
|
1145
|
-
{
|
|
1146
|
-
case 'e': return AckType::Persisted;
|
|
1147
|
-
case 'r': return AckType::Processed;
|
|
1148
|
-
case 'o': return AckType::Completed;
|
|
1149
|
-
default: break;
|
|
1150
|
-
}
|
|
1151
|
-
break;
|
|
1152
|
-
default:
|
|
1153
|
-
break;
|
|
1154
|
-
}
|
|
1155
|
-
return AckType::None;
|
|
1156
|
-
}
|
|
1157
|
-
/// Decode self's "ack type" field and return the corresponding bitmask of values from
|
|
1158
|
-
/// AckType. This method returns unsigned instead of AckType::Type since AckType does
|
|
1159
|
-
/// not contain unique entries for every possible combination of ack types.
|
|
1160
|
-
unsigned getAckTypeEnum() const
|
|
1161
|
-
{
|
|
1162
|
-
unsigned result = AckType::None;
|
|
1163
|
-
const char* data = NULL; size_t len = 0;
|
|
1164
|
-
amps_message_get_field_value(_body.get().getMessage(), AMPS_AckType, &data, &len);
|
|
1165
|
-
const char* mark = data;
|
|
1166
|
-
for (const char* end = data + len; data != end; ++data)
|
|
1167
|
-
{
|
|
1168
|
-
if (*data == ',')
|
|
1169
|
-
{
|
|
1170
|
-
result |= decodeSingleAckType(mark, data);
|
|
1171
|
-
mark = data + 1;
|
|
1172
|
-
}
|
|
1173
|
-
}
|
|
1174
|
-
if (mark < data)
|
|
1175
|
-
{
|
|
1176
|
-
result |= decodeSingleAckType(mark, data);
|
|
1177
|
-
}
|
|
1178
|
-
return result;
|
|
1179
|
-
}
|
|
1180
|
-
/// Encode self's "ack type" field from a bitmask of values from AckType.
|
|
1181
|
-
/// This method is passed an unsigned instead of AckType::Type since AckType does
|
|
1182
|
-
/// not contain unique entries for every possible combination of ack types.
|
|
1183
|
-
Message& setAckTypeEnum(unsigned ackType_)
|
|
1184
|
-
{
|
|
1185
|
-
if (ackType_ < AckTypeConstants<0>::Entries)
|
|
1186
|
-
{
|
|
1187
|
-
amps_message_assign_field_value(_body.get().getMessage(), AMPS_AckType,
|
|
1188
|
-
AckTypeConstants<0>::Values[ackType_], AckTypeConstants<0>::Lengths[ackType_]);
|
|
1189
|
-
}
|
|
1190
|
-
return *this;
|
|
1191
|
-
}
|
|
1192
|
-
|
|
1193
|
-
AMPS_FIELD(BatchSize)
|
|
1194
|
-
AMPS_FIELD(Bookmark)
|
|
1195
|
-
AMPS_FIELD(Command)
|
|
1196
|
-
|
|
1197
|
-
///
|
|
1198
|
-
/// Valid values for setCommandEnum() and getCommandEnum(). These
|
|
1199
|
-
/// values correspond to valid AMPS command types.
|
|
1200
|
-
struct Command
|
|
1201
|
-
{
|
|
1202
|
-
typedef enum
|
|
1203
|
-
{
|
|
1204
|
-
Unknown = 0,
|
|
1205
|
-
Publish = 1,
|
|
1206
|
-
Subscribe = 2,
|
|
1207
|
-
Unsubscribe = 4,
|
|
1208
|
-
SOW = 8,
|
|
1209
|
-
Heartbeat = 16,
|
|
1210
|
-
SOWDelete = 32,
|
|
1211
|
-
DeltaPublish = 64,
|
|
1212
|
-
Logon = 128,
|
|
1213
|
-
SOWAndSubscribe = 256,
|
|
1214
|
-
DeltaSubscribe = 512,
|
|
1215
|
-
SOWAndDeltaSubscribe = 1024,
|
|
1216
|
-
StartTimer = 2048,
|
|
1217
|
-
StopTimer = 4096,
|
|
1218
|
-
GroupBegin = 8192,
|
|
1219
|
-
GroupEnd = 16384,
|
|
1220
|
-
OOF = 32768,
|
|
1221
|
-
Ack = 65536,
|
|
1222
|
-
Flush = 131072,
|
|
1223
|
-
NoDataCommands = Publish | Unsubscribe | Heartbeat | SOWDelete | DeltaPublish
|
|
1224
|
-
| Logon | StartTimer | StopTimer | Flush
|
|
1225
|
-
} Type;
|
|
1226
|
-
};
|
|
1227
|
-
/// Decode self's "command" field and return one of the values from Command.
|
|
1228
|
-
Command::Type getCommandEnum() const
|
|
1229
|
-
{
|
|
1230
|
-
const char* data = NULL; size_t len = 0;
|
|
1231
|
-
amps_message_get_field_value(_body.get().getMessage(), AMPS_Command, &data, &len);
|
|
1232
|
-
switch (len)
|
|
1233
|
-
{
|
|
1234
|
-
case 1: return Command::Publish; // -V1037
|
|
1235
|
-
case 3:
|
|
1236
|
-
switch (data[0])
|
|
1237
|
-
{
|
|
1238
|
-
case 's': return Command::SOW;
|
|
1239
|
-
case 'o': return Command::OOF;
|
|
1240
|
-
case 'a': return Command::Ack;
|
|
1241
|
-
}
|
|
1242
|
-
break;
|
|
1243
|
-
case 5:
|
|
1244
|
-
switch (data[0])
|
|
1245
|
-
{
|
|
1246
|
-
case 'l': return Command::Logon;
|
|
1247
|
-
case 'f': return Command::Flush;
|
|
1248
|
-
}
|
|
1249
|
-
break;
|
|
1250
|
-
case 7:
|
|
1251
|
-
return Command::Publish; // -V1037
|
|
1252
|
-
break;
|
|
1253
|
-
case 9:
|
|
1254
|
-
switch (data[0])
|
|
1255
|
-
{
|
|
1256
|
-
case 's': return Command::Subscribe;
|
|
1257
|
-
case 'h': return Command::Heartbeat;
|
|
1258
|
-
case 'g': return Command::GroupEnd;
|
|
1259
|
-
}
|
|
1260
|
-
break;
|
|
1261
|
-
case 10:
|
|
1262
|
-
switch (data[1])
|
|
1263
|
-
{
|
|
1264
|
-
case 'o': return Command::SOWDelete;
|
|
1265
|
-
case 't': return Command::StopTimer;
|
|
1266
|
-
}
|
|
1267
|
-
break;
|
|
1268
|
-
case 11:
|
|
1269
|
-
switch (data[0])
|
|
1270
|
-
{
|
|
1271
|
-
case 'g': return Command::GroupBegin;
|
|
1272
|
-
case 'u': return Command::Unsubscribe;
|
|
1273
|
-
}
|
|
1274
|
-
break;
|
|
1275
|
-
case 13:
|
|
1276
|
-
return Command::DeltaPublish;
|
|
1277
|
-
case 15:
|
|
1278
|
-
return Command::DeltaSubscribe;
|
|
1279
|
-
case 17:
|
|
1280
|
-
return Command::SOWAndSubscribe;
|
|
1281
|
-
case 23:
|
|
1282
|
-
return Command::SOWAndDeltaSubscribe;
|
|
1283
|
-
}
|
|
1284
|
-
return Command::Unknown;
|
|
1285
|
-
}
|
|
1286
|
-
|
|
1287
|
-
/// Set self's "command" field from one of the values in Command.
|
|
1288
|
-
Message& setCommandEnum(Command::Type command_)
|
|
1289
|
-
{
|
|
1290
|
-
unsigned bits = 0;
|
|
1291
|
-
unsigned command = command_;
|
|
1292
|
-
while (command > 0)
|
|
1293
|
-
{
|
|
1294
|
-
++bits;
|
|
1295
|
-
command >>= 1;
|
|
1296
|
-
}
|
|
1297
|
-
amps_message_assign_field_value(_body.get().getMessage(), AMPS_Command,
|
|
1298
|
-
CommandConstants<0>::Values[bits], CommandConstants<0>::Lengths[bits]);
|
|
1299
|
-
return *this;
|
|
1300
|
-
}
|
|
1301
|
-
|
|
1302
|
-
AMPS_FIELD(CommandId)
|
|
1303
|
-
AMPS_FIELD(ClientName)
|
|
1304
|
-
AMPS_FIELD(CorrelationId)
|
|
1305
|
-
AMPS_FIELD(Expiration)
|
|
1306
|
-
AMPS_FIELD(Filter)
|
|
1307
|
-
AMPS_FIELD(GroupSequenceNumber)
|
|
1308
|
-
AMPS_FIELD(Heartbeat)
|
|
1309
|
-
AMPS_FIELD(LeasePeriod)
|
|
1310
|
-
AMPS_FIELD(Matches)
|
|
1311
|
-
AMPS_FIELD(MessageLength)
|
|
1312
|
-
AMPS_FIELD(MessageType)
|
|
1313
|
-
|
|
1314
|
-
DOX_OPENGROUP(Options)
|
|
1315
|
-
DOX_MAKEGETCOMMENT(Options)
|
|
1316
|
-
Field getOptions() const
|
|
1317
|
-
{
|
|
1318
|
-
Field returnValue;
|
|
1319
|
-
const char* ptr;
|
|
1320
|
-
size_t sz;
|
|
1321
|
-
amps_message_get_field_value(_body.get().getMessage(),
|
|
1322
|
-
AMPS_Options, &ptr, &sz);
|
|
1323
|
-
if (sz && ptr[sz - 1] == ',')
|
|
1324
|
-
{
|
|
1325
|
-
--sz;
|
|
1326
|
-
}
|
|
1327
|
-
returnValue.assign(ptr, sz);
|
|
1328
|
-
return returnValue;
|
|
1329
|
-
}
|
|
1330
|
-
|
|
1331
|
-
DOX_MAKEGETRAWCOMMENT(Options)
|
|
1332
|
-
void getRawOptions(const char** dataptr, size_t* sizeptr) const
|
|
1333
|
-
{
|
|
1334
|
-
amps_message_get_field_value(_body.get().getMessage(),
|
|
1335
|
-
AMPS_Options, dataptr, sizeptr);
|
|
1336
|
-
if (*sizeptr && *dataptr && (*dataptr)[*sizeptr - 1] == ',')
|
|
1337
|
-
{
|
|
1338
|
-
--*sizeptr;
|
|
1339
|
-
}
|
|
1340
|
-
return;
|
|
1341
|
-
}
|
|
1342
|
-
|
|
1343
|
-
DOX_MAKESETCOMMENT(Options)
|
|
1344
|
-
Message& setOptions(const std::string& v)
|
|
1345
|
-
{
|
|
1346
|
-
size_t sz = v.length();
|
|
1347
|
-
if (sz && v[sz - 1] == ',')
|
|
1348
|
-
{
|
|
1349
|
-
--sz;
|
|
1350
|
-
}
|
|
1351
|
-
amps_message_set_field_value(_body.get().getMessage(),
|
|
1352
|
-
AMPS_Options, v.c_str(), sz);
|
|
1353
|
-
return *this;
|
|
1354
|
-
}
|
|
1355
|
-
|
|
1356
|
-
DOX_MAKEASSIGNCOMMENT(Options)
|
|
1357
|
-
Message& assignOptions(const std::string& v)
|
|
1358
|
-
{
|
|
1359
|
-
size_t sz = v.length();
|
|
1360
|
-
if (sz && v[sz - 1] == ',')
|
|
1361
|
-
{
|
|
1362
|
-
--sz;
|
|
1363
|
-
}
|
|
1364
|
-
amps_message_assign_field_value(_body.get().getMessage(),
|
|
1365
|
-
AMPS_Options, v.c_str(), sz);
|
|
1366
|
-
return *this;
|
|
1367
|
-
}
|
|
1368
|
-
|
|
1369
|
-
DOX_MAKEASSIGNCOMMENT(Options)
|
|
1370
|
-
Message& assignOptions(const char* data, size_t len)
|
|
1371
|
-
{
|
|
1372
|
-
if (len && data[len - 1] == ',')
|
|
1373
|
-
{
|
|
1374
|
-
--len;
|
|
1375
|
-
}
|
|
1376
|
-
amps_message_assign_field_value(_body.get().getMessage(),
|
|
1377
|
-
AMPS_Options, data, len);
|
|
1378
|
-
return *this;
|
|
1379
|
-
}
|
|
1380
|
-
|
|
1381
|
-
DOX_MAKESETCOMMENT(Options)
|
|
1382
|
-
Message& setOptions(const char* str)
|
|
1383
|
-
{
|
|
1384
|
-
if (str)
|
|
1385
|
-
{
|
|
1386
|
-
size_t sz = strlen(str);
|
|
1387
|
-
if (sz && str[sz - 1] == ',')
|
|
1388
|
-
{
|
|
1389
|
-
--sz;
|
|
1390
|
-
}
|
|
1391
|
-
amps_message_set_field_value(_body.get().getMessage(),
|
|
1392
|
-
AMPS_Options, str, sz);
|
|
1393
|
-
}
|
|
1394
|
-
else
|
|
1395
|
-
{
|
|
1396
|
-
amps_message_set_field_value(_body.get().getMessage(),
|
|
1397
|
-
AMPS_Options, str, 0);
|
|
1398
|
-
}
|
|
1399
|
-
return *this;
|
|
1400
|
-
}
|
|
1401
|
-
|
|
1402
|
-
DOX_MAKESETCOMMENT(Options)
|
|
1403
|
-
Message& setOptions(const char* str, size_t len)
|
|
1404
|
-
{
|
|
1405
|
-
if (len && str[len - 1] == ',')
|
|
1406
|
-
{
|
|
1407
|
-
--len;
|
|
1408
|
-
}
|
|
1409
|
-
amps_message_set_field_value(_body.get().getMessage(),
|
|
1410
|
-
AMPS_Options, str, len);
|
|
1411
|
-
return *this;
|
|
1412
|
-
}
|
|
1413
|
-
DOX_CLOSEGROUP()
|
|
1414
|
-
|
|
1415
|
-
AMPS_FIELD(OrderBy)
|
|
1416
|
-
AMPS_FIELD(Password)
|
|
1417
|
-
AMPS_FIELD_ALIAS(QueryId, QueryID)
|
|
1418
|
-
AMPS_FIELD(Reason)
|
|
1419
|
-
AMPS_FIELD(RecordsInserted)
|
|
1420
|
-
AMPS_FIELD(RecordsReturned)
|
|
1421
|
-
AMPS_FIELD(RecordsUpdated)
|
|
1422
|
-
AMPS_FIELD(Sequence)
|
|
1423
|
-
AMPS_FIELD(SowDelete)
|
|
1424
|
-
AMPS_FIELD(SowKey)
|
|
1425
|
-
AMPS_FIELD(SowKeys)
|
|
1426
|
-
AMPS_FIELD(Status)
|
|
1427
|
-
AMPS_FIELD_ALIAS(SubId, SubscriptionId) // -V524
|
|
1428
|
-
AMPS_FIELD(SubscriptionIds)
|
|
1429
|
-
AMPS_FIELD(TimeoutInterval)
|
|
1430
|
-
AMPS_FIELD(Timestamp)
|
|
1431
|
-
|
|
1432
|
-
/// \deprecated Use getTimestamp.
|
|
1433
|
-
/// Get self's "timestamp" field.
|
|
1434
|
-
/// \return The timestamp Field
|
|
1435
|
-
Field getTransmissionTime() const
|
|
1436
|
-
{
|
|
1437
|
-
return getTimestamp();
|
|
1438
|
-
}
|
|
1439
|
-
|
|
1440
|
-
/// \deprecated Use getRawTimestamp.
|
|
1441
|
-
/// Get self's "timestamp" field.
|
|
1442
|
-
/// \param dataptr The pointer to be set to the timestamp.
|
|
1443
|
-
/// \param sizeptr The pointer to be set with the timestamp length.
|
|
1444
|
-
void getRawTransmissionTime(const char** dataptr, size_t* sizeptr) const
|
|
1445
|
-
{
|
|
1446
|
-
getRawTimestamp(dataptr, sizeptr);
|
|
1447
|
-
}
|
|
1448
|
-
|
|
1449
|
-
AMPS_FIELD(Topic)
|
|
1450
|
-
AMPS_FIELD(TopicMatches)
|
|
1451
|
-
AMPS_FIELD(TopNRecordsReturned)
|
|
1452
|
-
AMPS_FIELD(Version)
|
|
1453
|
-
AMPS_FIELD(UserId)
|
|
1454
|
-
|
|
1455
|
-
/// Returns the data from this message.
|
|
1456
|
-
///
|
|
1457
|
-
/// This function returns a Field that contains a pointer to the data in
|
|
1458
|
-
/// the message. This function does not make a copy of the data.
|
|
1459
|
-
|
|
1460
|
-
Field getData() const
|
|
1461
|
-
{
|
|
1462
|
-
Field returnValue;
|
|
1463
|
-
char* ptr;
|
|
1464
|
-
size_t sz;
|
|
1465
|
-
amps_message_get_data(_body.get().getMessage(), &ptr, &sz);
|
|
1466
|
-
returnValue.assign(ptr, sz);
|
|
1467
|
-
return returnValue;
|
|
1468
|
-
}
|
|
1469
|
-
|
|
1470
|
-
void getRawData(const char** data, size_t* sz) const
|
|
1471
|
-
{
|
|
1472
|
-
amps_message_get_data(_body.get().getMessage(), (char**)data, sz);
|
|
1473
|
-
}
|
|
1474
|
-
/// Sets the data portion of self.
|
|
1475
|
-
/// \param v_ the string containing your data
|
|
1476
|
-
Message& setData(const std::string& v_)
|
|
1477
|
-
{
|
|
1478
|
-
amps_message_set_data(_body.get().getMessage(), v_.c_str(), v_.length());
|
|
1479
|
-
return *this;
|
|
1480
|
-
}
|
|
1481
|
-
Message& assignData(const std::string& v_)
|
|
1482
|
-
{
|
|
1483
|
-
amps_message_assign_data(_body.get().getMessage(), v_.c_str(), v_.length());
|
|
1484
|
-
return *this;
|
|
1485
|
-
}
|
|
1486
|
-
|
|
1487
|
-
/// Sets the data portion of self from a char array.
|
|
1488
|
-
/// \param data_ a pointer to your data
|
|
1489
|
-
/// \param length_ the length, in bytes, of your data (excluding any null-terminator)
|
|
1490
|
-
Message& setData(const char* data_, size_t length_)
|
|
1491
|
-
{
|
|
1492
|
-
amps_message_set_data(_body.get().getMessage(), data_, length_);
|
|
1493
|
-
return *this;
|
|
1494
|
-
}
|
|
1495
|
-
Message& assignData(const char* data_, size_t length_)
|
|
1496
|
-
{
|
|
1497
|
-
amps_message_assign_data(_body.get().getMessage(), data_, length_);
|
|
1498
|
-
return *this;
|
|
1499
|
-
}
|
|
1500
|
-
|
|
1501
|
-
/// Sets the data portion of self from a null-terminated string.
|
|
1502
|
-
/// \param data_ a pointer to your null-terminated data.
|
|
1503
|
-
Message& setData(const char* data_)
|
|
1504
|
-
{
|
|
1505
|
-
amps_message_set_data_nts(_body.get().getMessage(), data_);
|
|
1506
|
-
return *this;
|
|
1507
|
-
}
|
|
1508
|
-
Message& assignData(const char* data_)
|
|
1509
|
-
{
|
|
1510
|
-
amps_message_assign_data(_body.get().getMessage(), data_, strlen(data_));
|
|
1511
|
-
return *this;
|
|
1512
|
-
}
|
|
1513
|
-
amps_handle getMessage() const
|
|
1514
|
-
{
|
|
1515
|
-
return _body.get().getMessage();
|
|
1516
|
-
}
|
|
1517
|
-
void replace(amps_handle message, bool owner = false)
|
|
1518
|
-
{
|
|
1519
|
-
_body.get().replace(message, owner);
|
|
1520
|
-
}
|
|
1521
|
-
void disown()
|
|
1522
|
-
{
|
|
1523
|
-
_body.get().disown();
|
|
1524
|
-
}
|
|
1525
|
-
void invalidate()
|
|
1526
|
-
{
|
|
1527
|
-
_body = NULL;
|
|
1528
|
-
}
|
|
1529
|
-
bool isValid(void) const
|
|
1530
|
-
{
|
|
1531
|
-
return _body.isValid();
|
|
1532
|
-
}
|
|
1533
|
-
Message& reset()
|
|
1534
|
-
{
|
|
1535
|
-
_body.get().reset();
|
|
1536
|
-
return *this;
|
|
1537
|
-
}
|
|
1538
|
-
|
|
1539
|
-
void setBookmarkSeqNo(size_t val)
|
|
1540
|
-
{
|
|
1541
|
-
_body.get().setBookmarkSeqNo(val);
|
|
1542
|
-
}
|
|
1543
|
-
|
|
1544
|
-
size_t getBookmarkSeqNo() const
|
|
1545
|
-
{
|
|
1546
|
-
return _body.get().getBookmarkSeqNo();
|
|
1547
|
-
}
|
|
1548
|
-
|
|
1549
|
-
void setSubscriptionHandle(amps_handle val)
|
|
1550
|
-
{
|
|
1551
|
-
_body.get().setSubscriptionHandle(val);
|
|
1552
|
-
}
|
|
1553
|
-
|
|
1554
|
-
amps_handle getSubscriptionHandle() const
|
|
1555
|
-
{
|
|
1556
|
-
return _body.get().getSubscriptionHandle();
|
|
1557
|
-
}
|
|
1558
|
-
|
|
1559
|
-
void ack(const char* options_ = NULL) const;
|
|
1560
|
-
|
|
1561
|
-
void setClientImpl(ClientImpl* pClientImpl)
|
|
1562
|
-
{
|
|
1563
|
-
_body.get().setClientImpl(pClientImpl);
|
|
1564
|
-
}
|
|
1565
|
-
|
|
1566
|
-
void setIgnoreAutoAck() const
|
|
1567
|
-
{
|
|
1568
|
-
_body.get().setIgnoreAutoAck();
|
|
1569
|
-
}
|
|
1570
|
-
|
|
1571
|
-
bool getIgnoreAutoAck() const
|
|
1572
|
-
{
|
|
1573
|
-
return _body.get().getIgnoreAutoAck();
|
|
1574
|
-
}
|
|
1575
|
-
|
|
1576
|
-
template <class T> // static
|
|
1577
|
-
void throwFor(const T& /*context_*/, const std::string& ackReason_) const
|
|
1578
|
-
{
|
|
1579
|
-
switch (ackReason_[0])
|
|
1580
|
-
{
|
|
1581
|
-
case 'a': // auth failure
|
|
1582
|
-
throw AuthenticationException("Logon failed for user \"" +
|
|
1583
|
-
(std::string)getUserId() + "\"");
|
|
1584
|
-
break;
|
|
1585
|
-
case 'b':
|
|
1586
|
-
switch (ackReason_.length())
|
|
1587
|
-
{
|
|
1588
|
-
case 10: // bad filter
|
|
1589
|
-
throw BadFilterException("bad filter '" +
|
|
1590
|
-
(std::string)getFilter() +
|
|
1591
|
-
"'");
|
|
1592
|
-
break;
|
|
1593
|
-
case 11: // bad sow key
|
|
1594
|
-
if (getSowKeys().len())
|
|
1595
|
-
{
|
|
1596
|
-
throw BadSowKeyException("bad sow key '" +
|
|
1597
|
-
(std::string)getSowKeys() +
|
|
1598
|
-
"'");
|
|
1599
|
-
}
|
|
1600
|
-
else
|
|
1601
|
-
{
|
|
1602
|
-
throw BadSowKeyException("bad sow key '" +
|
|
1603
|
-
(std::string)getSowKey() +
|
|
1604
|
-
"'");
|
|
1605
|
-
}
|
|
1606
|
-
break;
|
|
1607
|
-
case 15: // bad regex topic
|
|
1608
|
-
throw BadRegexTopicException("bad regex topic '" +
|
|
1609
|
-
(std::string)getTopic() +
|
|
1610
|
-
"'.");
|
|
1611
|
-
break;
|
|
1612
|
-
default:
|
|
1613
|
-
break;
|
|
1614
|
-
}
|
|
1615
|
-
break;
|
|
1616
|
-
case 'd':
|
|
1617
|
-
if (ackReason_.length() == 23) // duplicate logon attempt
|
|
1618
|
-
{
|
|
1619
|
-
throw DuplicateLogonException("Client '" +
|
|
1620
|
-
(std::string)getClientName() +
|
|
1621
|
-
"' with userid '" +
|
|
1622
|
-
(std::string)getUserId() +
|
|
1623
|
-
"' duplicate logon attempt");
|
|
1624
|
-
}
|
|
1625
|
-
break;
|
|
1626
|
-
case 'i':
|
|
1627
|
-
if (ackReason_.length() >= 9)
|
|
1628
|
-
{
|
|
1629
|
-
switch (ackReason_[8])
|
|
1630
|
-
{
|
|
1631
|
-
case 'b': // invalid bookmark
|
|
1632
|
-
throw InvalidBookmarkException("invalid bookmark '" +
|
|
1633
|
-
(std::string)getBookmark() +
|
|
1634
|
-
"'.");
|
|
1635
|
-
break;
|
|
1636
|
-
case 'm': // invalid message type
|
|
1637
|
-
throw CommandException(std::string("invalid message type '") +
|
|
1638
|
-
(std::string)getMessageType() +
|
|
1639
|
-
"'.");
|
|
1640
|
-
break;
|
|
1641
|
-
case 'o':
|
|
1642
|
-
if (ackReason_[9] == 'p') // invalid options
|
|
1643
|
-
{
|
|
1644
|
-
throw InvalidOptionsException("invalid options '" +
|
|
1645
|
-
(std::string)getOptions() +
|
|
1646
|
-
"'.");
|
|
1647
|
-
}
|
|
1648
|
-
else if (ackReason_[9] == 'r') // invalid order by
|
|
1649
|
-
{
|
|
1650
|
-
throw InvalidOrderByException("invalid order by '" +
|
|
1651
|
-
(std::string)getOrderBy() +
|
|
1652
|
-
"'.");
|
|
1653
|
-
}
|
|
1654
|
-
break;
|
|
1655
|
-
case 's': // invalid subId
|
|
1656
|
-
throw InvalidSubIdException("invalid subid '" +
|
|
1657
|
-
(std::string)getSubscriptionId() +
|
|
1658
|
-
"'.");
|
|
1659
|
-
break;
|
|
1660
|
-
case 't':
|
|
1661
|
-
if (ackReason_.length() == 13) // invalid topic
|
|
1662
|
-
{
|
|
1663
|
-
throw InvalidTopicException("invalid topic '" +
|
|
1664
|
-
(std::string)getTopic() +
|
|
1665
|
-
"'.");
|
|
1666
|
-
}
|
|
1667
|
-
else if (ackReason_.length() == 23) // invalid topic or filter
|
|
1668
|
-
{
|
|
1669
|
-
throw InvalidTopicException("invalid topic or filter. Topic '" +
|
|
1670
|
-
(std::string)getTopic() +
|
|
1671
|
-
"' Filter '" +
|
|
1672
|
-
(std::string)getFilter() +
|
|
1673
|
-
"'.");
|
|
1674
|
-
}
|
|
1675
|
-
break;
|
|
1676
|
-
default:
|
|
1677
|
-
break;
|
|
1678
|
-
}
|
|
1679
|
-
}
|
|
1680
|
-
break;
|
|
1681
|
-
case 'l':
|
|
1682
|
-
if (ackReason_.length() == 14) // logon required
|
|
1683
|
-
{
|
|
1684
|
-
throw LogonRequiredException("logon required before command");
|
|
1685
|
-
}
|
|
1686
|
-
break;
|
|
1687
|
-
case 'n':
|
|
1688
|
-
switch (ackReason_[4])
|
|
1689
|
-
{
|
|
1690
|
-
case ' ': // name in use
|
|
1691
|
-
throw NameInUseException("name in use '" +
|
|
1692
|
-
(std::string)getClientName() +
|
|
1693
|
-
"'.");
|
|
1694
|
-
break;
|
|
1695
|
-
case 'e': // not entitled
|
|
1696
|
-
throw NotEntitledException("User \"" +
|
|
1697
|
-
(std::string)getUserId() +
|
|
1698
|
-
"\" not entitled to topic \"" +
|
|
1699
|
-
(std::string)getTopic() +
|
|
1700
|
-
"\".");
|
|
1701
|
-
break;
|
|
1702
|
-
case 'i': // no filter or bookmark
|
|
1703
|
-
throw MissingFieldsException("command sent with no filter or bookmark.");
|
|
1704
|
-
break;
|
|
1705
|
-
case 'l': // no client name
|
|
1706
|
-
throw MissingFieldsException("command sent with no client name.");
|
|
1707
|
-
break;
|
|
1708
|
-
case 'o': // no topic or filter
|
|
1709
|
-
throw MissingFieldsException("command sent with no topic or filter.");
|
|
1710
|
-
break;
|
|
1711
|
-
case 's': // not supported
|
|
1712
|
-
throw CommandException("operation on topic '" +
|
|
1713
|
-
(std::string)getTopic() +
|
|
1714
|
-
"' with options '" +
|
|
1715
|
-
(std::string)getOptions() +
|
|
1716
|
-
"' not supported.");
|
|
1717
|
-
break;
|
|
1718
|
-
default:
|
|
1719
|
-
break;
|
|
1720
|
-
}
|
|
1721
|
-
break;
|
|
1722
|
-
case 'o':
|
|
1723
|
-
switch (ackReason_.length())
|
|
1724
|
-
{
|
|
1725
|
-
case 16: // orderby required
|
|
1726
|
-
throw MissingFieldsException("orderby required");
|
|
1727
|
-
break;
|
|
1728
|
-
case 17: // orderby too large
|
|
1729
|
-
throw CommandException("orderby too large '" +
|
|
1730
|
-
(std::string)getOrderBy() +
|
|
1731
|
-
"'.");
|
|
1732
|
-
break;
|
|
1733
|
-
}
|
|
1734
|
-
break;
|
|
1735
|
-
case 'p':
|
|
1736
|
-
throw CommandException("projection clause too large in options '" +
|
|
1737
|
-
(std::string)getOptions() +
|
|
1738
|
-
"'.");
|
|
1739
|
-
break;
|
|
1740
|
-
case 'r':
|
|
1741
|
-
switch (ackReason_[2])
|
|
1742
|
-
{
|
|
1743
|
-
case 'g': // regex topic not supported
|
|
1744
|
-
throw BadRegexTopicException("'regex topic not supported '" +
|
|
1745
|
-
(std::string)getTopic() +
|
|
1746
|
-
"'.");
|
|
1747
|
-
break;
|
|
1748
|
-
default:
|
|
1749
|
-
break;
|
|
1750
|
-
}
|
|
1751
|
-
break;
|
|
1752
|
-
case 's':
|
|
1753
|
-
switch (ackReason_[5])
|
|
1754
|
-
{
|
|
1755
|
-
case ' ': // subid in use
|
|
1756
|
-
throw SubidInUseException("subid in use '" +
|
|
1757
|
-
(std::string)getSubscriptionId() +
|
|
1758
|
-
"'.");
|
|
1759
|
-
break;
|
|
1760
|
-
case 'e': // sow_delete command only supports one of: filter, sow_keys, bookmark, or data
|
|
1761
|
-
throw CommandException("sow_delete command only supports one of: filter '" +
|
|
1762
|
-
(std::string)getFilter() +
|
|
1763
|
-
"', sow_keys '" +
|
|
1764
|
-
(std::string)getSowKeys() +
|
|
1765
|
-
"', bookmark '" +
|
|
1766
|
-
(std::string)getBookmark() +
|
|
1767
|
-
"', or data '" +
|
|
1768
|
-
(std::string)getData() +
|
|
1769
|
-
"'.");
|
|
1770
|
-
break;
|
|
1771
|
-
case 't': // sow store failed
|
|
1772
|
-
throw PublishException("sow store failed.");
|
|
1773
|
-
break;
|
|
1774
|
-
default:
|
|
1775
|
-
break;
|
|
1776
|
-
}
|
|
1777
|
-
break;
|
|
1778
|
-
case 't':
|
|
1779
|
-
switch (ackReason_[2])
|
|
1780
|
-
{
|
|
1781
|
-
case ' ': // tx store failure
|
|
1782
|
-
throw PublishException("tx store failure.");
|
|
1783
|
-
break;
|
|
1784
|
-
case 'n': // txn replay failed
|
|
1785
|
-
throw CommandException("txn replay failed for '" +
|
|
1786
|
-
(std::string)getSubId() +
|
|
1787
|
-
"'.");
|
|
1788
|
-
break;
|
|
1789
|
-
}
|
|
1790
|
-
break;
|
|
1791
|
-
default:
|
|
1792
|
-
break;
|
|
1793
|
-
}
|
|
1794
|
-
throw CommandException("Error from server while processing this command: '" +
|
|
1795
|
-
ackReason_ + "'");
|
|
1796
|
-
}
|
|
1797
|
-
};
|
|
1798
|
-
|
|
1799
|
-
inline std::string
|
|
1800
|
-
operator+(const std::string& lhs, const Message::Field& rhs)
|
|
1801
|
-
{
|
|
1802
|
-
return lhs + std::string(rhs);
|
|
1803
|
-
}
|
|
1804
|
-
|
|
1805
|
-
inline std::basic_ostream<char>&
|
|
1806
|
-
operator<<(std::basic_ostream<char>& os, const Message::Field& rhs)
|
|
1807
|
-
{
|
|
1808
|
-
os.write(rhs.data(), (std::streamsize)rhs.len());
|
|
1809
|
-
return os;
|
|
1810
|
-
}
|
|
1811
|
-
inline bool
|
|
1812
|
-
AMPS::Field::operator<(const AMPS::Field& rhs) const
|
|
1813
|
-
{
|
|
1814
|
-
return std::lexicographical_compare(data(), data() + len(), rhs.data(), rhs.data() + rhs.len());
|
|
1815
|
-
}
|
|
1816
|
-
|
|
1817
|
-
}
|
|
1818
|
-
|
|
1819
|
-
#endif
|