amps-python-client 5.3.4.1__zip → 5.3.4.3__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- amps-python-client-5.3.4.3/LICENSE +168 -0
- amps-python-client-5.3.4.3/PKG-INFO +112 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/intro.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/logon.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/publishing.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/removing.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/chapters/utilities.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_sources/index.rst.txt +36 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/ack-messages.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/content-messages.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/intro.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/logon.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/protocol-reference.html +93 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/publishing.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/query-delimiters.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/query-subscribe.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/removing.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/chapters/utilities.html +95 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/genindex.html +97 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/index.html +98 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/objects.inv +6 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/command-reference/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/html/code.html +6851 -0
- amps-python-client-5.3.4.3/docs/html/genindex.html +1363 -0
- amps-python-client-5.3.4.3/docs/html/index.html +131 -0
- amps-python-client-5.3.4.3/docs/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/html/py-modindex.html +111 -0
- amps-python-client-5.3.4.3/docs/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/deltas.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/error-handling.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/exceptions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/first-program.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/high-availability.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/installing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/introduction.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/python/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/advanced-topics.rst.txt +398 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +26 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/creating-commands.rst.txt +159 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/deltas.rst.txt +79 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/error-handling.rst.txt +481 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/exceptions.rst.txt +123 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/first-program.rst.txt +168 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/high-availability.rst.txt +879 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/installing.rst.txt +184 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/introduction.rst.txt +50 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +32 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/performance-tips.rst.txt +432 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/queues.rst.txt +282 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/sow.rst.txt +294 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/subscriptions.rst.txt +374 -0
- amps-python-client-5.3.4.3/docs/python/html/_sources/chapters/utilities.rst.txt +214 -0
- amps-python-client-5.3.4.3/docs/python/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/advanced-topics.html +447 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/cpp-compiler-list.html +92 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/cpp-feature-table.html +156 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/creating-commands.html +2882 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/deltas.html +169 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/error-handling.html +745 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/exceptions.html +266 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/first-program.html +526 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/high-availability.html +1017 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/installing.html +264 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/introduction.html +245 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/moving-from-python-lite.html +118 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/performance-tips.html +499 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/queues.html +352 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/sow.html +383 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/subscriptions.html +535 -0
- amps-python-client-5.3.4.3/docs/python/html/chapters/utilities.html +302 -0
- amps-python-client-5.3.4.3/docs/python/html/genindex.html +351 -0
- amps-python-client-5.3.4.3/docs/python/html/index.html +382 -0
- amps-python-client-5.3.4.3/docs/python/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/python/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/python/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/chapters/crankitup.html +271 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/chapters/equipment.html +105 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/genindex.html +97 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/index.html +381 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/search.html +107 -0
- amps-python-client-5.3.4.3/docs/python-quickstart/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/events.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/chapters/views.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/.buildinfo +4 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/acks.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/actions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/daemon.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/delta.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/distribution.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/events.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/glossary.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/ha.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/intro.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/logging.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/oof.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/operation.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/queues.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/replication.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/securing.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/sow.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/transports.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/txlog.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/usecases.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/utilities.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/chapters/views.rst.txt +8 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_sources/index.rst.txt +62 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/acks.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/actions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/amps-statistics.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/amps_expressions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/amps_functions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/auxiliary_modules.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/config-file-shortcuts.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/conflated_topics.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/constructing-fields.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/daemon.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/delta.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/distribution.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/enrichment.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/events.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/file_format_versions.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/glossary.html +92 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/ha.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/installing_and_starting.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/intro.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/logging.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/messageTypes.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/monitoring.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/oof.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/operation.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/pub_sub.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/queues.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/replication.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/securing.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/sow.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/sow_queries.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/spark.html +819 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/transports.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/troubleshooting.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/txlog.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/usecases.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/utilities.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/chapters/views.html +94 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/genindex.html +133 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/index.html +96 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/objects.inv +0 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/search.html +106 -0
- amps-python-client-5.3.4.3/docs/user-guide/html/searchindex.js +1 -0
- amps-python-client-5.3.4.3/include/ampspy_bookmarkstore.hpp +63 -0
- amps-python-client-5.3.4.3/include/ampspy_compat.h +63 -0
- amps-python-client-5.3.4.3/include/ampspy_defs.hpp +181 -0
- amps-python-client-5.3.4.3/include/ampspy_recoverypointadapter.hpp +52 -0
- amps-python-client-5.3.4.3/include/ampspy_shims.hpp +113 -0
- amps-python-client-5.3.4.3/include/ampspy_type_object.hpp +242 -0
- amps-python-client-5.3.4.3/include/ampspy_types.hpp +1139 -0
- amps-python-client-5.3.4.3/include/ampspyver.h +30 -0
- amps-python-client-5.3.4.3/index.html +66 -0
- amps-python-client-5.3.4.3/samples/AMPSConsolePublisher.py +59 -0
- amps-python-client-5.3.4.3/samples/AMPSConsoleSubscriber.py +63 -0
- amps-python-client-5.3.4.3/samples/AMPSFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.3/samples/AMPSFIXShredderSubscriber.py +69 -0
- amps-python-client-5.3.4.3/samples/AMPSNVFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.3/samples/AMPSNVFIXShredderSubscriber.py +67 -0
- amps-python-client-5.3.4.3/samples/AMPSPublishForReplay.py +81 -0
- amps-python-client-5.3.4.3/samples/AMPSQueueConsumer.py +69 -0
- amps-python-client-5.3.4.3/samples/AMPSQueuePublisher.py +59 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWConsolePublisher.py +67 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWConsoleSubscriber.py +77 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWandSubscribeConsoleSubscriber.py +79 -0
- amps-python-client-5.3.4.3/samples/AMPSSOWandSubscribeWithOOF.py +108 -0
- amps-python-client-5.3.4.3/samples/AMPSSubscribeForReplay.py +128 -0
- amps-python-client-5.3.4.3/samples/AMPSUpdateForOOF.py +123 -0
- amps-python-client-5.3.4.3/samples/CompositeMessagePublisher.py +84 -0
- amps-python-client-5.3.4.3/samples/CompositeMessageSubscriber.py +87 -0
- amps-python-client-5.3.4.3/samples/RandomServerChooser.py +66 -0
- amps-python-client-5.3.4.3/samples/sample.xml +335 -0
- amps-python-client-5.3.4.3/setup.py +210 -0
- amps-python-client-5.3.4.3/setup_amps.py +94 -0
- amps-python-client-5.3.4.3/src/ampspy_shims.cpp +214 -0
- amps-python-client-5.3.4.3/src/ampspy_type_object.cpp +495 -0
- amps-python-client-5.3.4.3/src/authenticator.cpp +128 -0
- amps-python-client-5.3.4.3/src/bookmarkstore.cpp +246 -0
- amps-python-client-5.3.4.3/src/client.cpp +2648 -0
- amps-python-client-5.3.4.3/src/client_docs.h +1210 -0
- amps-python-client-5.3.4.3/src/cmessagehandler.cpp +161 -0
- amps-python-client-5.3.4.3/src/command.cpp +164 -0
- amps-python-client-5.3.4.3/src/command_docs.h +274 -0
- amps-python-client-5.3.4.3/src/compositemessagebuilder.cpp +113 -0
- amps-python-client-5.3.4.3/src/compositemessageparser.cpp +151 -0
- amps-python-client-5.3.4.3/src/conflatingrecoverypointadapter.cpp +197 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/BlockPublishStore.hpp +2050 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/BlockStore.hpp +674 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/BookmarkStore.hpp +542 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/Buffer.hpp +214 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/CompositeMessageBuilder.hpp +174 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/CompositeMessageParser.hpp +151 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/DefaultServerChooser.hpp +162 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/Field.hpp +723 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/HAClient.hpp +370 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/HAClientImpl.hpp +460 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/HybridPublishStore.hpp +481 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/LoggedBookmarkStore.hpp +1256 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MMapBookmarkStore.hpp +1283 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MMapStoreBuffer.hpp +297 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemoryBookmarkStore.hpp +1628 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemoryPublishStore.hpp +66 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemoryStoreBuffer.hpp +247 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MemorySubscriptionManager.hpp +850 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/Message.hpp +1827 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/MessageRouter.hpp +647 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/PublishStore.hpp +158 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ReconnectDelayStrategy.hpp +106 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +317 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/RecoveryPoint.hpp +323 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/RecoveryPointAdapter.hpp +501 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/RingBookmarkStore.hpp +669 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +494 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ServerChooser.hpp +156 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ServerChooserImpl.hpp +95 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/amps.h +815 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/amps_impl.h +220 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/amps_ssl.h +78 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampscrc.hpp +208 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsplusplus.hpp +8846 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsuri.h +84 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsver.h +41 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/ampsver.h.in +41 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/constants.hpp +194 -0
- amps-python-client-5.3.4.3/src/cpp/include/amps/util.hpp +1722 -0
- amps-python-client-5.3.4.3/src/cpp/src/amps_protocol.c +693 -0
- amps-python-client-5.3.4.3/src/cpp/src/amps_ssl.c +565 -0
- amps-python-client-5.3.4.3/src/cpp/src/atfork.c +484 -0
- amps-python-client-5.3.4.3/src/cpp/src/client.c +498 -0
- amps-python-client-5.3.4.3/src/cpp/src/message.c +837 -0
- amps-python-client-5.3.4.3/src/cpp/src/message_generated.h +611 -0
- amps-python-client-5.3.4.3/src/cpp/src/tcp.c +1683 -0
- amps-python-client-5.3.4.3/src/cpp/src/tcps.c +2005 -0
- amps-python-client-5.3.4.3/src/cpp/src/transports.c +129 -0
- amps-python-client-5.3.4.3/src/cpp/src/unix.c +1063 -0
- amps-python-client-5.3.4.3/src/cpp/src/uri.c +301 -0
- amps-python-client-5.3.4.3/src/exponentialdelaystrategy.cpp +131 -0
- amps-python-client-5.3.4.3/src/failedwritehandler.cpp +116 -0
- amps-python-client-5.3.4.3/src/fixbuilder.cpp +146 -0
- amps-python-client-5.3.4.3/src/fixeddelaystrategy.cpp +115 -0
- amps-python-client-5.3.4.3/src/fixshredder.cpp +105 -0
- amps-python-client-5.3.4.3/src/fixshredder_docs.h +38 -0
- amps-python-client-5.3.4.3/src/haclient.cpp +691 -0
- amps-python-client-5.3.4.3/src/haclient_docs.h +200 -0
- amps-python-client-5.3.4.3/src/hybridpublishstore.cpp +137 -0
- amps-python-client-5.3.4.3/src/hybridpublishstore_docs.h +31 -0
- amps-python-client-5.3.4.3/src/memorybookmarkstore.cpp +373 -0
- amps-python-client-5.3.4.3/src/memorybookmarkstore_docs.h +39 -0
- amps-python-client-5.3.4.3/src/memorypublishstore.cpp +160 -0
- amps-python-client-5.3.4.3/src/memorypublishstore_docs.h +32 -0
- amps-python-client-5.3.4.3/src/message.cpp +765 -0
- amps-python-client-5.3.4.3/src/message_docs.h +306 -0
- amps-python-client-5.3.4.3/src/messagestream.cpp +630 -0
- amps-python-client-5.3.4.3/src/messagestream_docs.h +45 -0
- amps-python-client-5.3.4.3/src/mmapbookmarkstore.cpp +422 -0
- amps-python-client-5.3.4.3/src/nvfixbuilder.cpp +160 -0
- amps-python-client-5.3.4.3/src/nvfixbuilder_docs.h +35 -0
- amps-python-client-5.3.4.3/src/nvfixshredder.cpp +99 -0
- amps-python-client-5.3.4.3/src/nvfixshredder_docs.h +43 -0
- amps-python-client-5.3.4.3/src/publishstore.cpp +183 -0
- amps-python-client-5.3.4.3/src/raw_wrapper.cpp +765 -0
- amps-python-client-5.3.4.3/src/reason.cpp +71 -0
- amps-python-client-5.3.4.3/src/recoverypoint.cpp +135 -0
- amps-python-client-5.3.4.3/src/recoverypointadapter.cpp +171 -0
- amps-python-client-5.3.4.3/src/ringbookmarkstore.cpp +360 -0
- amps-python-client-5.3.4.3/src/serverchooser.cpp +245 -0
- amps-python-client-5.3.4.3/src/serverchooser_docs.h +41 -0
- amps-python-client-5.3.4.3/src/sowrecoverypointadapter.cpp +248 -0
- amps-python-client-5.3.4.3/src/store.cpp +62 -0
- amps-python-client-5.3.4.3/src/versioninfo.cpp +175 -0
- amps-python-client-5.3.4.1/LICENSE +0 -157
- amps-python-client-5.3.4.1/PKG-INFO +0 -112
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +0 -32
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +0 -27
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/intro.rst.txt +0 -43
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/logon.rst.txt +0 -231
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +0 -1474
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/publishing.rst.txt +0 -25
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +0 -12
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +0 -23
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/removing.rst.txt +0 -6
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/utilities.rst.txt +0 -13
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/index.rst.txt +0 -56
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/ack-messages.html +0 -417
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/content-messages.html +0 -417
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/intro.html +0 -126
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/logon.html +0 -295
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/protocol-reference.html +0 -1190
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/publishing.html +0 -436
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-delimiters.html +0 -173
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-subscribe.html +0 -2123
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/removing.html +0 -299
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/utilities.html +0 -287
- amps-python-client-5.3.4.1/docs/command-reference/html/genindex.html +0 -97
- amps-python-client-5.3.4.1/docs/command-reference/html/index.html +0 -138
- amps-python-client-5.3.4.1/docs/command-reference/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/command-reference/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/html/code.html +0 -6503
- amps-python-client-5.3.4.1/docs/html/genindex.html +0 -1361
- amps-python-client-5.3.4.1/docs/html/index.html +0 -131
- amps-python-client-5.3.4.1/docs/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/html/py-modindex.html +0 -111
- amps-python-client-5.3.4.1/docs/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/deltas.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/error-handling.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/exceptions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/first-program.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/high-availability.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/installing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/introduction.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/python/html/_images/caution.svg +0 -25
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/advanced-topics.rst.txt +0 -398
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +0 -26
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/creating-commands.rst.txt +0 -159
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/deltas.rst.txt +0 -79
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/error-handling.rst.txt +0 -482
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/exceptions.rst.txt +0 -128
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/first-program.rst.txt +0 -142
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/high-availability.rst.txt +0 -876
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/installing.rst.txt +0 -184
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/introduction.rst.txt +0 -50
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +0 -32
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/performance-tips.rst.txt +0 -434
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/queues.rst.txt +0 -282
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/sow.rst.txt +0 -292
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/subscriptions.rst.txt +0 -374
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/utilities.rst.txt +0 -214
- amps-python-client-5.3.4.1/docs/python/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/python/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/python/html/chapters/advanced-topics.html +0 -447
- amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-compiler-list.html +0 -92
- amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-feature-table.html +0 -156
- amps-python-client-5.3.4.1/docs/python/html/chapters/creating-commands.html +0 -2837
- amps-python-client-5.3.4.1/docs/python/html/chapters/deltas.html +0 -169
- amps-python-client-5.3.4.1/docs/python/html/chapters/error-handling.html +0 -746
- amps-python-client-5.3.4.1/docs/python/html/chapters/exceptions.html +0 -272
- amps-python-client-5.3.4.1/docs/python/html/chapters/first-program.html +0 -499
- amps-python-client-5.3.4.1/docs/python/html/chapters/high-availability.html +0 -1014
- amps-python-client-5.3.4.1/docs/python/html/chapters/installing.html +0 -264
- amps-python-client-5.3.4.1/docs/python/html/chapters/introduction.html +0 -245
- amps-python-client-5.3.4.1/docs/python/html/chapters/moving-from-python-lite.html +0 -118
- amps-python-client-5.3.4.1/docs/python/html/chapters/performance-tips.html +0 -499
- amps-python-client-5.3.4.1/docs/python/html/chapters/queues.html +0 -352
- amps-python-client-5.3.4.1/docs/python/html/chapters/sow.html +0 -381
- amps-python-client-5.3.4.1/docs/python/html/chapters/subscriptions.html +0 -535
- amps-python-client-5.3.4.1/docs/python/html/chapters/utilities.html +0 -302
- amps-python-client-5.3.4.1/docs/python/html/genindex.html +0 -351
- amps-python-client-5.3.4.1/docs/python/html/index.html +0 -380
- amps-python-client-5.3.4.1/docs/python/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/python/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/python/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/crankitup.html +0 -271
- amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/equipment.html +0 -105
- amps-python-client-5.3.4.1/docs/python-quickstart/html/genindex.html +0 -97
- amps-python-client-5.3.4.1/docs/python-quickstart/html/index.html +0 -382
- amps-python-client-5.3.4.1/docs/python-quickstart/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/python-quickstart/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/events.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/views.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/AMPS-Queues-Intro.svg +0 -1330
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/GeoRepl.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_async_ack.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_sync_ack.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/Hot-Hot-Replication.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/MessageOrdering.svg +0 -235
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF5.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF6.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF7.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF8.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub1.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub2.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWAndSubscribeAndReplace.svg +0 -684
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery1.svg +0 -402
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery2.svg +0 -505
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig1.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig2.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig3.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig4.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.svg +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/chicago_group.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_original_messages.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_update_message.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.svg +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/inline_view_conflation.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_pub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_sub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/queue_usage_overview.svg +0 -627
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_hub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_scenario_with_ha.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_1.svg +0 -248
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_2.svg +0 -183
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_update_sequence.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.svg +0 -31
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.svg +0 -23
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/acks.rst.txt +0 -232
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/actions.rst.txt +0 -111
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +0 -358
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +0 -83
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +0 -11
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +0 -86
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +0 -9
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +0 -111
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +0 -269
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/daemon.rst.txt +0 -232
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/delta.rst.txt +0 -556
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/distribution.rst.txt +0 -186
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +0 -191
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/events.rst.txt +0 -39
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +0 -203
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/glossary.rst.txt +0 -101
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/ha.rst.txt +0 -465
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +0 -23
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/intro.rst.txt +0 -116
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/logging.rst.txt +0 -34
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +0 -1398
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +0 -326
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/oof.rst.txt +0 -312
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/operation.rst.txt +0 -27
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +0 -49
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/queues.rst.txt +0 -1351
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/replication.rst.txt +0 -1228
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/securing.rst.txt +0 -657
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow.rst.txt +0 -57
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/transports.rst.txt +0 -291
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +0 -517
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/txlog.rst.txt +0 -62
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/usecases.rst.txt +0 -21
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/utilities.rst.txt +0 -62
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/views.rst.txt +0 -175
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/index.rst.txt +0 -110
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/acks.html +0 -289
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/actions.html +0 -3782
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps-statistics.html +0 -439
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_expressions.html +0 -1552
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_functions.html +0 -1626
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/auxiliary_modules.html +0 -2548
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/config-file-shortcuts.html +0 -508
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/conflated_topics.html +0 -328
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/constructing-fields.html +0 -447
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/daemon.html +0 -295
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/delta.html +0 -609
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/distribution.html +0 -246
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/enrichment.html +0 -264
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/events.html +0 -449
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/file_format_versions.html +0 -229
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/glossary.html +0 -215
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/ha.html +0 -978
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/installing_and_starting.html +0 -357
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/intro.html +0 -572
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/logging.html +0 -972
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/messageTypes.html +0 -1280
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/monitoring.html +0 -718
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/oof.html +0 -341
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/operation.html +0 -1515
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/pub_sub.html +0 -934
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/queues.html +0 -1767
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/replication.html +0 -1777
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/securing.html +0 -697
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow.html +0 -1038
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow_queries.html +0 -621
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/spark.html +0 -819
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/transports.html +0 -352
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/troubleshooting.html +0 -530
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/txlog.html +0 -1013
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/usecases.html +0 -288
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/utilities.html +0 -133
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/views.html +0 -1120
- amps-python-client-5.3.4.1/docs/user-guide/html/genindex.html +0 -1261
- amps-python-client-5.3.4.1/docs/user-guide/html/index.html +0 -163
- amps-python-client-5.3.4.1/docs/user-guide/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/search.html +0 -106
- amps-python-client-5.3.4.1/docs/user-guide/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/include/ampspy_bookmarkstore.hpp +0 -63
- amps-python-client-5.3.4.1/include/ampspy_compat.h +0 -63
- amps-python-client-5.3.4.1/include/ampspy_defs.hpp +0 -181
- amps-python-client-5.3.4.1/include/ampspy_recoverypointadapter.hpp +0 -52
- amps-python-client-5.3.4.1/include/ampspy_shims.hpp +0 -113
- amps-python-client-5.3.4.1/include/ampspy_type_object.hpp +0 -242
- amps-python-client-5.3.4.1/include/ampspy_types.hpp +0 -1139
- amps-python-client-5.3.4.1/include/ampspyver.h +0 -30
- amps-python-client-5.3.4.1/index.html +0 -66
- amps-python-client-5.3.4.1/samples/AMPSConsolePublisher.py +0 -59
- amps-python-client-5.3.4.1/samples/AMPSConsoleSubscriber.py +0 -63
- amps-python-client-5.3.4.1/samples/AMPSFIXBuilderPublisher.py +0 -71
- amps-python-client-5.3.4.1/samples/AMPSFIXShredderSubscriber.py +0 -69
- amps-python-client-5.3.4.1/samples/AMPSNVFIXBuilderPublisher.py +0 -71
- amps-python-client-5.3.4.1/samples/AMPSNVFIXShredderSubscriber.py +0 -67
- amps-python-client-5.3.4.1/samples/AMPSPublishForReplay.py +0 -81
- amps-python-client-5.3.4.1/samples/AMPSQueueConsumer.py +0 -69
- amps-python-client-5.3.4.1/samples/AMPSQueuePublisher.py +0 -59
- amps-python-client-5.3.4.1/samples/AMPSSOWConsolePublisher.py +0 -67
- amps-python-client-5.3.4.1/samples/AMPSSOWConsoleSubscriber.py +0 -77
- amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeConsoleSubscriber.py +0 -79
- amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeWithOOF.py +0 -108
- amps-python-client-5.3.4.1/samples/AMPSSubscribeForReplay.py +0 -128
- amps-python-client-5.3.4.1/samples/AMPSUpdateForOOF.py +0 -123
- amps-python-client-5.3.4.1/samples/CompositeMessagePublisher.py +0 -84
- amps-python-client-5.3.4.1/samples/CompositeMessageSubscriber.py +0 -87
- amps-python-client-5.3.4.1/samples/RandomServerChooser.py +0 -41
- amps-python-client-5.3.4.1/samples/sample.xml +0 -335
- amps-python-client-5.3.4.1/setup.py +0 -209
- amps-python-client-5.3.4.1/setup_amps.py +0 -94
- amps-python-client-5.3.4.1/src/ampspy_shims.cpp +0 -203
- amps-python-client-5.3.4.1/src/ampspy_type_object.cpp +0 -484
- amps-python-client-5.3.4.1/src/authenticator.cpp +0 -128
- amps-python-client-5.3.4.1/src/bookmarkstore.cpp +0 -238
- amps-python-client-5.3.4.1/src/client.cpp +0 -2430
- amps-python-client-5.3.4.1/src/client_docs.h +0 -956
- amps-python-client-5.3.4.1/src/cmessagehandler.cpp +0 -151
- amps-python-client-5.3.4.1/src/command.cpp +0 -164
- amps-python-client-5.3.4.1/src/command_docs.h +0 -194
- amps-python-client-5.3.4.1/src/compositemessagebuilder.cpp +0 -111
- amps-python-client-5.3.4.1/src/compositemessageparser.cpp +0 -146
- amps-python-client-5.3.4.1/src/conflatingrecoverypointadapter.cpp +0 -194
- amps-python-client-5.3.4.1/src/cpp/include/amps/BlockPublishStore.hpp +0 -2053
- amps-python-client-5.3.4.1/src/cpp/include/amps/BlockStore.hpp +0 -677
- amps-python-client-5.3.4.1/src/cpp/include/amps/BookmarkStore.hpp +0 -542
- amps-python-client-5.3.4.1/src/cpp/include/amps/Buffer.hpp +0 -214
- amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageBuilder.hpp +0 -174
- amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageParser.hpp +0 -151
- amps-python-client-5.3.4.1/src/cpp/include/amps/DefaultServerChooser.hpp +0 -162
- amps-python-client-5.3.4.1/src/cpp/include/amps/Field.hpp +0 -719
- amps-python-client-5.3.4.1/src/cpp/include/amps/HAClient.hpp +0 -370
- amps-python-client-5.3.4.1/src/cpp/include/amps/HAClientImpl.hpp +0 -460
- amps-python-client-5.3.4.1/src/cpp/include/amps/HybridPublishStore.hpp +0 -481
- amps-python-client-5.3.4.1/src/cpp/include/amps/LoggedBookmarkStore.hpp +0 -1255
- amps-python-client-5.3.4.1/src/cpp/include/amps/MMapBookmarkStore.hpp +0 -1283
- amps-python-client-5.3.4.1/src/cpp/include/amps/MMapStoreBuffer.hpp +0 -290
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryBookmarkStore.hpp +0 -1622
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryPublishStore.hpp +0 -66
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryStoreBuffer.hpp +0 -244
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemorySubscriptionManager.hpp +0 -850
- amps-python-client-5.3.4.1/src/cpp/include/amps/Message.hpp +0 -1819
- amps-python-client-5.3.4.1/src/cpp/include/amps/MessageRouter.hpp +0 -618
- amps-python-client-5.3.4.1/src/cpp/include/amps/PublishStore.hpp +0 -158
- amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategy.hpp +0 -106
- amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +0 -317
- amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPoint.hpp +0 -323
- amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPointAdapter.hpp +0 -501
- amps-python-client-5.3.4.1/src/cpp/include/amps/RingBookmarkStore.hpp +0 -669
- amps-python-client-5.3.4.1/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +0 -490
- amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooser.hpp +0 -145
- amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooserImpl.hpp +0 -95
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps.h +0 -775
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_impl.h +0 -204
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_ssl.h +0 -78
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampscrc.hpp +0 -210
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsplusplus.hpp +0 -8817
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsuri.h +0 -84
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h +0 -41
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h.in +0 -41
- amps-python-client-5.3.4.1/src/cpp/include/amps/constants.hpp +0 -194
- amps-python-client-5.3.4.1/src/cpp/include/amps/util.hpp +0 -1692
- amps-python-client-5.3.4.1/src/cpp/src/amps_protocol.c +0 -688
- amps-python-client-5.3.4.1/src/cpp/src/amps_ssl.c +0 -489
- amps-python-client-5.3.4.1/src/cpp/src/atfork.c +0 -446
- amps-python-client-5.3.4.1/src/cpp/src/client.c +0 -483
- amps-python-client-5.3.4.1/src/cpp/src/message.c +0 -837
- amps-python-client-5.3.4.1/src/cpp/src/message_generated.h +0 -611
- amps-python-client-5.3.4.1/src/cpp/src/tcp.c +0 -1489
- amps-python-client-5.3.4.1/src/cpp/src/tcps.c +0 -1894
- amps-python-client-5.3.4.1/src/cpp/src/transports.c +0 -123
- amps-python-client-5.3.4.1/src/cpp/src/unix.c +0 -984
- amps-python-client-5.3.4.1/src/cpp/src/uri.c +0 -301
- amps-python-client-5.3.4.1/src/exponentialdelaystrategy.cpp +0 -137
- amps-python-client-5.3.4.1/src/failedwritehandler.cpp +0 -116
- amps-python-client-5.3.4.1/src/fixbuilder.cpp +0 -146
- amps-python-client-5.3.4.1/src/fixeddelaystrategy.cpp +0 -114
- amps-python-client-5.3.4.1/src/fixshredder.cpp +0 -105
- amps-python-client-5.3.4.1/src/fixshredder_docs.h +0 -38
- amps-python-client-5.3.4.1/src/haclient.cpp +0 -691
- amps-python-client-5.3.4.1/src/haclient_docs.h +0 -132
- amps-python-client-5.3.4.1/src/hybridpublishstore.cpp +0 -137
- amps-python-client-5.3.4.1/src/hybridpublishstore_docs.h +0 -31
- amps-python-client-5.3.4.1/src/memorybookmarkstore.cpp +0 -373
- amps-python-client-5.3.4.1/src/memorybookmarkstore_docs.h +0 -39
- amps-python-client-5.3.4.1/src/memorypublishstore.cpp +0 -160
- amps-python-client-5.3.4.1/src/memorypublishstore_docs.h +0 -32
- amps-python-client-5.3.4.1/src/message.cpp +0 -765
- amps-python-client-5.3.4.1/src/message_docs.h +0 -306
- amps-python-client-5.3.4.1/src/messagestream.cpp +0 -623
- amps-python-client-5.3.4.1/src/messagestream_docs.h +0 -45
- amps-python-client-5.3.4.1/src/mmapbookmarkstore.cpp +0 -422
- amps-python-client-5.3.4.1/src/nvfixbuilder.cpp +0 -160
- amps-python-client-5.3.4.1/src/nvfixbuilder_docs.h +0 -33
- amps-python-client-5.3.4.1/src/nvfixshredder.cpp +0 -99
- amps-python-client-5.3.4.1/src/nvfixshredder_docs.h +0 -39
- amps-python-client-5.3.4.1/src/publishstore.cpp +0 -183
- amps-python-client-5.3.4.1/src/raw_wrapper.cpp +0 -756
- amps-python-client-5.3.4.1/src/reason.cpp +0 -71
- amps-python-client-5.3.4.1/src/recoverypoint.cpp +0 -135
- amps-python-client-5.3.4.1/src/recoverypointadapter.cpp +0 -171
- amps-python-client-5.3.4.1/src/ringbookmarkstore.cpp +0 -360
- amps-python-client-5.3.4.1/src/serverchooser.cpp +0 -245
- amps-python-client-5.3.4.1/src/serverchooser_docs.h +0 -39
- amps-python-client-5.3.4.1/src/sowrecoverypointadapter.cpp +0 -248
- amps-python-client-5.3.4.1/src/store.cpp +0 -62
- amps-python-client-5.3.4.1/src/versioninfo.cpp +0 -175
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/HISTORY +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/README.md +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/command-reference/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_sources/code.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/classic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/default.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/sidebar.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/caution.png +0 -0
- {amps-python-client-5.3.4.1/docs/command-reference → amps-python-client-5.3.4.3/docs/python}/html/_images/caution.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/connection_string.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/important.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/important.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/tip.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/tip.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_images/warning.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_sources/chapters/cpp-compiler-list.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_sources/chapters/crankitup.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_sources/chapters/equipment.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/python-quickstart/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/resources/custom.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/resources/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_sources/chapters/spark.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/docs/user-guide/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/src/cpp/include/amps/amps_generated.h +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/src/cpp/src/amps_protocol_generated.h +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.3}/src/cpp/src/makefile +0 -0
|
@@ -1,1280 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
2
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
6
|
-
<head>
|
|
7
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
8
|
-
|
|
9
|
-
<title>16. Message Types — AMPS User Guide develop documentation</title>
|
|
10
|
-
|
|
11
|
-
<link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
|
|
12
|
-
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
|
13
|
-
|
|
14
|
-
<script type="text/javascript">
|
|
15
|
-
var DOCUMENTATION_OPTIONS = {
|
|
16
|
-
URL_ROOT: '../',
|
|
17
|
-
VERSION: 'develop',
|
|
18
|
-
COLLAPSE_INDEX: false,
|
|
19
|
-
FILE_SUFFIX: '.html',
|
|
20
|
-
HAS_SOURCE: true,
|
|
21
|
-
SOURCELINK_SUFFIX: '.txt'
|
|
22
|
-
};
|
|
23
|
-
</script>
|
|
24
|
-
<script type="text/javascript" src="../_static/jquery.js"></script>
|
|
25
|
-
<script type="text/javascript" src="../_static/underscore.js"></script>
|
|
26
|
-
<script type="text/javascript" src="../_static/doctools.js"></script>
|
|
27
|
-
<link rel="index" title="Index" href="../genindex.html" />
|
|
28
|
-
<link rel="search" title="Search" href="../search.html" />
|
|
29
|
-
<link rel="next" title="17. Command Acknowledgment" href="acks.html" />
|
|
30
|
-
<link rel="prev" title="15. Message Queues" href="queues.html" />
|
|
31
|
-
|
|
32
|
-
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
|
36
|
-
|
|
37
|
-
</head>
|
|
38
|
-
<body role="document">
|
|
39
|
-
<div class="document">
|
|
40
|
-
|
|
41
|
-
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
42
|
-
<div class="sphinxsidebarwrapper">
|
|
43
|
-
<p class="logo"><a href="../index.html">
|
|
44
|
-
<img class="logo" src="../_static/flag_logo.png" alt="Logo"/>
|
|
45
|
-
</a></p>
|
|
46
|
-
<h3><a href="../index.html">Table Of Contents</a></h3>
|
|
47
|
-
<ul>
|
|
48
|
-
<li><a class="reference internal" href="#">16. Message Types</a><ul>
|
|
49
|
-
<li><a class="reference internal" href="#default-message-types">Default Message Types</a></li>
|
|
50
|
-
<li><a class="reference internal" href="#bflat-messages">BFlat Messages</a><ul>
|
|
51
|
-
<li><a class="reference internal" href="#bflat-data-types">BFlat Data Types</a><ul>
|
|
52
|
-
<li><a class="reference internal" href="#representing-data-in-bflat">Representing Data in BFlat</a></li>
|
|
53
|
-
</ul>
|
|
54
|
-
</li>
|
|
55
|
-
</ul>
|
|
56
|
-
</li>
|
|
57
|
-
<li><a class="reference internal" href="#messagepack-messages">MessagePack Messages</a></li>
|
|
58
|
-
<li><a class="reference internal" href="#composite-messages">Composite Messages</a><ul>
|
|
59
|
-
<li><a class="reference internal" href="#configuring-composite-message-types">Configuring Composite Message Types</a><ul>
|
|
60
|
-
<li><a class="reference internal" href="#unparsed-payload-section">Unparsed Payload Section</a></li>
|
|
61
|
-
</ul>
|
|
62
|
-
</li>
|
|
63
|
-
<li><a class="reference internal" href="#content-filtering-with-composite-message-types">Content Filtering with Composite Message Types</a><ul>
|
|
64
|
-
<li><a class="reference internal" href="#composite-global">composite-global</a></li>
|
|
65
|
-
<li><a class="reference internal" href="#composite-local">composite-local</a></li>
|
|
66
|
-
</ul>
|
|
67
|
-
</li>
|
|
68
|
-
<li><a class="reference internal" href="#choosing-a-composite-type">Choosing a Composite Type</a></li>
|
|
69
|
-
</ul>
|
|
70
|
-
</li>
|
|
71
|
-
<li><a class="reference internal" href="#protobuf-message-types">Protobuf Message Types</a><ul>
|
|
72
|
-
<li><a class="reference internal" href="#configuring-protobuf-message-types">Configuring Protobuf Message Types</a></li>
|
|
73
|
-
<li><a class="reference internal" href="#filtering-with-protobuf-messages">Filtering with Protobuf Messages</a></li>
|
|
74
|
-
<li><a class="reference internal" href="#working-with-multiple-protocol-buffer-types">Working with Multiple Protocol Buffer Types</a></li>
|
|
75
|
-
<li><a class="reference internal" href="#union-types">Union Types</a></li>
|
|
76
|
-
<li><a class="reference internal" href="#limitations-of-the-protobuf-message-type">Limitations of the Protobuf Message Type</a></li>
|
|
77
|
-
<li><a class="reference internal" href="#working-with-optional-default-values">Working with Optional Default Values</a></li>
|
|
78
|
-
</ul>
|
|
79
|
-
</li>
|
|
80
|
-
<li><a class="reference internal" href="#struct-message-types">Struct Message Types</a><ul>
|
|
81
|
-
<li><a class="reference internal" href="#configuring-a-struct-message-type">Configuring a Struct Message Type</a></li>
|
|
82
|
-
<li><a class="reference internal" href="#limitations-of-struct-message-types">Limitations of Struct Message Types</a></li>
|
|
83
|
-
</ul>
|
|
84
|
-
</li>
|
|
85
|
-
<li><a class="reference internal" href="#loading-additional-message-types">Loading Additional Message Types</a></li>
|
|
86
|
-
</ul>
|
|
87
|
-
</li>
|
|
88
|
-
</ul>
|
|
89
|
-
<div class="relations">
|
|
90
|
-
<h3>Related Topics</h3>
|
|
91
|
-
<ul>
|
|
92
|
-
<li><a href="../index.html">Documentation overview</a><ul>
|
|
93
|
-
<li>Previous: <a href="queues.html" title="previous chapter">15. Message Queues</a></li>
|
|
94
|
-
<li>Next: <a href="acks.html" title="next chapter">17. Command Acknowledgment</a></li>
|
|
95
|
-
</ul></li>
|
|
96
|
-
</ul>
|
|
97
|
-
</div>
|
|
98
|
-
<div id="searchbox" style="display: none" role="search">
|
|
99
|
-
<h3>Quick search</h3>
|
|
100
|
-
<form class="search" action="../search.html" method="get">
|
|
101
|
-
<div><input type="text" name="q" /></div>
|
|
102
|
-
<div><input type="submit" value="Go" /></div>
|
|
103
|
-
<input type="hidden" name="check_keywords" value="yes" />
|
|
104
|
-
<input type="hidden" name="area" value="default" />
|
|
105
|
-
</form>
|
|
106
|
-
</div>
|
|
107
|
-
<script type="text/javascript">$('#searchbox').show(0);</script>
|
|
108
|
-
</div>
|
|
109
|
-
</div>
|
|
110
|
-
<div class="documentwrapper">
|
|
111
|
-
<div class="bodywrapper">
|
|
112
|
-
<div class="body" role="main">
|
|
113
|
-
|
|
114
|
-
<div class="section" id="message-types">
|
|
115
|
-
<span id="messagetypes"></span><span id="ug-messagetypes"></span><span id="index-0"></span><h1>16. Message Types<a class="headerlink" href="#message-types" title="Permalink to this headline">¶</a></h1>
|
|
116
|
-
<p>Message communication between the publisher and subscriber in AMPS is
|
|
117
|
-
managed through the use of message types. Message types define the data
|
|
118
|
-
contained within an AMPS message. Each topic has a specific message
|
|
119
|
-
type. Transports used for publishers and subscribers can also define
|
|
120
|
-
specific message types. For a given transport, AMPS will only process
|
|
121
|
-
messages of the type or types that the transport accepts.</p>
|
|
122
|
-
<p>When AMPS needs to use the data within a message, AMPS uses the message
|
|
123
|
-
type to parse the message into an internal representation. AMPS uses the
|
|
124
|
-
same internal representation for all message types. Likewise, if AMPS
|
|
125
|
-
needs to create a new message from a set of values (for example, for a
|
|
126
|
-
view), AMPS uses the message type to serialize that set of values into
|
|
127
|
-
the correct format. AMPS filters, commands, processing flow, and so
|
|
128
|
-
forth are the same for every message type. Message types do not change
|
|
129
|
-
how AMPS processes messages. A message type simply allows AMPS to work
|
|
130
|
-
with data of a particular format.</p>
|
|
131
|
-
<p>In some cases, a given message type cannot support all of the
|
|
132
|
-
capabilities in AMPS. For example, the unparsed <code class="docutils literal"><span class="pre">binary</span></code> message type
|
|
133
|
-
allows arbitrary payloads. This can be extremely useful, but because
|
|
134
|
-
there is no set format for that message type, none of the capabilities
|
|
135
|
-
that rely on parsing data are supported by the <code class="docutils literal"><span class="pre">binary</span></code> message type.
|
|
136
|
-
Where a message type cannot provide a specific capability to AMPS, those
|
|
137
|
-
limitations are described below.</p>
|
|
138
|
-
<p>Except where limitations are described in this section, all message
|
|
139
|
-
types provided with the AMPS server support all AMPS features. The AMPS
|
|
140
|
-
engine itself is message-type agnostic. There is no difference in
|
|
141
|
-
configuring a SOW that uses a composite type than there is configuring a
|
|
142
|
-
SOW that uses JSON, or BFlat, or Google Protocol buffers.</p>
|
|
143
|
-
<p>Message types in AMPS are implemented as plug-in modules. For more
|
|
144
|
-
information on plug-in modules, contact 60East support for access to the
|
|
145
|
-
AMPS Server SDK.</p>
|
|
146
|
-
<div class="section" id="default-message-types">
|
|
147
|
-
<h2>Default Message Types<a class="headerlink" href="#default-message-types" title="Permalink to this headline">¶</a></h2>
|
|
148
|
-
<p>AMPS automatically loads modules for the following message types:</p>
|
|
149
|
-
<table border="1" class="docutils" id="id1">
|
|
150
|
-
<caption><span class="caption-text"><em>AMPS Default Message Types</em></span><a class="headerlink" href="#id1" title="Permalink to this table">¶</a></caption>
|
|
151
|
-
<colgroup>
|
|
152
|
-
<col width="50%" />
|
|
153
|
-
<col width="50%" />
|
|
154
|
-
</colgroup>
|
|
155
|
-
<thead valign="bottom">
|
|
156
|
-
<tr class="row-odd"><th class="head">Message Type</th>
|
|
157
|
-
<th class="head">Description</th>
|
|
158
|
-
</tr>
|
|
159
|
-
</thead>
|
|
160
|
-
<tbody valign="top">
|
|
161
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">bson</span></code></td>
|
|
162
|
-
<td>Binary JSON (BSON) messages. See <a class="reference external" href="http://www.bsonspec.org">http://www.bsonspec.org</a> for information on this format.</td>
|
|
163
|
-
</tr>
|
|
164
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">bflat</span></code></td>
|
|
165
|
-
<td>BFlat, a schemaless message format based on key-value pairs that includes support for binary
|
|
166
|
-
representations of numeric data. See <a class="reference external" href="http://bflat.io">http://bflat.io</a> for information on this format.</td>
|
|
167
|
-
</tr>
|
|
168
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">fix</span></code></td>
|
|
169
|
-
<td>FIX messages using numeric tags. FIX is a standard format widely used in the financial
|
|
170
|
-
industry. See <a class="reference external" href="https://www.fixtrading.org/what-is-fix/">https://www.fixtrading.org/what-is-fix/</a> for more information on
|
|
171
|
-
this format.</td>
|
|
172
|
-
</tr>
|
|
173
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">json</span></code></td>
|
|
174
|
-
<td>JSON (JavaScript Object Notation) messages. See <a class="reference external" href="http://www.json.org">http://www.json.org</a> for information on this
|
|
175
|
-
format.</td>
|
|
176
|
-
</tr>
|
|
177
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">msgpack</span></code></td>
|
|
178
|
-
<td>MessagePack messages. MessagePack is a schemaless serialization format designed to
|
|
179
|
-
efficiently encode data. See <a class="reference external" href="http://msgpack.org/index.html">http://msgpack.org/index.html</a> for more information on
|
|
180
|
-
MessagePack.</td>
|
|
181
|
-
</tr>
|
|
182
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">nvfix</span></code></td>
|
|
183
|
-
<td>NVFIX (name/value FIX) messages. NVFIX uses the same basic format as FIX, but allows tags to
|
|
184
|
-
contain any byte that is not <code class="docutils literal"><span class="pre">=</span></code> or the configured field separator character (by default,
|
|
185
|
-
the ASCII <code class="docutils literal"><span class="pre">SOH</span></code> character.) By contrast, FIX requires that tags are numeric.</td>
|
|
186
|
-
</tr>
|
|
187
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">xml</span></code></td>
|
|
188
|
-
<td>XML messages (of any schema)</td>
|
|
189
|
-
</tr>
|
|
190
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">binary</span></code></td>
|
|
191
|
-
<td>Uninterpreted binary payload. Because this module does not attempt to parse the payload, it
|
|
192
|
-
does not support content filtering, views and aggregates. Likewise, because there is no set
|
|
193
|
-
format for the payload, this message type cannot support features that construct messages
|
|
194
|
-
(such as delta messaging, <code class="docutils literal"><span class="pre">/AMPS/.*</span></code> topic subscriptions and <code class="docutils literal"><span class="pre">stats</span></code> acks).</td>
|
|
195
|
-
</tr>
|
|
196
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">protobuf</span></code></td>
|
|
197
|
-
<td>Google protocol buffer messages. To use this message type, you must configure a
|
|
198
|
-
<code class="docutils literal"><span class="pre">MessageType</span></code> with the format of the messages (the <code class="docutils literal"><span class="pre">.proto</span></code> files).</td>
|
|
199
|
-
</tr>
|
|
200
|
-
</tbody>
|
|
201
|
-
</table>
|
|
202
|
-
<p>With these message types, AMPS automatically loads the module that
|
|
203
|
-
provides the message type. AMPS declares message types for all of the
|
|
204
|
-
above message types except for <code class="docutils literal"><span class="pre">protobuf</span></code>.</p>
|
|
205
|
-
<p id="index-1">For efficiency, AMPS only parses the content of a message if required,
|
|
206
|
-
and only to the extent required. For example, if AMPS only needs to find
|
|
207
|
-
the <code class="docutils literal"><span class="pre">id</span></code> tag in an NVFIX message, AMPS will not fully parse the
|
|
208
|
-
message, but will stop parsing the message after finding the <code class="docutils literal"><span class="pre">id</span></code> tag.
|
|
209
|
-
This provides significant performance improvements, and also means that
|
|
210
|
-
AMPS does not verify the format or validity of messages unless it needs
|
|
211
|
-
to parse the messages. When AMPS parses a message, it may only partially
|
|
212
|
-
parse a message, and may not detect corruption or invalid format in a
|
|
213
|
-
message if that corruption occurs after the point at which AMPS has all
|
|
214
|
-
of the required information from the message.</p>
|
|
215
|
-
<p>The FIX and NVFIX message types support configuration of the field and
|
|
216
|
-
message delimiters.</p>
|
|
217
|
-
<p>AMPS also allows you to create new message types by assembling existing
|
|
218
|
-
message types into a composite message. Composite message types are
|
|
219
|
-
described in <a class="reference internal" href="#ug-messagetypes-composite"><span class="std std-ref">Composite Messages</span></a>, and
|
|
220
|
-
require additional configuration:</p>
|
|
221
|
-
<table border="1" class="docutils" id="id2">
|
|
222
|
-
<caption><span class="caption-text"><em>AMPS Composite Message Types</em></span><a class="headerlink" href="#id2" title="Permalink to this table">¶</a></caption>
|
|
223
|
-
<colgroup>
|
|
224
|
-
<col width="50%" />
|
|
225
|
-
<col width="50%" />
|
|
226
|
-
</colgroup>
|
|
227
|
-
<thead valign="bottom">
|
|
228
|
-
<tr class="row-odd"><th class="head">Message Type Name</th>
|
|
229
|
-
<th class="head">Description</th>
|
|
230
|
-
</tr>
|
|
231
|
-
</thead>
|
|
232
|
-
<tbody valign="top">
|
|
233
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">composite-global</span></code></td>
|
|
234
|
-
<td>Composite message type that combines message parts for content filtering. This
|
|
235
|
-
message type combines one or more existing message types into a message. This
|
|
236
|
-
type is described in more detail in
|
|
237
|
-
<a class="reference internal" href="#ug-messagetypes-composite"><span class="std std-ref">Composite Messages</span></a>.</td>
|
|
238
|
-
</tr>
|
|
239
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">composite-local</span></code></td>
|
|
240
|
-
<td>Composite message type, filterable by individual parts. This message type
|
|
241
|
-
combines one or more existing message types into a message. This type is
|
|
242
|
-
described in more detail in
|
|
243
|
-
<a class="reference internal" href="#ug-messagetypes-composite"><span class="std std-ref">Composite Messages</span></a>.</td>
|
|
244
|
-
</tr>
|
|
245
|
-
</tbody>
|
|
246
|
-
</table>
|
|
247
|
-
</div>
|
|
248
|
-
<div class="section" id="bflat-messages">
|
|
249
|
-
<span id="index-2"></span><h2>BFlat Messages<a class="headerlink" href="#bflat-messages" title="Permalink to this headline">¶</a></h2>
|
|
250
|
-
<p>The BFlat message format combines the simplicity and efficiency of
|
|
251
|
-
simple, schemaless data formats such as FIX and NVFIX with the ability
|
|
252
|
-
to manage binary data and preserve the full precision of numeric values.
|
|
253
|
-
BFlat is especially useful for applications that deal with binary data
|
|
254
|
-
or precise numeric values while demanding high levels of throughput.</p>
|
|
255
|
-
<p>A BFlat message is composed of any number of tag/value pairs, similar to
|
|
256
|
-
FIX and NVFIX messages. Tags and values can contain any value and can
|
|
257
|
-
be of any length. Unlike formats such as FIX, there are no reserved
|
|
258
|
-
characters. In practical terms, the name of a tag must be a valid XPath
|
|
259
|
-
identifier to filter the message in AMPS. However, this is a limitation
|
|
260
|
-
of XPath and not of the BFlat message format.</p>
|
|
261
|
-
<p>The BFlat message type supports all AMPS features and there are no
|
|
262
|
-
special considerations when using the BFlat message type.</p>
|
|
263
|
-
<p>Open-source libraries for producing and parsing BFlat messages are available
|
|
264
|
-
from the <a class="reference external" href="http://bflat.io">BFlat project</a> site.</p>
|
|
265
|
-
<div class="section" id="bflat-data-types">
|
|
266
|
-
<h3>BFlat Data Types<a class="headerlink" href="#bflat-data-types" title="Permalink to this headline">¶</a></h3>
|
|
267
|
-
<p>BFlat messages are strongly typed. For numeric values, BFlat can preserve
|
|
268
|
-
the precise value of the following numeric types:</p>
|
|
269
|
-
<table border="1" class="colwidths-given docutils" id="id3">
|
|
270
|
-
<caption><span class="caption-text"><em>BFlat Numeric Types</em></span><a class="headerlink" href="#id3" title="Permalink to this table">¶</a></caption>
|
|
271
|
-
<colgroup>
|
|
272
|
-
<col width="25%" />
|
|
273
|
-
<col width="75%" />
|
|
274
|
-
</colgroup>
|
|
275
|
-
<thead valign="bottom">
|
|
276
|
-
<tr class="row-odd"><th class="head">Type</th>
|
|
277
|
-
<th class="head">Description</th>
|
|
278
|
-
</tr>
|
|
279
|
-
</thead>
|
|
280
|
-
<tbody valign="top">
|
|
281
|
-
<tr class="row-even"><td>int8</td>
|
|
282
|
-
<td>8-bit integer</td>
|
|
283
|
-
</tr>
|
|
284
|
-
<tr class="row-odd"><td>int16</td>
|
|
285
|
-
<td>16-bit integer</td>
|
|
286
|
-
</tr>
|
|
287
|
-
<tr class="row-even"><td>int32</td>
|
|
288
|
-
<td>32-bit integer</td>
|
|
289
|
-
</tr>
|
|
290
|
-
<tr class="row-odd"><td>int64</td>
|
|
291
|
-
<td>64-bit integer</td>
|
|
292
|
-
</tr>
|
|
293
|
-
<tr class="row-even"><td>double</td>
|
|
294
|
-
<td>64-bit IEEE 754 floating point
|
|
295
|
-
number</td>
|
|
296
|
-
</tr>
|
|
297
|
-
<tr class="row-odd"><td>datetime</td>
|
|
298
|
-
<td>UTC datetime containing milliseconds
|
|
299
|
-
since Unix epoch (64-bit
|
|
300
|
-
representation)</td>
|
|
301
|
-
</tr>
|
|
302
|
-
<tr class="row-even"><td>leb128</td>
|
|
303
|
-
<td>Signed LEB128 integer (variable
|
|
304
|
-
length)</td>
|
|
305
|
-
</tr>
|
|
306
|
-
</tbody>
|
|
307
|
-
</table>
|
|
308
|
-
<p>BFlat also includes the following non-numeric types:</p>
|
|
309
|
-
<table border="1" class="colwidths-given docutils" id="id4">
|
|
310
|
-
<caption><span class="caption-text"><em>BFlat non-numeric Types</em></span><a class="headerlink" href="#id4" title="Permalink to this table">¶</a></caption>
|
|
311
|
-
<colgroup>
|
|
312
|
-
<col width="25%" />
|
|
313
|
-
<col width="75%" />
|
|
314
|
-
</colgroup>
|
|
315
|
-
<thead valign="bottom">
|
|
316
|
-
<tr class="row-odd"><th class="head">Type</th>
|
|
317
|
-
<th class="head">Description</th>
|
|
318
|
-
</tr>
|
|
319
|
-
</thead>
|
|
320
|
-
<tbody valign="top">
|
|
321
|
-
<tr class="row-even"><td>null</td>
|
|
322
|
-
<td>Empty field</td>
|
|
323
|
-
</tr>
|
|
324
|
-
<tr class="row-odd"><td>string</td>
|
|
325
|
-
<td><p class="first">String of bytes</p>
|
|
326
|
-
<p class="last">BFlat does not specify the encoding
|
|
327
|
-
of a string; this is up to the
|
|
328
|
-
application to determine.</p>
|
|
329
|
-
</td>
|
|
330
|
-
</tr>
|
|
331
|
-
<tr class="row-even"><td>binary</td>
|
|
332
|
-
<td>Untyped sequence of bytes</td>
|
|
333
|
-
</tr>
|
|
334
|
-
</tbody>
|
|
335
|
-
</table>
|
|
336
|
-
<p>BFlat includes the ability to represent arrays of values.</p>
|
|
337
|
-
<div class="section" id="representing-data-in-bflat">
|
|
338
|
-
<h4>Representing Data in BFlat<a class="headerlink" href="#representing-data-in-bflat" title="Permalink to this headline">¶</a></h4>
|
|
339
|
-
<p>By convention, BFlat serializers should choose the most compact representation of a
|
|
340
|
-
given value. For example, if an integer value can fit into 8 bits, it should be
|
|
341
|
-
serialized as a value of type <code class="docutils literal"><span class="pre">int8</span></code>. An application that parses BFlat should
|
|
342
|
-
assume that a serializer may use different types for values in the same field,
|
|
343
|
-
to optimize for a compact representation, and should not rely on a value being
|
|
344
|
-
of a specific type.</p>
|
|
345
|
-
<p>For example, a <code class="docutils literal"><span class="pre">TotalValue</span></code> field that can have any integer value could
|
|
346
|
-
be serialized with a type of <code class="docutils literal"><span class="pre">int8</span></code> for values that fit in 8 bits, but could
|
|
347
|
-
be serialized with a integer type that includes more bits if the value is larger,
|
|
348
|
-
and could be serialized with the <code class="docutils literal"><span class="pre">leb128</span></code> type for integer values that cannot
|
|
349
|
-
be represented in 64 bits.</p>
|
|
350
|
-
<p>When the AMPS server must serialize a BFlat message (for example, when projecting
|
|
351
|
-
a view or as a result of enrichment), AMPS tries to optimize for the most compact message size,
|
|
352
|
-
which could change the representation if the serializer did not choose the most
|
|
353
|
-
compact type for a value.</p>
|
|
354
|
-
</div>
|
|
355
|
-
</div>
|
|
356
|
-
</div>
|
|
357
|
-
<div class="section" id="messagepack-messages">
|
|
358
|
-
<span id="index-3"></span><h2>MessagePack Messages<a class="headerlink" href="#messagepack-messages" title="Permalink to this headline">¶</a></h2>
|
|
359
|
-
<p>AMPS fully supports MessagePack messages, with the following
|
|
360
|
-
implementation decisions to represent MessagePack messages in
|
|
361
|
-
the AMPS type system. See <a class="reference internal" href="amps_expressions.html#ug-expressions-data-types"><span class="std std-ref">AMPS Data Types</span></a> for
|
|
362
|
-
information on the AMPS data types. Notice, in particular, that
|
|
363
|
-
the AMPS expression language supports automatic type conversion,
|
|
364
|
-
so while this table shows the default AMPS representation for
|
|
365
|
-
a given MessagePack type, AMPS will convert a value as needed
|
|
366
|
-
once the message has been parsed.</p>
|
|
367
|
-
<table border="1" class="docutils" id="id5">
|
|
368
|
-
<caption><span class="caption-text"><em>MessagePack Types and AMPS Types</em></span><a class="headerlink" href="#id5" title="Permalink to this table">¶</a></caption>
|
|
369
|
-
<colgroup>
|
|
370
|
-
<col width="50%" />
|
|
371
|
-
<col width="50%" />
|
|
372
|
-
</colgroup>
|
|
373
|
-
<thead valign="bottom">
|
|
374
|
-
<tr class="row-odd"><th class="head">MessagePack Type</th>
|
|
375
|
-
<th class="head">AMPS Representation</th>
|
|
376
|
-
</tr>
|
|
377
|
-
</thead>
|
|
378
|
-
<tbody valign="top">
|
|
379
|
-
<tr class="row-even"><td>nil</td>
|
|
380
|
-
<td>NULL</td>
|
|
381
|
-
</tr>
|
|
382
|
-
<tr class="row-odd"><td>bool</td>
|
|
383
|
-
<td>Boolean</td>
|
|
384
|
-
</tr>
|
|
385
|
-
<tr class="row-even"><td>int (all widths)</td>
|
|
386
|
-
<td>Integer</td>
|
|
387
|
-
</tr>
|
|
388
|
-
<tr class="row-odd"><td>float (all widths)</td>
|
|
389
|
-
<td>Float</td>
|
|
390
|
-
</tr>
|
|
391
|
-
<tr class="row-even"><td>str (all widths)</td>
|
|
392
|
-
<td>String</td>
|
|
393
|
-
</tr>
|
|
394
|
-
<tr class="row-odd"><td>bin (all widths)</td>
|
|
395
|
-
<td>String</td>
|
|
396
|
-
</tr>
|
|
397
|
-
<tr class="row-even"><td>array (all widths)</td>
|
|
398
|
-
<td>array of AMPS values</td>
|
|
399
|
-
</tr>
|
|
400
|
-
<tr class="row-odd"><td>map (all widths)</td>
|
|
401
|
-
<td>nested AMPS values</td>
|
|
402
|
-
</tr>
|
|
403
|
-
<tr class="row-even"><td>ext (all widths)</td>
|
|
404
|
-
<td>String</td>
|
|
405
|
-
</tr>
|
|
406
|
-
</tbody>
|
|
407
|
-
</table>
|
|
408
|
-
<p>Notice that AMPS does not attempt to interpret extension types, and instead
|
|
409
|
-
represents them as arrays of bytes (a String in the AMPS type system).</p>
|
|
410
|
-
</div>
|
|
411
|
-
<div class="section" id="composite-messages">
|
|
412
|
-
<span id="ug-messagetypes-composite"></span><h2>Composite Messages<a class="headerlink" href="#composite-messages" title="Permalink to this headline">¶</a></h2>
|
|
413
|
-
<p>Sometimes, applications only need to filter on a small subset of the
|
|
414
|
-
fields in a message. Sometimes applications need to send and receive
|
|
415
|
-
messages that cannot be meaningfully parsed by AMPS, such as images or
|
|
416
|
-
audio files. For these cases, AMPS provides a composite message type
|
|
417
|
-
that lets you create a new message type by combining existing message
|
|
418
|
-
types.</p>
|
|
419
|
-
<p>For example, you might create a message type that includes three parts:
|
|
420
|
-
the metadata for an image as a <code class="docutils literal"><span class="pre">json</span></code> document, a small JPG thumbnail
|
|
421
|
-
as a <code class="docutils literal"><span class="pre">binary</span></code> message part, and a full size PNG image as another
|
|
422
|
-
<code class="docutils literal"><span class="pre">binary</span></code> message part.</p>
|
|
423
|
-
<p>Composite messages can also be useful when the message itself is large
|
|
424
|
-
or resource-intensive to parse. In this case, you can create a message
|
|
425
|
-
type that includes the information needed to filter messages in a JSON
|
|
426
|
-
or NVFIX part, and include the full message in the unparsed payload of
|
|
427
|
-
the composite message, as described below.</p>
|
|
428
|
-
<p>AMPS provides two different types of composite messages. Messages
|
|
429
|
-
created using the <code class="docutils literal"><span class="pre">composite-local</span></code> module preserve information about
|
|
430
|
-
the individual parts for filtering, aggregation, and projection.
|
|
431
|
-
Messages created using the <code class="docutils literal"><span class="pre">composite-global</span></code> module treat the
|
|
432
|
-
individual parts as elements of a single document.</p>
|
|
433
|
-
<div class="section" id="configuring-composite-message-types">
|
|
434
|
-
<span id="index-4"></span><h3>Configuring Composite Message Types<a class="headerlink" href="#configuring-composite-message-types" title="Permalink to this headline">¶</a></h3>
|
|
435
|
-
<p>To use a composite message type, you must first configure the type by
|
|
436
|
-
declaring it in the <code class="docutils literal"><span class="pre">MessageTypes</span></code> section of the AMPS configuration
|
|
437
|
-
file. The declaration contains the name of the new composite message
|
|
438
|
-
type, specifies that the new type is composite, and lists the parts of
|
|
439
|
-
the composite message type.</p>
|
|
440
|
-
<p>For example, the <code class="docutils literal"><span class="pre">MessageType</span></code> element below declares a new composite
|
|
441
|
-
message type named <code class="docutils literal"><span class="pre">images</span></code>. The new type contains a <code class="docutils literal"><span class="pre">json</span></code> document
|
|
442
|
-
at the beginning of the message, followed by two uninterpreted binary
|
|
443
|
-
message parts. AMPS will combine the XPath identifiers for all message
|
|
444
|
-
parts into a single set of identifiers. Notice that, because only one
|
|
445
|
-
part of the message type is parsable, using <code class="docutils literal"><span class="pre">composite-global</span></code>
|
|
446
|
-
simplifies the identifiers for the message.</p>
|
|
447
|
-
<div class="highlight-xml"><div class="highlight"><pre><span></span><span class="nt"><MessageTypes></span>
|
|
448
|
-
...
|
|
449
|
-
|
|
450
|
-
<span class="nt"><MessageType></span>
|
|
451
|
-
<span class="nt"><Name></span>images<span class="nt"></Name></span>
|
|
452
|
-
<span class="nt"><Module></span>composite-global<span class="nt"></Module></span>
|
|
453
|
-
<span class="nt"><MessageType></span>json<span class="nt"></MessageType></span>
|
|
454
|
-
<span class="nt"><MessageType></span>binary<span class="nt"></MessageType></span>
|
|
455
|
-
<span class="nt"><MessageType></span>binary<span class="nt"></MessageType></span>
|
|
456
|
-
<span class="nt"></MessageType></span>
|
|
457
|
-
|
|
458
|
-
...
|
|
459
|
-
|
|
460
|
-
<span class="nt"></MessageTypes></span>
|
|
461
|
-
</pre></div>
|
|
462
|
-
</div>
|
|
463
|
-
<p>The <code class="docutils literal"><span class="pre">MessageType</span></code> entries for the composite message can be any AMPS
|
|
464
|
-
message type, including both the built-in types and any previously
|
|
465
|
-
defined message type.</p>
|
|
466
|
-
<p>Once the new composite message type is created, you can use the new type
|
|
467
|
-
in the configuration file.</p>
|
|
468
|
-
<p>Composite message types have the following restrictions:</p>
|
|
469
|
-
<ul class="simple">
|
|
470
|
-
<li>Delta subscribe and delta publish are not supported for message types
|
|
471
|
-
that use <code class="docutils literal"><span class="pre">composite-global</span></code>.</li>
|
|
472
|
-
<li>Views, joins, and aggregation cannot project message types that use
|
|
473
|
-
<code class="docutils literal"><span class="pre">composite-global</span></code>. (However, composite message types that use
|
|
474
|
-
<code class="docutils literal"><span class="pre">composite-global</span></code> <em>can</em> be an <code class="docutils literal"><span class="pre">UnderlyingTopic</span></code> or one of the
|
|
475
|
-
topics in a <code class="docutils literal"><span class="pre">Join</span></code>.)</li>
|
|
476
|
-
<li>Composite message types do not support features that automatically
|
|
477
|
-
construct messages, such as subscriptions to the <code class="docutils literal"><span class="pre">AMPS/.*</span></code> topics and
|
|
478
|
-
stats acks, regardless of the module the type uses.</li>
|
|
479
|
-
</ul>
|
|
480
|
-
<div class="section" id="unparsed-payload-section">
|
|
481
|
-
<h4>Unparsed Payload Section<a class="headerlink" href="#unparsed-payload-section" title="Permalink to this headline">¶</a></h4>
|
|
482
|
-
<p>All composite message types, regardless of how they are defined, provide
|
|
483
|
-
an <em>unparsed payload</em> section. The unparsed payload section does not
|
|
484
|
-
need to be declared in the <code class="docutils literal"><span class="pre">MessageType</span></code> declaration. As the name
|
|
485
|
-
suggests, AMPS does not parse or interpret this section, so the unparsed
|
|
486
|
-
payload can contain any content of any type. In an AMPS client,
|
|
487
|
-
the unparsed payload section is represented as bytes that appear
|
|
488
|
-
at the end of the message, after the last defined part.</p>
|
|
489
|
-
<p>The unparsed payload is included to simplify the common technique where
|
|
490
|
-
a message type contains a header that is used for filtering followed by
|
|
491
|
-
an unparsed binary. If your composite message type contains a single
|
|
492
|
-
binary part, consider using the unparsed payload section in your
|
|
493
|
-
application rather than declaring a binary message part. Notice,
|
|
494
|
-
however, that since AMPS does not parse or interpret this section,
|
|
495
|
-
it may not appear in serialized representations of the message
|
|
496
|
-
(for example, log messages, Galvanometer display, and so on).</p>
|
|
497
|
-
</div>
|
|
498
|
-
</div>
|
|
499
|
-
<div class="section" id="content-filtering-with-composite-message-types">
|
|
500
|
-
<h3>Content Filtering with Composite Message Types<a class="headerlink" href="#content-filtering-with-composite-message-types" title="Permalink to this headline">¶</a></h3>
|
|
501
|
-
<p>Composite message types support filtering on the contents of the
|
|
502
|
-
composite message. There are some simple conventions to remember when
|
|
503
|
-
constructing expressions to filter on. For more details about content
|
|
504
|
-
filtering, see <a class="reference internal" href="pub_sub.html#pub-sub-content"><span class="std std-ref">Filtering Subscriptions by Content</span></a>.</p>
|
|
505
|
-
<p>These conventions are consistent anywhere that AMPS needs to find a
|
|
506
|
-
value within the composite message type. That includes content filters
|
|
507
|
-
for client subscriptions, identifying SOW keys, creating views and
|
|
508
|
-
aggregates, creating conflated topics, and so on.</p>
|
|
509
|
-
<div class="section" id="composite-global">
|
|
510
|
-
<h4>composite-global<a class="headerlink" href="#composite-global" title="Permalink to this headline">¶</a></h4>
|
|
511
|
-
<p>When using the <code class="docutils literal"><span class="pre">composite-global</span></code> message type, AMPS combines all
|
|
512
|
-
parts of the message into a unified set of XPath identifiers. AMPS
|
|
513
|
-
creates the set of identifiers for each part of the message. If
|
|
514
|
-
different parts of the message contain the same identifier, AMPS treats
|
|
515
|
-
that identifier as though the identifier contained an array of values:
|
|
516
|
-
AMPS creates an array that contains all of the values in the different
|
|
517
|
-
parts of the message. Message types that do not support content
|
|
518
|
-
filtering do not provide XPath identifiers.</p>
|
|
519
|
-
<p>For example, consider the message below for a <code class="docutils literal"><span class="pre">composite-global</span></code>
|
|
520
|
-
message type that includes two <code class="docutils literal"><span class="pre">json</span></code> parts and a <code class="docutils literal"><span class="pre">binary</span></code> part:</p>
|
|
521
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">{</span><span class="s2">"id"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">"data"</span><span class="p">:</span><span class="s2">"sample"</span><span class="p">,</span><span class="s2">"message"</span><span class="p">:</span><span class="s2">"part one message"</span><span class="p">}</span>
|
|
522
|
-
<span class="p">{</span><span class="s2">"message"</span><span class="p">:</span><span class="s2">"another part"</span><span class="p">,</span><span class="s2">"customer"</span><span class="p">:</span><span class="s2">"Awesome Amalgamated, Ltd."</span><span class="p">}</span>
|
|
523
|
-
<span class="mh">0xDEEA0934DF23A37780934</span><span class="o">...</span>
|
|
524
|
-
</pre></div>
|
|
525
|
-
</div>
|
|
526
|
-
<p>AMPS constructs the following set of XPath identifiers and values:</p>
|
|
527
|
-
<table border="1" class="docutils" id="id6">
|
|
528
|
-
<caption><span class="caption-text"><em>Composite-global Message Identifiers</em></span><a class="headerlink" href="#id6" title="Permalink to this table">¶</a></caption>
|
|
529
|
-
<colgroup>
|
|
530
|
-
<col width="50%" />
|
|
531
|
-
<col width="50%" />
|
|
532
|
-
</colgroup>
|
|
533
|
-
<thead valign="bottom">
|
|
534
|
-
<tr class="row-odd"><th class="head">Identifier</th>
|
|
535
|
-
<th class="head">Value</th>
|
|
536
|
-
</tr>
|
|
537
|
-
</thead>
|
|
538
|
-
<tbody valign="top">
|
|
539
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/id</span></code></td>
|
|
540
|
-
<td><code class="docutils literal"><span class="pre">1</span></code></td>
|
|
541
|
-
</tr>
|
|
542
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/data</span></code></td>
|
|
543
|
-
<td><code class="docutils literal"><span class="pre">"sample"</span></code></td>
|
|
544
|
-
</tr>
|
|
545
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/message</span></code></td>
|
|
546
|
-
<td><code class="docutils literal"><span class="pre">["part</span> <span class="pre">one</span> <span class="pre">message",</span> <span class="pre">"another</span> <span class="pre">part"]</span></code></td>
|
|
547
|
-
</tr>
|
|
548
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/customer</span></code></td>
|
|
549
|
-
<td><code class="docutils literal"><span class="pre">"Awesome</span> <span class="pre">Amalgamated,</span> <span class="pre">Ltd."</span></code></td>
|
|
550
|
-
</tr>
|
|
551
|
-
</tbody>
|
|
552
|
-
</table>
|
|
553
|
-
<p>In short, when using <code class="docutils literal"><span class="pre">composite-global</span></code>, AMPS combines the parsable
|
|
554
|
-
parts of the message into a single global set of XPath values, and
|
|
555
|
-
ignores any part of the message that cannot be parsed.</p>
|
|
556
|
-
</div>
|
|
557
|
-
<div class="section" id="composite-local">
|
|
558
|
-
<h4>composite-local<a class="headerlink" href="#composite-local" title="Permalink to this headline">¶</a></h4>
|
|
559
|
-
<p>When using the <code class="docutils literal"><span class="pre">composite-local</span></code> message type, AMPS creates a distinct
|
|
560
|
-
set of XPath identifiers for each part of the message. AMPS adds an
|
|
561
|
-
XPath step with the position of the message part at the beginning of the
|
|
562
|
-
identifier. Message types that do not support content filtering do not
|
|
563
|
-
provide XPath identifiers, and AMPS skips over them.</p>
|
|
564
|
-
<p>For example, consider the message below for a <code class="docutils literal"><span class="pre">composite-local</span></code>
|
|
565
|
-
message type that includes two <code class="docutils literal"><span class="pre">json</span></code> parts and a <code class="docutils literal"><span class="pre">binary</span></code> part:</p>
|
|
566
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">{</span><span class="s2">"id"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">"data"</span><span class="p">:</span><span class="s2">"sample"</span><span class="p">,</span><span class="s2">"message"</span><span class="p">:</span><span class="s2">"part one message"</span><span class="p">}</span>
|
|
567
|
-
<span class="p">{</span><span class="s2">"message"</span><span class="p">:</span><span class="s2">"another part"</span><span class="p">,</span><span class="s2">"customer"</span><span class="p">:</span><span class="s2">"Awesome Amalgamated, Ltd."</span><span class="p">}</span>
|
|
568
|
-
<span class="mh">0xDEEA0934DF23A37780934</span><span class="o">...</span>
|
|
569
|
-
</pre></div>
|
|
570
|
-
</div>
|
|
571
|
-
<p>AMPS constructs the following set of XPath identifiers and values:</p>
|
|
572
|
-
<table border="1" class="docutils" id="id7">
|
|
573
|
-
<caption><span class="caption-text"><em>Composite-local Message Identifiers</em></span><a class="headerlink" href="#id7" title="Permalink to this table">¶</a></caption>
|
|
574
|
-
<colgroup>
|
|
575
|
-
<col width="50%" />
|
|
576
|
-
<col width="50%" />
|
|
577
|
-
</colgroup>
|
|
578
|
-
<thead valign="bottom">
|
|
579
|
-
<tr class="row-odd"><th class="head">Identifier</th>
|
|
580
|
-
<th class="head">Value</th>
|
|
581
|
-
</tr>
|
|
582
|
-
</thead>
|
|
583
|
-
<tbody valign="top">
|
|
584
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/0/id</span></code></td>
|
|
585
|
-
<td><code class="docutils literal"><span class="pre">1</span></code></td>
|
|
586
|
-
</tr>
|
|
587
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/0/data</span></code></td>
|
|
588
|
-
<td><code class="docutils literal"><span class="pre">"sample"</span></code></td>
|
|
589
|
-
</tr>
|
|
590
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/0/message</span></code></td>
|
|
591
|
-
<td><code class="docutils literal"><span class="pre">"part</span> <span class="pre">one</span> <span class="pre">message"</span></code></td>
|
|
592
|
-
</tr>
|
|
593
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/1/message</span></code></td>
|
|
594
|
-
<td><code class="docutils literal"><span class="pre">"another</span> <span class="pre">part"</span></code></td>
|
|
595
|
-
</tr>
|
|
596
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/1/customer</span></code></td>
|
|
597
|
-
<td><code class="docutils literal"><span class="pre">"Awesome</span> <span class="pre">Amalgamated,</span> <span class="pre">Ltd."</span></code></td>
|
|
598
|
-
</tr>
|
|
599
|
-
</tbody>
|
|
600
|
-
</table>
|
|
601
|
-
<p>In short, when using <code class="docutils literal"><span class="pre">composite-local</span></code>, AMPS creates XPath identifiers
|
|
602
|
-
for each part of the message, using the position of the message part
|
|
603
|
-
within the composite as the first part of the identifier. AMPS skips
|
|
604
|
-
over any part of the message that cannot be parsed, and simply produces
|
|
605
|
-
no values for that part of the message.</p>
|
|
606
|
-
</div>
|
|
607
|
-
</div>
|
|
608
|
-
<div class="section" id="choosing-a-composite-type">
|
|
609
|
-
<h3>Choosing a Composite Type<a class="headerlink" href="#choosing-a-composite-type" title="Permalink to this headline">¶</a></h3>
|
|
610
|
-
<p>To choose which composite type best fits your application, consider the
|
|
611
|
-
following factors:</p>
|
|
612
|
-
<ul class="simple">
|
|
613
|
-
<li>If you need to use delta messaging with this message type, use
|
|
614
|
-
<code class="docutils literal"><span class="pre">composite-local</span></code>.</li>
|
|
615
|
-
<li>If there may be redundant field names in the parts of the message,
|
|
616
|
-
and it is important to be able to filter based on which part contains
|
|
617
|
-
the field, use <code class="docutils literal"><span class="pre">composite-local</span></code>.</li>
|
|
618
|
-
<li>If you need to be able to create views of this type, use
|
|
619
|
-
<code class="docutils literal"><span class="pre">composite-local</span></code>.</li>
|
|
620
|
-
</ul>
|
|
621
|
-
<p>Otherwise, <code class="docutils literal"><span class="pre">composite-global</span></code> may be easier and more straightforward
|
|
622
|
-
for client filtering, since clients do not need to know the detailed
|
|
623
|
-
structure of the message type to be able to filter on the message.</p>
|
|
624
|
-
</div>
|
|
625
|
-
</div>
|
|
626
|
-
<div class="section" id="protobuf-message-types">
|
|
627
|
-
<h2>Protobuf Message Types<a class="headerlink" href="#protobuf-message-types" title="Permalink to this headline">¶</a></h2>
|
|
628
|
-
<p>Protocol buffers, or protobufs for short, is an efficient, automated
|
|
629
|
-
mechanism for serializing structured data. AMPS supports Google protobuf
|
|
630
|
-
messages (version 2 and version 3) as a message format.</p>
|
|
631
|
-
<p>Since Google protocol buffers use a fixed format for messages, to use
|
|
632
|
-
protobuf, you must configure AMPS with the definition of the messages
|
|
633
|
-
AMPS will process. This involves defining a <code class="docutils literal"><span class="pre">MessageType</span></code>. You must
|
|
634
|
-
define a <code class="docutils literal"><span class="pre">MessageType</span></code> for AMPS to be able to parse protobuf messages.</p>
|
|
635
|
-
<p>60East recommends that the <code class="docutils literal"><span class="pre">.proto</span></code> files used with AMPS explicitly
|
|
636
|
-
declare the protocol buffer syntax version used. If there is no explicit
|
|
637
|
-
declaration, AMPS assumes the file uses protocol buffer 2 syntax.</p>
|
|
638
|
-
<p>The AMPS engine is message-type agnostic. Except for the limitations
|
|
639
|
-
described in this section, there is no difference to the AMPS engine
|
|
640
|
-
between message types that use protocol buffers and other message types
|
|
641
|
-
such as JSON or XML or FIX.</p>
|
|
642
|
-
<div class="section" id="configuring-protobuf-message-types">
|
|
643
|
-
<h3>Configuring Protobuf Message Types<a class="headerlink" href="#configuring-protobuf-message-types" title="Permalink to this headline">¶</a></h3>
|
|
644
|
-
<p>To use a protobuf message, you must first edit the configuration file to
|
|
645
|
-
include a new <code class="docutils literal"><span class="pre">MessageType</span></code>. Then, specify the path to the protobuf
|
|
646
|
-
file and the name of the protobuf file itself inside the
|
|
647
|
-
<code class="docutils literal"><span class="pre">MessageType</span></code>. Below is a sample configuration of a protobuf message
|
|
648
|
-
type:</p>
|
|
649
|
-
<div class="highlight-xml"><div class="highlight"><pre><span></span>...
|
|
650
|
-
|
|
651
|
-
<span class="nt"><MessageType></span>
|
|
652
|
-
<span class="nt"><Name></span>my-protobuf-messages<span class="nt"></Name></span>
|
|
653
|
-
<span class="nt"><Module></span>protobuf<span class="nt"></Module></span>
|
|
654
|
-
<span class="nt"><ProtoPath></span>proto-archive;/mnt/shared/protofiles<span class="nt"></ProtoPath></span>
|
|
655
|
-
<span class="nt"><ProtoFile></span>proto-archive/person.proto<span class="nt"></ProtoFile></span>
|
|
656
|
-
<span class="nt"><Type></span>MyNamespace.Message<span class="nt"></Type></span>
|
|
657
|
-
<span class="nt"></MessageType></span>
|
|
658
|
-
|
|
659
|
-
...
|
|
660
|
-
</pre></div>
|
|
661
|
-
</div>
|
|
662
|
-
<p>Each message type references a <code class="docutils literal"><span class="pre">ProtoFile</span></code>, and specifies a single
|
|
663
|
-
top-level type from the file. The <code class="docutils literal"><span class="pre">ProtoFile</span></code> may include other files
|
|
664
|
-
through the standard protocol buffer include mechanism. Likewise, the
|
|
665
|
-
top-level type may be any valid protocol buffer definition, including
|
|
666
|
-
definitions that contain other types.</p>
|
|
667
|
-
<p>Once the protocol buffer <code class="docutils literal"><span class="pre">MessageType</span></code> is created as described
|
|
668
|
-
above, you must either create a <code class="docutils literal"><span class="pre">Transport</span></code> that specifies that
|
|
669
|
-
message type exactly, or you must create a <code class="docutils literal"><span class="pre">Transport</span></code> that can
|
|
670
|
-
accept any known message type and ensure that the client specifies the
|
|
671
|
-
new message type (in the example case, <code class="docutils literal"><span class="pre">my-protobuf-message</span></code>) in the
|
|
672
|
-
connect string.</p>
|
|
673
|
-
<p>When creating a <code class="docutils literal"><span class="pre">protobuf</span></code> message type, you must provide the
|
|
674
|
-
following parameters:</p>
|
|
675
|
-
<table border="1" class="docutils" id="id8">
|
|
676
|
-
<caption><span class="caption-text"><em>Protobuf Message Type Parameters</em></span><a class="headerlink" href="#id8" title="Permalink to this table">¶</a></caption>
|
|
677
|
-
<colgroup>
|
|
678
|
-
<col width="50%" />
|
|
679
|
-
<col width="50%" />
|
|
680
|
-
</colgroup>
|
|
681
|
-
<thead valign="bottom">
|
|
682
|
-
<tr class="row-odd"><th class="head">Parameter</th>
|
|
683
|
-
<th class="head">Description</th>
|
|
684
|
-
</tr>
|
|
685
|
-
</thead>
|
|
686
|
-
<tbody valign="top">
|
|
687
|
-
<tr class="row-even"><td><div class="code first last highlight-default"><div class="highlight"><pre><span></span><span class="n">Name</span>
|
|
688
|
-
</pre></div>
|
|
689
|
-
</div>
|
|
690
|
-
</td>
|
|
691
|
-
<td>The name of the new, customized message type. The rest of the configuration file will
|
|
692
|
-
use this name to refer to the message type.</td>
|
|
693
|
-
</tr>
|
|
694
|
-
<tr class="row-odd"><td><div class="code first last highlight-default"><div class="highlight"><pre><span></span><span class="n">Module</span>
|
|
695
|
-
</pre></div>
|
|
696
|
-
</div>
|
|
697
|
-
</td>
|
|
698
|
-
<td>The module that contains the message type. Use <code class="docutils literal"><span class="pre">protobuf</span></code> for protocol buffer
|
|
699
|
-
messages.</td>
|
|
700
|
-
</tr>
|
|
701
|
-
<tr class="row-even"><td><div class="code first last highlight-default"><div class="highlight"><pre><span></span><span class="n">ProtoPath</span>
|
|
702
|
-
</pre></div>
|
|
703
|
-
</div>
|
|
704
|
-
</td>
|
|
705
|
-
<td><p class="first">The path in which to search for <code class="docutils literal"><span class="pre">.proto</span></code> files. The content of this element has the
|
|
706
|
-
following syntax:</p>
|
|
707
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">alias</span> <span class="p">;</span> <span class="n">full</span><span class="o">-</span><span class="n">path</span>
|
|
708
|
-
</pre></div>
|
|
709
|
-
</div>
|
|
710
|
-
<p>The alias provides a short identifier to use when searching for .proto files. The
|
|
711
|
-
full path is the path that is substituted for that identifier.</p>
|
|
712
|
-
<p>For example, in the sample above, <code class="docutils literal"><span class="pre">proto-archive</span></code> is an alias for
|
|
713
|
-
<code class="docutils literal"><span class="pre">/mnt/shared/protofiles</span></code>.</p>
|
|
714
|
-
<p>A configuration may omit the alias and simply provide the path. For example:</p>
|
|
715
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">;</span><span class="o">/</span><span class="n">mnt</span><span class="o">/</span><span class="n">repository</span><span class="o">/</span><span class="n">protodefs</span>
|
|
716
|
-
</pre></div>
|
|
717
|
-
</div>
|
|
718
|
-
<p class="last">You may specify any number of <code class="docutils literal"><span class="pre">ProtoPath</span></code> declarations.</p>
|
|
719
|
-
</td>
|
|
720
|
-
</tr>
|
|
721
|
-
<tr class="row-odd"><td><div class="code first last highlight-default"><div class="highlight"><pre><span></span><span class="n">ProtoFile</span>
|
|
722
|
-
</pre></div>
|
|
723
|
-
</div>
|
|
724
|
-
</td>
|
|
725
|
-
<td>The name of the <code class="docutils literal"><span class="pre">.proto</span></code> file to use for this message type. To use an alias, prefix
|
|
726
|
-
the name of the file with the alias, as shown in the example above.</td>
|
|
727
|
-
</tr>
|
|
728
|
-
<tr class="row-even"><td><div class="code first last highlight-default"><div class="highlight"><pre><span></span><span class="n">Type</span>
|
|
729
|
-
</pre></div>
|
|
730
|
-
</div>
|
|
731
|
-
</td>
|
|
732
|
-
<td>The name of the type inside the <code class="docutils literal"><span class="pre">.proto</span></code> file to use for this message type. AMPS
|
|
733
|
-
requires a single type.</td>
|
|
734
|
-
</tr>
|
|
735
|
-
</tbody>
|
|
736
|
-
</table>
|
|
737
|
-
</div>
|
|
738
|
-
<div class="section" id="filtering-with-protobuf-messages">
|
|
739
|
-
<h3>Filtering with Protobuf Messages<a class="headerlink" href="#filtering-with-protobuf-messages" title="Permalink to this headline">¶</a></h3>
|
|
740
|
-
<p>To filter protobuf messages, there are a couple of conventions you must
|
|
741
|
-
remember. AMPS XPath identifiers begin at the outermost message, so you
|
|
742
|
-
can simply use member names for that message. If you have nested
|
|
743
|
-
messages, you use the name of the nested message and the member name
|
|
744
|
-
when creating an XPath identifier.</p>
|
|
745
|
-
<p>For example, suppose you have the following definition in a
|
|
746
|
-
<code class="docutils literal"><span class="pre">.proto</span></code> file:</p>
|
|
747
|
-
<div class="highlight-cpp"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="n">person</span> <span class="p">{</span>
|
|
748
|
-
<span class="n">required</span> <span class="n">string</span> <span class="n">name</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
|
|
749
|
-
<span class="n">required</span> <span class="n">int32</span> <span class="n">personID</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
|
|
750
|
-
<span class="p">}</span>
|
|
751
|
-
</pre></div>
|
|
752
|
-
</div>
|
|
753
|
-
<p>To access the <code class="docutils literal"><span class="pre">personID</span></code> data member, you simply use the name of the
|
|
754
|
-
data member as the XPath identifier. An example filter that verifies
|
|
755
|
-
that a <code class="docutils literal"><span class="pre">personID</span></code> is greater than 1000 would be:</p>
|
|
756
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">personID</span> <span class="o">></span> <span class="mi">1000</span>
|
|
757
|
-
</pre></div>
|
|
758
|
-
</div>
|
|
759
|
-
<p>If you have nested messages, you simply provide the path to the nested
|
|
760
|
-
message you want to access.</p>
|
|
761
|
-
<p>Let’s assume that the <code class="docutils literal"><span class="pre">person</span></code> message from the above example was
|
|
762
|
-
nested inside another message with the name of <code class="docutils literal"><span class="pre">record</span></code>. The example
|
|
763
|
-
filter below shows how to access the nested <code class="docutils literal"><span class="pre">person</span></code> message, and then
|
|
764
|
-
filter to the <code class="docutils literal"><span class="pre">personID</span></code>:</p>
|
|
765
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">person</span><span class="o">/</span><span class="n">personID</span> <span class="o">></span> <span class="mi">1000</span>
|
|
766
|
-
</pre></div>
|
|
767
|
-
</div>
|
|
768
|
-
<p>In this case, the first part of the identifier (<code class="docutils literal"><span class="pre">/person</span></code>) specifies
|
|
769
|
-
the sub-message. The second part of the identifier (<code class="docutils literal"><span class="pre">/personID</span></code>)
|
|
770
|
-
specifies the field within that sub-message. Notice that, as always,
|
|
771
|
-
there is no need to specify the name of the message for the outermost
|
|
772
|
-
message.</p>
|
|
773
|
-
</div>
|
|
774
|
-
<div class="section" id="working-with-multiple-protocol-buffer-types">
|
|
775
|
-
<h3>Working with Multiple Protocol Buffer Types<a class="headerlink" href="#working-with-multiple-protocol-buffer-types" title="Permalink to this headline">¶</a></h3>
|
|
776
|
-
<p>Some applications require messages of different types: for example, an
|
|
777
|
-
inventory management system may work with customer records,
|
|
778
|
-
inventory records, and shipping order records.</p>
|
|
779
|
-
<p>When using protocol buffers, each of these messages would use a
|
|
780
|
-
different <code class="docutils literal"><span class="pre">.proto</span></code> file, and therefore would be a different
|
|
781
|
-
message type. Unlike a self-describing format such as JSON or
|
|
782
|
-
XML, the serialized form of a protocol buffer message type
|
|
783
|
-
does not automatically contain any information about the type
|
|
784
|
-
of message or the fields that the message contains. Therefore,
|
|
785
|
-
each protocol buffer message type is best considered as a
|
|
786
|
-
completely distinct type. For example, the parser created for
|
|
787
|
-
an order record and the parser created for a customer record
|
|
788
|
-
are different. Unlike self-describing formats, it is not possible
|
|
789
|
-
to use a single parser for these types, or for a parser to
|
|
790
|
-
correctly handle a previously-unknown message structure.</p>
|
|
791
|
-
<p>There are two approaches to working with multiple protocol
|
|
792
|
-
buffer types in an AMPS application:</p>
|
|
793
|
-
<ol class="arabic simple">
|
|
794
|
-
<li>Keep the message types distinct. Each message type requires
|
|
795
|
-
a separate connection to AMPS. The advantage of this approach
|
|
796
|
-
is that the <code class="docutils literal"><span class="pre">.proto</span></code> files can be maintained and updated
|
|
797
|
-
separately. Each connection has a distinct type and only
|
|
798
|
-
needs to handle messages of that type. The disadvantage of
|
|
799
|
-
this approach is that the application must make a connection
|
|
800
|
-
to AMPS for each type of message received.</li>
|
|
801
|
-
<li>Create a “container” type that can
|
|
802
|
-
<em>optionally</em> contain any of the needed message types. The
|
|
803
|
-
advantage of this approach is that this requires only a
|
|
804
|
-
single connection to AMPS. Since there is a single
|
|
805
|
-
“container” type, a topic can hold this “container” type
|
|
806
|
-
and have heterogeneous actual contents. The disadvantage
|
|
807
|
-
to this approach is that it requires a consumer to
|
|
808
|
-
understand the “container” type and changes to the
|
|
809
|
-
contained types may need to be carefully managed across
|
|
810
|
-
the consumers that use the container. A “container” type
|
|
811
|
-
is typically a <code class="docutils literal"><span class="pre">oneof</span></code> of the contained types.</li>
|
|
812
|
-
</ol>
|
|
813
|
-
<p>For example, you might define a container as follows:</p>
|
|
814
|
-
<div class="highlight-cpp"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="n">Container</span> <span class="p">{</span>
|
|
815
|
-
|
|
816
|
-
<span class="n">oneof</span> <span class="p">{</span>
|
|
817
|
-
<span class="n">Order</span> <span class="n">order_type</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
|
|
818
|
-
<span class="n">Payment</span> <span class="n">payment_type</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
|
|
819
|
-
<span class="p">}</span>
|
|
820
|
-
<span class="p">}</span>
|
|
821
|
-
|
|
822
|
-
<span class="n">message</span> <span class="n">Order</span> <span class="p">{</span>
|
|
823
|
-
<span class="n">required</span> <span class="n">string</span> <span class="n">customer_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
|
|
824
|
-
<span class="p">...</span>
|
|
825
|
-
<span class="p">}</span>
|
|
826
|
-
|
|
827
|
-
<span class="n">message</span> <span class="n">Payment</span> <span class="p">{</span>
|
|
828
|
-
<span class="n">required</span> <span class="n">string</span> <span class="n">customer_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
|
|
829
|
-
<span class="p">...</span>
|
|
830
|
-
<span class="p">}</span>
|
|
831
|
-
</pre></div>
|
|
832
|
-
</div>
|
|
833
|
-
<p>In this case, the container type will include <strong>either</strong> an
|
|
834
|
-
<code class="docutils literal"><span class="pre">Order</span></code> or a <code class="docutils literal"><span class="pre">Payment</span></code>.</p>
|
|
835
|
-
</div>
|
|
836
|
-
<div class="section" id="union-types">
|
|
837
|
-
<span id="ug-protobuf-union-types"></span><h3>Union Types<a class="headerlink" href="#union-types" title="Permalink to this headline">¶</a></h3>
|
|
838
|
-
<p>When using a protocol buffer message type that contains a union, you can
|
|
839
|
-
navigate the union using the names defined in the top-level element. For
|
|
840
|
-
example, given the union defined below:</p>
|
|
841
|
-
<div class="highlight-cpp"><div class="highlight"><pre><span></span><span class="n">message</span> <span class="n">MyUnion</span> <span class="p">{</span>
|
|
842
|
-
<span class="n">optional</span> <span class="n">Order</span> <span class="n">order_type</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
|
|
843
|
-
<span class="n">optional</span> <span class="n">Payment</span> <span class="n">payment_type</span> <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
|
|
844
|
-
<span class="p">}</span>
|
|
845
|
-
|
|
846
|
-
<span class="n">message</span> <span class="n">Order</span> <span class="p">{</span>
|
|
847
|
-
<span class="n">required</span> <span class="n">string</span> <span class="n">customer_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
|
|
848
|
-
<span class="p">...</span>
|
|
849
|
-
<span class="p">}</span>
|
|
850
|
-
|
|
851
|
-
<span class="n">message</span> <span class="n">Payment</span> <span class="p">{</span>
|
|
852
|
-
<span class="n">required</span> <span class="n">string</span> <span class="n">customer_id</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
|
|
853
|
-
<span class="p">...</span>
|
|
854
|
-
<span class="p">}</span>
|
|
855
|
-
</pre></div>
|
|
856
|
-
</div>
|
|
857
|
-
<p>Providing a filter of <code class="docutils literal"><span class="pre">/order_type</span> <span class="pre">IS</span> <span class="pre">NOT</span> <span class="pre">NULL</span></code> will return all of the
|
|
858
|
-
<code class="docutils literal"><span class="pre">MyUnion</span></code> messages that contain an <code class="docutils literal"><span class="pre">Order</span></code>, while providing a filter
|
|
859
|
-
of <code class="docutils literal"><span class="pre">/payment_type/customer_id</span> <span class="pre">=</span> <span class="pre">'42'</span></code> will return only the <code class="docutils literal"><span class="pre">MyUnion</span></code>
|
|
860
|
-
messages that contain a <code class="docutils literal"><span class="pre">Payment</span></code> message with a <code class="docutils literal"><span class="pre">customer_id</span></code> of
|
|
861
|
-
<code class="docutils literal"><span class="pre">42</span></code>.</p>
|
|
862
|
-
</div>
|
|
863
|
-
<div class="section" id="limitations-of-the-protobuf-message-type">
|
|
864
|
-
<h3>Limitations of the Protobuf Message Type<a class="headerlink" href="#limitations-of-the-protobuf-message-type" title="Permalink to this headline">¶</a></h3>
|
|
865
|
-
<p>Because the <code class="docutils literal"><span class="pre">protobuf</span></code> message type requires a specific, fixed
|
|
866
|
-
definition for messages, AMPS does not support operations that construct
|
|
867
|
-
messages that may contain arbitrary values. In particular, protobuf does
|
|
868
|
-
not support:</p>
|
|
869
|
-
<ul class="simple">
|
|
870
|
-
<li>Creating a View with a <code class="docutils literal"><span class="pre">protobuf</span></code> type as the <code class="docutils literal"><span class="pre">MessageType</span></code>. AMPS
|
|
871
|
-
allows you to aggregate protobuf messages and project the results as
|
|
872
|
-
another type, but the destination <code class="docutils literal"><span class="pre">MessageType</span></code> for a View cannot be a
|
|
873
|
-
<code class="docutils literal"><span class="pre">protobuf</span></code> message type.</li>
|
|
874
|
-
<li>Creating an aggregated subscription for a topic that contains messages
|
|
875
|
-
of a <code class="docutils literal"><span class="pre">protobuf</span></code> message type.</li>
|
|
876
|
-
<li>Subscriptions to AMPS internal topics. Protobuf message types do not
|
|
877
|
-
support creating messages for AMPS internal topics, such as
|
|
878
|
-
<code class="docutils literal"><span class="pre">/AMPS/ClientStatus</span></code>.</li>
|
|
879
|
-
<li>Enriching or preprocessing <code class="docutils literal"><span class="pre">protobuf</span></code> message types. AMPS does
|
|
880
|
-
not support enrichment or preprocessing of <code class="docutils literal"><span class="pre">protobuf</span></code> messages.</li>
|
|
881
|
-
</ul>
|
|
882
|
-
<p>Protocol buffer version 3 messages provide fixed default values for
|
|
883
|
-
omitted fields. This means that there is no reliable way for AMPS to
|
|
884
|
-
determine if a missing field has been intentionally left out of the
|
|
885
|
-
message, or simply contains the fixed default value. The result
|
|
886
|
-
is an additional limitation for protocol buffer version 3 message types:</p>
|
|
887
|
-
<ul class="simple">
|
|
888
|
-
<li>Protocol buffer version 3 message types do not support delta publish
|
|
889
|
-
or delta subscribe.</li>
|
|
890
|
-
</ul>
|
|
891
|
-
<p>Protocol buffer version 2 message types can require that specific
|
|
892
|
-
fields are provided in a message (that is, fields can be marked
|
|
893
|
-
required). The result is an additional limitation for
|
|
894
|
-
protocol buffer version 2 message types:</p>
|
|
895
|
-
<ul class="simple">
|
|
896
|
-
<li>Protocol buffer version 2 message types do not support providing a
|
|
897
|
-
subset of fields in a message by specifying a select list.</li>
|
|
898
|
-
</ul>
|
|
899
|
-
<p>There are no other limitations in working with protocol buffer message
|
|
900
|
-
types.</p>
|
|
901
|
-
</div>
|
|
902
|
-
<div class="section" id="working-with-optional-default-values">
|
|
903
|
-
<h3>Working with Optional Default Values<a class="headerlink" href="#working-with-optional-default-values" title="Permalink to this headline">¶</a></h3>
|
|
904
|
-
<p>Google protocol buffers provide the ability for a message to have fields
|
|
905
|
-
that are both <em>optional</em>, so they need not be provided in the serialized
|
|
906
|
-
message, and <em>defaulted</em>, so that there is a specific value interpreted
|
|
907
|
-
when there is no value provided.</p>
|
|
908
|
-
<p>When no value is provided in the serialized message for an optional
|
|
909
|
-
default value, AMPS interprets the message differently depending on the
|
|
910
|
-
context:</p>
|
|
911
|
-
<ul class="simple">
|
|
912
|
-
<li>For most uses, AMPS interprets the message as though the value is
|
|
913
|
-
<em>present and set to the default value</em>. This means that you can
|
|
914
|
-
filter on optional default values, use them as SOW keys, and
|
|
915
|
-
aggregate optional default values regardless of whether a value is
|
|
916
|
-
present in the serialized message.</li>
|
|
917
|
-
<li>For <em>delta messaging</em> with protocol buffer version 2, AMPS treats an
|
|
918
|
-
optional default value as though there is <em>no value present</em>. AMPS does
|
|
919
|
-
not provide the default value. This means that a delta update must provide
|
|
920
|
-
the default value <em>explicitly</em> in the serialized message to set the field to the
|
|
921
|
-
default value. This also means that, if the value present in the
|
|
922
|
-
message is not the default value, but was not changed on the current
|
|
923
|
-
update, AMPS will not emit that value in messages to delta
|
|
924
|
-
subscribers. (Since delta messaging is not supported with protocol
|
|
925
|
-
buffer version 3, this issue does not arise with that version.)</li>
|
|
926
|
-
</ul>
|
|
927
|
-
</div>
|
|
928
|
-
</div>
|
|
929
|
-
<div class="section" id="struct-message-types">
|
|
930
|
-
<h2>Struct Message Types<a class="headerlink" href="#struct-message-types" title="Permalink to this headline">¶</a></h2>
|
|
931
|
-
<p>AMPS includes a message type that allows the server to parse and interpret
|
|
932
|
-
binary data in a fixed format. When configuring the message type, you must
|
|
933
|
-
include a definition of the format.</p>
|
|
934
|
-
<p>This format is designed to allow AMPS to process messages serialized from
|
|
935
|
-
raw memory, such as would be specified in a C-language <code class="docutils literal"><span class="pre">struct</span></code>.</p>
|
|
936
|
-
<div class="section" id="configuring-a-struct-message-type">
|
|
937
|
-
<h3>Configuring a Struct Message Type<a class="headerlink" href="#configuring-a-struct-message-type" title="Permalink to this headline">¶</a></h3>
|
|
938
|
-
<p>To configure a <code class="docutils literal"><span class="pre">struct</span></code> message type, you must define each field that
|
|
939
|
-
AMPS will use. This does not necessarily have to match the original definition
|
|
940
|
-
of the data. It is possible to “skip over” parts of the binary data
|
|
941
|
-
that AMPS should ignore by declaring that data to be padding.</p>
|
|
942
|
-
<p>A <code class="docutils literal"><span class="pre">struct</span></code> message type definition must include one or more <code class="docutils literal"><span class="pre">Field</span></code> elements,
|
|
943
|
-
specified in the order in which the data appears in the message. Each <code class="docutils literal"><span class="pre">Field</span></code> specifies
|
|
944
|
-
the name of the field, and the type and length of the data to be used for that
|
|
945
|
-
<code class="docutils literal"><span class="pre">Field</span></code>. The specifier for a field is composed of: <em>field name</em> <code class="docutils literal"><span class="pre">=</span></code> <em>data format specifier</em>
|
|
946
|
-
where the field name is the XPath identifier that AMPS will use for this field and the
|
|
947
|
-
data format specifier is a specifier for the type of data and number of bytes for this field.</p>
|
|
948
|
-
<p>The data format specifier is modeled after the specifiers for the Python
|
|
949
|
-
<code class="docutils literal"><span class="pre">struct</span></code> module. The format requires a data type specifier. The data
|
|
950
|
-
type specifier may be preceded by an optional byte order specifier. For
|
|
951
|
-
variable-width data types (for example, strings), include
|
|
952
|
-
an optional byte order specifier and an optional count specifier.</p>
|
|
953
|
-
<p>The following data type specifiers are recognized by the module:</p>
|
|
954
|
-
<table border="1" class="docutils" id="id9">
|
|
955
|
-
<caption><span class="caption-text"><em>Data type specifiers</em></span><a class="headerlink" href="#id9" title="Permalink to this table">¶</a></caption>
|
|
956
|
-
<colgroup>
|
|
957
|
-
<col width="25%" />
|
|
958
|
-
<col width="25%" />
|
|
959
|
-
<col width="25%" />
|
|
960
|
-
<col width="25%" />
|
|
961
|
-
</colgroup>
|
|
962
|
-
<thead valign="bottom">
|
|
963
|
-
<tr class="row-odd"><th class="head"><strong>Specifier</strong></th>
|
|
964
|
-
<th class="head"><strong>C Type</strong></th>
|
|
965
|
-
<th class="head"><strong>Size (bytes)</strong></th>
|
|
966
|
-
<th class="head"><strong>AMPS Type</strong></th>
|
|
967
|
-
</tr>
|
|
968
|
-
</thead>
|
|
969
|
-
<tbody valign="top">
|
|
970
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">x</span></code></td>
|
|
971
|
-
<td><em>n/a</em></td>
|
|
972
|
-
<td>(number of
|
|
973
|
-
bytes must
|
|
974
|
-
be specified)</td>
|
|
975
|
-
<td>Padding bytes, ignored by AMPS</td>
|
|
976
|
-
</tr>
|
|
977
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">c</span></code></td>
|
|
978
|
-
<td><code class="docutils literal"><span class="pre">char</span></code></td>
|
|
979
|
-
<td>1
|
|
980
|
-
(number of bytes may
|
|
981
|
-
be specified)</td>
|
|
982
|
-
<td>string</td>
|
|
983
|
-
</tr>
|
|
984
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">b</span></code></td>
|
|
985
|
-
<td><code class="docutils literal"><span class="pre">signed</span> <span class="pre">char</span></code></td>
|
|
986
|
-
<td>1</td>
|
|
987
|
-
<td>integer</td>
|
|
988
|
-
</tr>
|
|
989
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">B</span></code></td>
|
|
990
|
-
<td><code class="docutils literal"><span class="pre">unsigned</span> <span class="pre">char</span></code></td>
|
|
991
|
-
<td>1</td>
|
|
992
|
-
<td>integer</td>
|
|
993
|
-
</tr>
|
|
994
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">?</span></code></td>
|
|
995
|
-
<td><p class="first"><code class="docutils literal"><span class="pre">bool</span></code></p>
|
|
996
|
-
<p class="last">(as though
|
|
997
|
-
<code class="docutils literal"><span class="pre">stdbool.h</span></code> were
|
|
998
|
-
included)</p>
|
|
999
|
-
</td>
|
|
1000
|
-
<td>1</td>
|
|
1001
|
-
<td>boolean</td>
|
|
1002
|
-
</tr>
|
|
1003
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">h</span></code></td>
|
|
1004
|
-
<td><code class="docutils literal"><span class="pre">short</span></code></td>
|
|
1005
|
-
<td>2</td>
|
|
1006
|
-
<td>integer</td>
|
|
1007
|
-
</tr>
|
|
1008
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">H</span></code></td>
|
|
1009
|
-
<td><code class="docutils literal"><span class="pre">unsigned</span> <span class="pre">short</span></code></td>
|
|
1010
|
-
<td>2</td>
|
|
1011
|
-
<td>integer</td>
|
|
1012
|
-
</tr>
|
|
1013
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">i</span></code></td>
|
|
1014
|
-
<td><code class="docutils literal"><span class="pre">int</span></code></td>
|
|
1015
|
-
<td>4</td>
|
|
1016
|
-
<td>integer</td>
|
|
1017
|
-
</tr>
|
|
1018
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">I</span></code></td>
|
|
1019
|
-
<td><code class="docutils literal"><span class="pre">unsigned</span> <span class="pre">int</span></code></td>
|
|
1020
|
-
<td>4</td>
|
|
1021
|
-
<td>integer</td>
|
|
1022
|
-
</tr>
|
|
1023
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">l</span></code></td>
|
|
1024
|
-
<td><code class="docutils literal"><span class="pre">long</span></code></td>
|
|
1025
|
-
<td>4</td>
|
|
1026
|
-
<td>integer</td>
|
|
1027
|
-
</tr>
|
|
1028
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">L</span></code></td>
|
|
1029
|
-
<td><code class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span></code></td>
|
|
1030
|
-
<td>4</td>
|
|
1031
|
-
<td>integer</td>
|
|
1032
|
-
</tr>
|
|
1033
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">q</span></code></td>
|
|
1034
|
-
<td><code class="docutils literal"><span class="pre">long</span> <span class="pre">long</span></code></td>
|
|
1035
|
-
<td>8</td>
|
|
1036
|
-
<td>integer</td>
|
|
1037
|
-
</tr>
|
|
1038
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">Q</span></code></td>
|
|
1039
|
-
<td><code class="docutils literal"><span class="pre">unsigned</span> <span class="pre">long</span> <span class="pre">long</span></code></td>
|
|
1040
|
-
<td>8</td>
|
|
1041
|
-
<td>integer</td>
|
|
1042
|
-
</tr>
|
|
1043
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">n</span></code></td>
|
|
1044
|
-
<td><code class="docutils literal"><span class="pre">ssize_t</span></code></td>
|
|
1045
|
-
<td> </td>
|
|
1046
|
-
<td>integer</td>
|
|
1047
|
-
</tr>
|
|
1048
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">N</span></code></td>
|
|
1049
|
-
<td><code class="docutils literal"><span class="pre">size_t</span></code></td>
|
|
1050
|
-
<td> </td>
|
|
1051
|
-
<td>integer</td>
|
|
1052
|
-
</tr>
|
|
1053
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">f</span></code></td>
|
|
1054
|
-
<td><code class="docutils literal"><span class="pre">float</span></code></td>
|
|
1055
|
-
<td>4</td>
|
|
1056
|
-
<td>double</td>
|
|
1057
|
-
</tr>
|
|
1058
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">d</span></code></td>
|
|
1059
|
-
<td><code class="docutils literal"><span class="pre">double</span></code></td>
|
|
1060
|
-
<td>8</td>
|
|
1061
|
-
<td>double</td>
|
|
1062
|
-
</tr>
|
|
1063
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">s</span></code></td>
|
|
1064
|
-
<td><code class="docutils literal"><span class="pre">char[]</span></code></td>
|
|
1065
|
-
<td>Number of bytes
|
|
1066
|
-
must be specified,
|
|
1067
|
-
AMPS will interpret
|
|
1068
|
-
the specified number of
|
|
1069
|
-
bytes as the string.</td>
|
|
1070
|
-
<td>string</td>
|
|
1071
|
-
</tr>
|
|
1072
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">S</span></code></td>
|
|
1073
|
-
<td><code class="docutils literal"><span class="pre">char[]</span></code></td>
|
|
1074
|
-
<td>Number of bytes
|
|
1075
|
-
must be specified,
|
|
1076
|
-
AMPS will interpret
|
|
1077
|
-
the string up to the
|
|
1078
|
-
first NULL character
|
|
1079
|
-
or the number of
|
|
1080
|
-
bytes specified.</td>
|
|
1081
|
-
<td>string</td>
|
|
1082
|
-
</tr>
|
|
1083
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">p</span></code></td>
|
|
1084
|
-
<td><code class="docutils literal"><span class="pre">uint8_t</span></code>
|
|
1085
|
-
followed by
|
|
1086
|
-
<code class="docutils literal"><span class="pre">char[]</span></code></td>
|
|
1087
|
-
<td><p class="first">Number of bytes
|
|
1088
|
-
must be specified.</p>
|
|
1089
|
-
<p class="last">AMPS will consume the
|
|
1090
|
-
number of bytes
|
|
1091
|
-
specified in the
|
|
1092
|
-
<code class="docutils literal"><span class="pre">Field</span></code> configuration.
|
|
1093
|
-
The first byte of data
|
|
1094
|
-
specifies the length of
|
|
1095
|
-
the string. Only that
|
|
1096
|
-
number of bytes, starting
|
|
1097
|
-
with the second byte of
|
|
1098
|
-
the data, will be
|
|
1099
|
-
interpreted as the value.</p>
|
|
1100
|
-
</td>
|
|
1101
|
-
<td>string</td>
|
|
1102
|
-
</tr>
|
|
1103
|
-
</tbody>
|
|
1104
|
-
</table>
|
|
1105
|
-
<p>The byte order specifiers are as follows:</p>
|
|
1106
|
-
<table border="1" class="docutils" id="id10">
|
|
1107
|
-
<caption><span class="caption-text"><em>Byte order specifiers</em></span><a class="headerlink" href="#id10" title="Permalink to this table">¶</a></caption>
|
|
1108
|
-
<colgroup>
|
|
1109
|
-
<col width="50%" />
|
|
1110
|
-
<col width="50%" />
|
|
1111
|
-
</colgroup>
|
|
1112
|
-
<thead valign="bottom">
|
|
1113
|
-
<tr class="row-odd"><th class="head"><strong>Specifier</strong></th>
|
|
1114
|
-
<th class="head"><strong>Byte Order</strong></th>
|
|
1115
|
-
</tr>
|
|
1116
|
-
</thead>
|
|
1117
|
-
<tbody valign="top">
|
|
1118
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">@</span></code></td>
|
|
1119
|
-
<td>Native (little-endian for AMPS server)</td>
|
|
1120
|
-
</tr>
|
|
1121
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">=</span></code></td>
|
|
1122
|
-
<td>Native (little-endian for AMPS server)</td>
|
|
1123
|
-
</tr>
|
|
1124
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre"><</span></code></td>
|
|
1125
|
-
<td>Little-endian</td>
|
|
1126
|
-
</tr>
|
|
1127
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">></span></code></td>
|
|
1128
|
-
<td>Big-endian</td>
|
|
1129
|
-
</tr>
|
|
1130
|
-
</tbody>
|
|
1131
|
-
</table>
|
|
1132
|
-
<p>If no byte order is specified, AMPS assumes a little-endian byte order to
|
|
1133
|
-
match the native byte order of the AMPS server.</p>
|
|
1134
|
-
<p>For example, given the following C struct:</p>
|
|
1135
|
-
<div class="highlight-c"><div class="highlight"><pre><span></span><span class="k">struct</span> <span class="nc">data_type</span>
|
|
1136
|
-
<span class="p">{</span>
|
|
1137
|
-
<span class="kt">int32_t</span> <span class="n">id</span><span class="p">;</span>
|
|
1138
|
-
<span class="kt">int32_t</span> <span class="n">internal_id</span><span class="p">;</span>
|
|
1139
|
-
<span class="kt">float</span> <span class="n">price</span><span class="p">;</span>
|
|
1140
|
-
<span class="kt">char</span> <span class="n">label</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
|
|
1141
|
-
<span class="kt">char</span> <span class="n">code</span><span class="p">[</span><span class="mi">16</span><span class="p">];</span>
|
|
1142
|
-
<span class="kt">char</span> <span class="n">routing_instructions</span><span class="p">[</span><span class="mi">32</span><span class="p">];</span>
|
|
1143
|
-
<span class="p">};</span>
|
|
1144
|
-
</pre></div>
|
|
1145
|
-
</div>
|
|
1146
|
-
<p>A message type declaration that would make the <cite>id</cite>, <cite>price</cite>, and <cite>code</cite>
|
|
1147
|
-
members available to AMPS could be constructed as follows:</p>
|
|
1148
|
-
<div class="highlight-xml"><div class="highlight"><pre><span></span><span class="nt"><MessageType></span>
|
|
1149
|
-
<span class="nt"><Name></span>sample_struct_type<span class="nt"></Name></span>
|
|
1150
|
-
<span class="nt"><Module></span>struct<span class="nt"></Module></span>
|
|
1151
|
-
<span class="nt"><Field></span>/id = i<span class="nt"></Field></span>
|
|
1152
|
-
<span class="nt"><Field></span>/ignored = 4x<span class="nt"></Field></span>
|
|
1153
|
-
<span class="nt"><Field></span>/price = f<span class="nt"></Field></span>
|
|
1154
|
-
<span class="nt"><Field></span>/ignored = 32x<span class="nt"></Field></span>
|
|
1155
|
-
<span class="nt"><Field></span>/code = 16s<span class="nt"></Field></span>
|
|
1156
|
-
<span class="nt"></MessageType></span>
|
|
1157
|
-
</pre></div>
|
|
1158
|
-
</div>
|
|
1159
|
-
<p>This configuration declares that the message will be interpreted as follows:</p>
|
|
1160
|
-
<ul class="simple">
|
|
1161
|
-
<li>The first four bytes of the message will be interpreted
|
|
1162
|
-
as a (little-endian) integer, and that value will be considered to be the <cite>/id</cite>
|
|
1163
|
-
field of the message.</li>
|
|
1164
|
-
<li>The next four bytes are skipped as padding – notice that,
|
|
1165
|
-
although a field name is required in the specifier syntax, padding bytes are
|
|
1166
|
-
ignored by AMPS, so there is no field named <code class="docutils literal"><span class="pre">/ignored</span></code> generated. However, if
|
|
1167
|
-
the message is pretty-printed (or displayed in Galvanometer), AMPS will indicate
|
|
1168
|
-
that there are padding bytes present for this field.</li>
|
|
1169
|
-
<li>The next four bytes are interpreted as a (little-endian) float, and that value
|
|
1170
|
-
will be considered the value of the <code class="docutils literal"><span class="pre">/price</span></code> field.</li>
|
|
1171
|
-
<li>The next 32 bytes (the <code class="docutils literal"><span class="pre">label</span></code> in the C struct) are skipped as padding. Again,
|
|
1172
|
-
if the message is pretty-printed (or displayed in Galvanometer), AMPS will indicate
|
|
1173
|
-
that there are padding bytes present for this field.</li>
|
|
1174
|
-
<li>The next 16 bytes of the message are an AMPS string that will be used for the value
|
|
1175
|
-
of the <code class="docutils literal"><span class="pre">/code</span></code> field.</li>
|
|
1176
|
-
<li>Any remaining bytes (the <code class="docutils literal"><span class="pre">routing_instructions</span></code> from the C struct, in this case)
|
|
1177
|
-
are ignored. If the message is pretty-printed (or displayed in Galvanometer), AMPS
|
|
1178
|
-
will indicate that there are extra bytes present.</li>
|
|
1179
|
-
</ul>
|
|
1180
|
-
</div>
|
|
1181
|
-
<div class="section" id="limitations-of-struct-message-types">
|
|
1182
|
-
<h3>Limitations of Struct Message Types<a class="headerlink" href="#limitations-of-struct-message-types" title="Permalink to this headline">¶</a></h3>
|
|
1183
|
-
<p>Since the <code class="docutils literal"><span class="pre">struct</span></code> message type requires a specific, fixed
|
|
1184
|
-
definition for messages, AMPS does not support operations that
|
|
1185
|
-
construct messages that may contain arbitrary values. In
|
|
1186
|
-
particular, message types defined using the <code class="docutils literal"><span class="pre">struct</span></code> message type
|
|
1187
|
-
do not support:</p>
|
|
1188
|
-
<ul class="simple">
|
|
1189
|
-
<li>Creating a View with a <code class="docutils literal"><span class="pre">struct</span></code> message type as the <code class="docutils literal"><span class="pre">MessageType</span></code>.
|
|
1190
|
-
AMPS allows you to aggregate <code class="docutils literal"><span class="pre">struct</span></code> message types and project the
|
|
1191
|
-
results as another message type, but the destination <code class="docutils literal"><span class="pre">MessageType</span></code> for
|
|
1192
|
-
a View cannot be a <code class="docutils literal"><span class="pre">struct</span></code> message type.</li>
|
|
1193
|
-
<li>Creating an aggregated subscription for a topic that contains
|
|
1194
|
-
messages of a <code class="docutils literal"><span class="pre">struct</span></code> message type.</li>
|
|
1195
|
-
<li>Subscriptions to AMPS internal topics (for example, <code class="docutils literal"><span class="pre">/AMPS/ClientStatus</span></code>).</li>
|
|
1196
|
-
<li>Enriching or preprocessing messages of a <code class="docutils literal"><span class="pre">struct</span></code> message type.</li>
|
|
1197
|
-
<li>Delta publish or delta subscribe.</li>
|
|
1198
|
-
<li>Select lists.</li>
|
|
1199
|
-
</ul>
|
|
1200
|
-
</div>
|
|
1201
|
-
</div>
|
|
1202
|
-
<div class="section" id="loading-additional-message-types">
|
|
1203
|
-
<h2>Loading Additional Message Types<a class="headerlink" href="#loading-additional-message-types" title="Permalink to this headline">¶</a></h2>
|
|
1204
|
-
<p>AMPS includes the ability to load custom message types in external
|
|
1205
|
-
modules. As with all AMPS modules, custom message types are compiled
|
|
1206
|
-
into shared object files. AMPS dynamically loads these message types on
|
|
1207
|
-
startup, using the information provided in the configuration file. Once
|
|
1208
|
-
you have loaded and declared those types, you can use the type just as
|
|
1209
|
-
you use the default message types.</p>
|
|
1210
|
-
<p>For example, the configuration below creates a message type named
|
|
1211
|
-
<code class="docutils literal"><span class="pre">custom-type</span></code> that uses a module named <code class="docutils literal"><span class="pre">libmy-type-module.so</span></code> and
|
|
1212
|
-
specifies a transport for messages of that type:</p>
|
|
1213
|
-
<div class="highlight-xml"><div class="highlight"><pre><span></span><span class="nt"><Modules></span>
|
|
1214
|
-
<span class="nt"><Module></span>
|
|
1215
|
-
<span class="c"><!-- Specifies the name to use to refer to this module in the rest of the</span>
|
|
1216
|
-
<span class="c"> configuration file --></span>
|
|
1217
|
-
<span class="nt"><Name></span>custom-type-module<span class="nt"></Name></span>
|
|
1218
|
-
|
|
1219
|
-
<span class="c"><!-- Path to the library to load for this module. In this example, the path is a</span>
|
|
1220
|
-
<span class="c"> relative path below the directory where AMPS is started. --></span>
|
|
1221
|
-
<span class="nt"><Library></span>./custom-modules/libmy-type-module.so<span class="nt"></Library></span>
|
|
1222
|
-
<span class="nt"></Module></span>
|
|
1223
|
-
<span class="nt"></Modules></span>
|
|
1224
|
-
|
|
1225
|
-
<span class="nt"><MessageTypes></span>
|
|
1226
|
-
<span class="nt"><MessageType></span>
|
|
1227
|
-
<span class="c"><!-- The name to use for this message type in the rest of the configuration file. --></span>
|
|
1228
|
-
<span class="nt"><Name></span>custom-type<span class="nt"></Name></span>
|
|
1229
|
-
|
|
1230
|
-
<span class="c"><!-- Reference to the module that implements this message type, using the Name</span>
|
|
1231
|
-
<span class="c"> defined in the Module configuration. --></span>
|
|
1232
|
-
<span class="nt"><Module></span>custom-type-module<span class="nt"></Module></span>
|
|
1233
|
-
<span class="nt"></MessageType></span>
|
|
1234
|
-
<span class="nt"></MessageTypes></span>
|
|
1235
|
-
|
|
1236
|
-
<span class="nt"><Transports></span>
|
|
1237
|
-
<span class="nt"><Transport></span>
|
|
1238
|
-
<span class="nt"><Name></span>custom-type-tcp<span class="nt"></Name></span>
|
|
1239
|
-
<span class="nt"><Type></span>tcp<span class="nt"></Type></span>
|
|
1240
|
-
<span class="nt"><InetAddr></span>9008<span class="nt"></InetAddr></span>
|
|
1241
|
-
|
|
1242
|
-
<span class="c"><!-- The message type that this transport uses, using the Name defined in the</span>
|
|
1243
|
-
<span class="c"> MessageType configuration. --></span>
|
|
1244
|
-
<span class="nt"><MessageType></span>custom-type<span class="nt"></MessageType></span>
|
|
1245
|
-
<span class="nt"><Protocol></span>amps<span class="nt"></Protocol></span>
|
|
1246
|
-
<span class="nt"></Transport></span>
|
|
1247
|
-
<span class="nt"></Transports></span>
|
|
1248
|
-
</pre></div>
|
|
1249
|
-
</div>
|
|
1250
|
-
<p>Once a message type has been declared, you can use it in exactly the
|
|
1251
|
-
same way you use the default message types.</p>
|
|
1252
|
-
<p>Notice, however, that custom-developed message types may only provide
|
|
1253
|
-
support for a subset of the features of AMPS. For example, the
|
|
1254
|
-
<code class="docutils literal"><span class="pre">binary</span></code> message type provided with AMPS does not support features
|
|
1255
|
-
that require AMPS to parse or construct a message, as described above.
|
|
1256
|
-
The developer of the message type must provide information on what
|
|
1257
|
-
capabilities the message type provides.</p>
|
|
1258
|
-
</div>
|
|
1259
|
-
</div>
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
</div>
|
|
1263
|
-
</div>
|
|
1264
|
-
</div>
|
|
1265
|
-
<div class="clearer"></div>
|
|
1266
|
-
</div>
|
|
1267
|
-
<div class="footer">
|
|
1268
|
-
©2023 60East Technologies, Inc. (version develop).
|
|
1269
|
-
|
|
1270
|
-
|
|
|
1271
|
-
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
|
|
1272
|
-
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
|
1273
|
-
|
|
1274
|
-
</div>
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
</body>
|
|
1280
|
-
</html>
|