amps-python-client 5.3.4.1__zip → 5.3.4.2__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- amps-python-client-5.3.4.2/PKG-INFO +112 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/.buildinfo +4 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/intro.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/logon.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/publishing.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/removing.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/utilities.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_sources/index.rst.txt +36 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/ack-messages.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/content-messages.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/intro.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/logon.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/protocol-reference.html +93 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/publishing.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/query-delimiters.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/query-subscribe.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/removing.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/chapters/utilities.html +95 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/genindex.html +97 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/index.html +98 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/objects.inv +6 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/search.html +107 -0
- amps-python-client-5.3.4.2/docs/command-reference/html/searchindex.js +1 -0
- amps-python-client-5.3.4.2/docs/html/.buildinfo +4 -0
- amps-python-client-5.3.4.2/docs/html/code.html +6616 -0
- amps-python-client-5.3.4.2/docs/html/genindex.html +1363 -0
- amps-python-client-5.3.4.2/docs/html/index.html +131 -0
- amps-python-client-5.3.4.2/docs/html/objects.inv +0 -0
- amps-python-client-5.3.4.2/docs/html/py-modindex.html +111 -0
- amps-python-client-5.3.4.2/docs/html/search.html +107 -0
- amps-python-client-5.3.4.2/docs/html/searchindex.js +1 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/deltas.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/error-handling.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/exceptions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/first-program.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/high-availability.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/installing.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/introduction.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.2/docs/python/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python/html/.buildinfo +4 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/advanced-topics.rst.txt +398 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +26 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/creating-commands.rst.txt +159 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/deltas.rst.txt +79 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/error-handling.rst.txt +481 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/exceptions.rst.txt +123 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/first-program.rst.txt +168 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/high-availability.rst.txt +879 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/installing.rst.txt +184 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/introduction.rst.txt +50 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +32 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/performance-tips.rst.txt +432 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/queues.rst.txt +282 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/sow.rst.txt +294 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/subscriptions.rst.txt +374 -0
- amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/utilities.rst.txt +214 -0
- amps-python-client-5.3.4.2/docs/python/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/advanced-topics.html +447 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/cpp-compiler-list.html +92 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/cpp-feature-table.html +156 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/creating-commands.html +2882 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/deltas.html +169 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/error-handling.html +745 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/exceptions.html +266 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/first-program.html +526 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/high-availability.html +1017 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/installing.html +264 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/introduction.html +245 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/moving-from-python-lite.html +118 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/performance-tips.html +499 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/queues.html +352 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/sow.html +383 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/subscriptions.html +535 -0
- amps-python-client-5.3.4.2/docs/python/html/chapters/utilities.html +302 -0
- amps-python-client-5.3.4.2/docs/python/html/genindex.html +351 -0
- amps-python-client-5.3.4.2/docs/python/html/index.html +382 -0
- amps-python-client-5.3.4.2/docs/python/html/objects.inv +0 -0
- amps-python-client-5.3.4.2/docs/python/html/search.html +107 -0
- amps-python-client-5.3.4.2/docs/python/html/searchindex.js +1 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/.buildinfo +4 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/chapters/crankitup.html +271 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/chapters/equipment.html +105 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/genindex.html +97 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/index.html +381 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/objects.inv +0 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/search.html +107 -0
- amps-python-client-5.3.4.2/docs/python-quickstart/html/searchindex.js +1 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/events.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/views.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/.buildinfo +4 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/acks.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/actions.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/daemon.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/delta.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/distribution.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/events.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/glossary.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/ha.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/intro.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/logging.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/oof.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/operation.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/queues.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/replication.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/securing.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/sow.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/transports.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/txlog.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/usecases.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/utilities.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/views.rst.txt +8 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_sources/index.rst.txt +62 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/_static/custom.css +161 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/acks.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/actions.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/amps-statistics.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/amps_expressions.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/amps_functions.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/auxiliary_modules.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/config-file-shortcuts.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/conflated_topics.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/constructing-fields.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/daemon.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/delta.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/distribution.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/enrichment.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/events.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/file_format_versions.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/glossary.html +92 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/ha.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/installing_and_starting.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/intro.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/logging.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/messageTypes.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/monitoring.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/oof.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/operation.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/pub_sub.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/queues.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/replication.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/securing.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/sow.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/sow_queries.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/spark.html +819 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/transports.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/troubleshooting.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/txlog.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/usecases.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/utilities.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/chapters/views.html +94 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/genindex.html +133 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/index.html +96 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/objects.inv +0 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/search.html +106 -0
- amps-python-client-5.3.4.2/docs/user-guide/html/searchindex.js +1 -0
- amps-python-client-5.3.4.2/include/ampspy_bookmarkstore.hpp +63 -0
- amps-python-client-5.3.4.2/include/ampspy_compat.h +63 -0
- amps-python-client-5.3.4.2/include/ampspy_defs.hpp +181 -0
- amps-python-client-5.3.4.2/include/ampspy_recoverypointadapter.hpp +52 -0
- amps-python-client-5.3.4.2/include/ampspy_shims.hpp +113 -0
- amps-python-client-5.3.4.2/include/ampspy_type_object.hpp +242 -0
- amps-python-client-5.3.4.2/include/ampspy_types.hpp +1139 -0
- amps-python-client-5.3.4.2/include/ampspyver.h +30 -0
- amps-python-client-5.3.4.2/index.html +66 -0
- amps-python-client-5.3.4.2/samples/AMPSConsolePublisher.py +59 -0
- amps-python-client-5.3.4.2/samples/AMPSConsoleSubscriber.py +63 -0
- amps-python-client-5.3.4.2/samples/AMPSFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.2/samples/AMPSFIXShredderSubscriber.py +69 -0
- amps-python-client-5.3.4.2/samples/AMPSNVFIXBuilderPublisher.py +71 -0
- amps-python-client-5.3.4.2/samples/AMPSNVFIXShredderSubscriber.py +67 -0
- amps-python-client-5.3.4.2/samples/AMPSPublishForReplay.py +81 -0
- amps-python-client-5.3.4.2/samples/AMPSQueueConsumer.py +69 -0
- amps-python-client-5.3.4.2/samples/AMPSQueuePublisher.py +59 -0
- amps-python-client-5.3.4.2/samples/AMPSSOWConsolePublisher.py +67 -0
- amps-python-client-5.3.4.2/samples/AMPSSOWConsoleSubscriber.py +77 -0
- amps-python-client-5.3.4.2/samples/AMPSSOWandSubscribeConsoleSubscriber.py +79 -0
- amps-python-client-5.3.4.2/samples/AMPSSOWandSubscribeWithOOF.py +108 -0
- amps-python-client-5.3.4.2/samples/AMPSSubscribeForReplay.py +128 -0
- amps-python-client-5.3.4.2/samples/AMPSUpdateForOOF.py +123 -0
- amps-python-client-5.3.4.2/samples/CompositeMessagePublisher.py +84 -0
- amps-python-client-5.3.4.2/samples/CompositeMessageSubscriber.py +87 -0
- amps-python-client-5.3.4.2/samples/RandomServerChooser.py +66 -0
- amps-python-client-5.3.4.2/samples/sample.xml +335 -0
- amps-python-client-5.3.4.2/setup.py +210 -0
- amps-python-client-5.3.4.2/setup_amps.py +94 -0
- amps-python-client-5.3.4.2/src/ampspy_shims.cpp +214 -0
- amps-python-client-5.3.4.2/src/ampspy_type_object.cpp +495 -0
- amps-python-client-5.3.4.2/src/authenticator.cpp +128 -0
- amps-python-client-5.3.4.2/src/bookmarkstore.cpp +246 -0
- amps-python-client-5.3.4.2/src/client.cpp +2648 -0
- amps-python-client-5.3.4.2/src/client_docs.h +956 -0
- amps-python-client-5.3.4.2/src/cmessagehandler.cpp +161 -0
- amps-python-client-5.3.4.2/src/command.cpp +164 -0
- amps-python-client-5.3.4.2/src/command_docs.h +269 -0
- amps-python-client-5.3.4.2/src/compositemessagebuilder.cpp +113 -0
- amps-python-client-5.3.4.2/src/compositemessageparser.cpp +151 -0
- amps-python-client-5.3.4.2/src/conflatingrecoverypointadapter.cpp +197 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/BlockPublishStore.hpp +2053 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/BlockStore.hpp +677 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/BookmarkStore.hpp +542 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/Buffer.hpp +214 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/CompositeMessageBuilder.hpp +174 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/CompositeMessageParser.hpp +151 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/DefaultServerChooser.hpp +162 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/Field.hpp +719 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/HAClient.hpp +370 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/HAClientImpl.hpp +460 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/HybridPublishStore.hpp +481 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/LoggedBookmarkStore.hpp +1256 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MMapBookmarkStore.hpp +1283 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MMapStoreBuffer.hpp +290 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MemoryBookmarkStore.hpp +1628 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MemoryPublishStore.hpp +66 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MemoryStoreBuffer.hpp +244 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MemorySubscriptionManager.hpp +850 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/Message.hpp +1819 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/MessageRouter.hpp +647 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/PublishStore.hpp +158 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ReconnectDelayStrategy.hpp +106 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +317 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/RecoveryPoint.hpp +323 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/RecoveryPointAdapter.hpp +501 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/RingBookmarkStore.hpp +669 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +494 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ServerChooser.hpp +145 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ServerChooserImpl.hpp +95 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/amps.h +803 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/amps_impl.h +208 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/amps_ssl.h +78 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ampscrc.hpp +210 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ampsplusplus.hpp +8850 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ampsuri.h +84 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ampsver.h +41 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/ampsver.h.in +41 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/constants.hpp +194 -0
- amps-python-client-5.3.4.2/src/cpp/include/amps/util.hpp +1722 -0
- amps-python-client-5.3.4.2/src/cpp/src/amps_protocol.c +693 -0
- amps-python-client-5.3.4.2/src/cpp/src/amps_ssl.c +489 -0
- amps-python-client-5.3.4.2/src/cpp/src/atfork.c +451 -0
- amps-python-client-5.3.4.2/src/cpp/src/client.c +498 -0
- amps-python-client-5.3.4.2/src/cpp/src/message.c +837 -0
- amps-python-client-5.3.4.2/src/cpp/src/message_generated.h +611 -0
- amps-python-client-5.3.4.2/src/cpp/src/tcp.c +1517 -0
- amps-python-client-5.3.4.2/src/cpp/src/tcps.c +1885 -0
- amps-python-client-5.3.4.2/src/cpp/src/transports.c +129 -0
- amps-python-client-5.3.4.2/src/cpp/src/unix.c +1002 -0
- amps-python-client-5.3.4.2/src/cpp/src/uri.c +301 -0
- amps-python-client-5.3.4.2/src/exponentialdelaystrategy.cpp +137 -0
- amps-python-client-5.3.4.2/src/failedwritehandler.cpp +116 -0
- amps-python-client-5.3.4.2/src/fixbuilder.cpp +146 -0
- amps-python-client-5.3.4.2/src/fixeddelaystrategy.cpp +114 -0
- amps-python-client-5.3.4.2/src/fixshredder.cpp +105 -0
- amps-python-client-5.3.4.2/src/fixshredder_docs.h +38 -0
- amps-python-client-5.3.4.2/src/haclient.cpp +691 -0
- amps-python-client-5.3.4.2/src/haclient_docs.h +186 -0
- amps-python-client-5.3.4.2/src/hybridpublishstore.cpp +137 -0
- amps-python-client-5.3.4.2/src/hybridpublishstore_docs.h +31 -0
- amps-python-client-5.3.4.2/src/memorybookmarkstore.cpp +373 -0
- amps-python-client-5.3.4.2/src/memorybookmarkstore_docs.h +39 -0
- amps-python-client-5.3.4.2/src/memorypublishstore.cpp +160 -0
- amps-python-client-5.3.4.2/src/memorypublishstore_docs.h +32 -0
- amps-python-client-5.3.4.2/src/message.cpp +765 -0
- amps-python-client-5.3.4.2/src/message_docs.h +306 -0
- amps-python-client-5.3.4.2/src/messagestream.cpp +630 -0
- amps-python-client-5.3.4.2/src/messagestream_docs.h +45 -0
- amps-python-client-5.3.4.2/src/mmapbookmarkstore.cpp +422 -0
- amps-python-client-5.3.4.2/src/nvfixbuilder.cpp +160 -0
- amps-python-client-5.3.4.2/src/nvfixbuilder_docs.h +35 -0
- amps-python-client-5.3.4.2/src/nvfixshredder.cpp +99 -0
- amps-python-client-5.3.4.2/src/nvfixshredder_docs.h +43 -0
- amps-python-client-5.3.4.2/src/publishstore.cpp +183 -0
- amps-python-client-5.3.4.2/src/raw_wrapper.cpp +765 -0
- amps-python-client-5.3.4.2/src/reason.cpp +71 -0
- amps-python-client-5.3.4.2/src/recoverypoint.cpp +135 -0
- amps-python-client-5.3.4.2/src/recoverypointadapter.cpp +171 -0
- amps-python-client-5.3.4.2/src/ringbookmarkstore.cpp +360 -0
- amps-python-client-5.3.4.2/src/serverchooser.cpp +245 -0
- amps-python-client-5.3.4.2/src/serverchooser_docs.h +41 -0
- amps-python-client-5.3.4.2/src/sowrecoverypointadapter.cpp +248 -0
- amps-python-client-5.3.4.2/src/store.cpp +62 -0
- amps-python-client-5.3.4.2/src/versioninfo.cpp +175 -0
- amps-python-client-5.3.4.1/PKG-INFO +0 -112
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +0 -32
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +0 -27
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/intro.rst.txt +0 -43
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/logon.rst.txt +0 -231
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +0 -1474
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/publishing.rst.txt +0 -25
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +0 -12
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +0 -23
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/removing.rst.txt +0 -6
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/utilities.rst.txt +0 -13
- amps-python-client-5.3.4.1/docs/command-reference/html/_sources/index.rst.txt +0 -56
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/ack-messages.html +0 -417
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/content-messages.html +0 -417
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/intro.html +0 -126
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/logon.html +0 -295
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/protocol-reference.html +0 -1190
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/publishing.html +0 -436
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-delimiters.html +0 -173
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-subscribe.html +0 -2123
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/removing.html +0 -299
- amps-python-client-5.3.4.1/docs/command-reference/html/chapters/utilities.html +0 -287
- amps-python-client-5.3.4.1/docs/command-reference/html/genindex.html +0 -97
- amps-python-client-5.3.4.1/docs/command-reference/html/index.html +0 -138
- amps-python-client-5.3.4.1/docs/command-reference/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/command-reference/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/command-reference/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/html/code.html +0 -6503
- amps-python-client-5.3.4.1/docs/html/genindex.html +0 -1361
- amps-python-client-5.3.4.1/docs/html/index.html +0 -131
- amps-python-client-5.3.4.1/docs/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/html/py-modindex.html +0 -111
- amps-python-client-5.3.4.1/docs/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/deltas.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/error-handling.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/exceptions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/first-program.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/high-availability.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/installing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/introduction.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/python/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/python/html/_images/caution.svg +0 -25
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/advanced-topics.rst.txt +0 -398
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +0 -26
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/creating-commands.rst.txt +0 -159
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/deltas.rst.txt +0 -79
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/error-handling.rst.txt +0 -482
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/exceptions.rst.txt +0 -128
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/first-program.rst.txt +0 -142
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/high-availability.rst.txt +0 -876
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/installing.rst.txt +0 -184
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/introduction.rst.txt +0 -50
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +0 -32
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/performance-tips.rst.txt +0 -434
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/queues.rst.txt +0 -282
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/sow.rst.txt +0 -292
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/subscriptions.rst.txt +0 -374
- amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/utilities.rst.txt +0 -214
- amps-python-client-5.3.4.1/docs/python/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/python/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/python/html/chapters/advanced-topics.html +0 -447
- amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-compiler-list.html +0 -92
- amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-feature-table.html +0 -156
- amps-python-client-5.3.4.1/docs/python/html/chapters/creating-commands.html +0 -2837
- amps-python-client-5.3.4.1/docs/python/html/chapters/deltas.html +0 -169
- amps-python-client-5.3.4.1/docs/python/html/chapters/error-handling.html +0 -746
- amps-python-client-5.3.4.1/docs/python/html/chapters/exceptions.html +0 -272
- amps-python-client-5.3.4.1/docs/python/html/chapters/first-program.html +0 -499
- amps-python-client-5.3.4.1/docs/python/html/chapters/high-availability.html +0 -1014
- amps-python-client-5.3.4.1/docs/python/html/chapters/installing.html +0 -264
- amps-python-client-5.3.4.1/docs/python/html/chapters/introduction.html +0 -245
- amps-python-client-5.3.4.1/docs/python/html/chapters/moving-from-python-lite.html +0 -118
- amps-python-client-5.3.4.1/docs/python/html/chapters/performance-tips.html +0 -499
- amps-python-client-5.3.4.1/docs/python/html/chapters/queues.html +0 -352
- amps-python-client-5.3.4.1/docs/python/html/chapters/sow.html +0 -381
- amps-python-client-5.3.4.1/docs/python/html/chapters/subscriptions.html +0 -535
- amps-python-client-5.3.4.1/docs/python/html/chapters/utilities.html +0 -302
- amps-python-client-5.3.4.1/docs/python/html/genindex.html +0 -351
- amps-python-client-5.3.4.1/docs/python/html/index.html +0 -380
- amps-python-client-5.3.4.1/docs/python/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/python/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/python/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/crankitup.html +0 -271
- amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/equipment.html +0 -105
- amps-python-client-5.3.4.1/docs/python-quickstart/html/genindex.html +0 -97
- amps-python-client-5.3.4.1/docs/python-quickstart/html/index.html +0 -382
- amps-python-client-5.3.4.1/docs/python-quickstart/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/python-quickstart/html/search.html +0 -107
- amps-python-client-5.3.4.1/docs/python-quickstart/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/events.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/views.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/environment.pickle +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/doctrees/index.doctree +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/.buildinfo +0 -4
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/AMPS-Queues-Intro.svg +0 -1330
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/GeoRepl.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_async_ack.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_sync_ack.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/Hot-Hot-Replication.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/MessageOrdering.svg +0 -235
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF5.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF6.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF7.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF8.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub1.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub2.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWAndSubscribeAndReplace.svg +0 -684
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery1.svg +0 -402
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery2.svg +0 -505
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig1.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig2.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig3.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig4.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.svg +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/chicago_group.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_original_messages.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_update_message.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.svg +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/inline_view_conflation.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_pub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_sub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/queue_usage_overview.svg +0 -627
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_hub.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_scenario_with_ha.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_1.svg +0 -248
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_2.svg +0 -183
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_update_sequence.svg +0 -1
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.svg +0 -31
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.png +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.svg +0 -23
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/acks.rst.txt +0 -232
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/actions.rst.txt +0 -111
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +0 -358
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +0 -83
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +0 -11
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +0 -86
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +0 -9
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +0 -111
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +0 -269
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/daemon.rst.txt +0 -232
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/delta.rst.txt +0 -556
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/distribution.rst.txt +0 -186
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +0 -191
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/events.rst.txt +0 -39
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +0 -203
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/glossary.rst.txt +0 -101
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/ha.rst.txt +0 -465
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +0 -23
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/intro.rst.txt +0 -116
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/logging.rst.txt +0 -34
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +0 -1398
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +0 -326
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/oof.rst.txt +0 -312
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/operation.rst.txt +0 -27
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +0 -49
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/queues.rst.txt +0 -1351
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/replication.rst.txt +0 -1228
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/securing.rst.txt +0 -657
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow.rst.txt +0 -57
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +0 -25
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/transports.rst.txt +0 -291
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +0 -517
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/txlog.rst.txt +0 -62
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/usecases.rst.txt +0 -21
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/utilities.rst.txt +0 -62
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/views.rst.txt +0 -175
- amps-python-client-5.3.4.1/docs/user-guide/html/_sources/index.rst.txt +0 -110
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css +0 -192
- amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css.backup +0 -161
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/acks.html +0 -289
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/actions.html +0 -3782
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps-statistics.html +0 -439
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_expressions.html +0 -1552
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_functions.html +0 -1626
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/auxiliary_modules.html +0 -2548
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/config-file-shortcuts.html +0 -508
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/conflated_topics.html +0 -328
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/constructing-fields.html +0 -447
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/daemon.html +0 -295
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/delta.html +0 -609
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/distribution.html +0 -246
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/enrichment.html +0 -264
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/events.html +0 -449
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/file_format_versions.html +0 -229
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/glossary.html +0 -215
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/ha.html +0 -978
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/installing_and_starting.html +0 -357
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/intro.html +0 -572
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/logging.html +0 -972
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/messageTypes.html +0 -1280
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/monitoring.html +0 -718
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/oof.html +0 -341
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/operation.html +0 -1515
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/pub_sub.html +0 -934
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/queues.html +0 -1767
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/replication.html +0 -1777
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/securing.html +0 -697
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow.html +0 -1038
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow_queries.html +0 -621
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/spark.html +0 -819
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/transports.html +0 -352
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/troubleshooting.html +0 -530
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/txlog.html +0 -1013
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/usecases.html +0 -288
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/utilities.html +0 -133
- amps-python-client-5.3.4.1/docs/user-guide/html/chapters/views.html +0 -1120
- amps-python-client-5.3.4.1/docs/user-guide/html/genindex.html +0 -1261
- amps-python-client-5.3.4.1/docs/user-guide/html/index.html +0 -163
- amps-python-client-5.3.4.1/docs/user-guide/html/objects.inv +0 -0
- amps-python-client-5.3.4.1/docs/user-guide/html/search.html +0 -106
- amps-python-client-5.3.4.1/docs/user-guide/html/searchindex.js +0 -1
- amps-python-client-5.3.4.1/include/ampspy_bookmarkstore.hpp +0 -63
- amps-python-client-5.3.4.1/include/ampspy_compat.h +0 -63
- amps-python-client-5.3.4.1/include/ampspy_defs.hpp +0 -181
- amps-python-client-5.3.4.1/include/ampspy_recoverypointadapter.hpp +0 -52
- amps-python-client-5.3.4.1/include/ampspy_shims.hpp +0 -113
- amps-python-client-5.3.4.1/include/ampspy_type_object.hpp +0 -242
- amps-python-client-5.3.4.1/include/ampspy_types.hpp +0 -1139
- amps-python-client-5.3.4.1/include/ampspyver.h +0 -30
- amps-python-client-5.3.4.1/index.html +0 -66
- amps-python-client-5.3.4.1/samples/AMPSConsolePublisher.py +0 -59
- amps-python-client-5.3.4.1/samples/AMPSConsoleSubscriber.py +0 -63
- amps-python-client-5.3.4.1/samples/AMPSFIXBuilderPublisher.py +0 -71
- amps-python-client-5.3.4.1/samples/AMPSFIXShredderSubscriber.py +0 -69
- amps-python-client-5.3.4.1/samples/AMPSNVFIXBuilderPublisher.py +0 -71
- amps-python-client-5.3.4.1/samples/AMPSNVFIXShredderSubscriber.py +0 -67
- amps-python-client-5.3.4.1/samples/AMPSPublishForReplay.py +0 -81
- amps-python-client-5.3.4.1/samples/AMPSQueueConsumer.py +0 -69
- amps-python-client-5.3.4.1/samples/AMPSQueuePublisher.py +0 -59
- amps-python-client-5.3.4.1/samples/AMPSSOWConsolePublisher.py +0 -67
- amps-python-client-5.3.4.1/samples/AMPSSOWConsoleSubscriber.py +0 -77
- amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeConsoleSubscriber.py +0 -79
- amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeWithOOF.py +0 -108
- amps-python-client-5.3.4.1/samples/AMPSSubscribeForReplay.py +0 -128
- amps-python-client-5.3.4.1/samples/AMPSUpdateForOOF.py +0 -123
- amps-python-client-5.3.4.1/samples/CompositeMessagePublisher.py +0 -84
- amps-python-client-5.3.4.1/samples/CompositeMessageSubscriber.py +0 -87
- amps-python-client-5.3.4.1/samples/RandomServerChooser.py +0 -41
- amps-python-client-5.3.4.1/samples/sample.xml +0 -335
- amps-python-client-5.3.4.1/setup.py +0 -209
- amps-python-client-5.3.4.1/setup_amps.py +0 -94
- amps-python-client-5.3.4.1/src/ampspy_shims.cpp +0 -203
- amps-python-client-5.3.4.1/src/ampspy_type_object.cpp +0 -484
- amps-python-client-5.3.4.1/src/authenticator.cpp +0 -128
- amps-python-client-5.3.4.1/src/bookmarkstore.cpp +0 -238
- amps-python-client-5.3.4.1/src/client.cpp +0 -2430
- amps-python-client-5.3.4.1/src/client_docs.h +0 -956
- amps-python-client-5.3.4.1/src/cmessagehandler.cpp +0 -151
- amps-python-client-5.3.4.1/src/command.cpp +0 -164
- amps-python-client-5.3.4.1/src/command_docs.h +0 -194
- amps-python-client-5.3.4.1/src/compositemessagebuilder.cpp +0 -111
- amps-python-client-5.3.4.1/src/compositemessageparser.cpp +0 -146
- amps-python-client-5.3.4.1/src/conflatingrecoverypointadapter.cpp +0 -194
- amps-python-client-5.3.4.1/src/cpp/include/amps/BlockPublishStore.hpp +0 -2053
- amps-python-client-5.3.4.1/src/cpp/include/amps/BlockStore.hpp +0 -677
- amps-python-client-5.3.4.1/src/cpp/include/amps/BookmarkStore.hpp +0 -542
- amps-python-client-5.3.4.1/src/cpp/include/amps/Buffer.hpp +0 -214
- amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageBuilder.hpp +0 -174
- amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageParser.hpp +0 -151
- amps-python-client-5.3.4.1/src/cpp/include/amps/DefaultServerChooser.hpp +0 -162
- amps-python-client-5.3.4.1/src/cpp/include/amps/Field.hpp +0 -719
- amps-python-client-5.3.4.1/src/cpp/include/amps/HAClient.hpp +0 -370
- amps-python-client-5.3.4.1/src/cpp/include/amps/HAClientImpl.hpp +0 -460
- amps-python-client-5.3.4.1/src/cpp/include/amps/HybridPublishStore.hpp +0 -481
- amps-python-client-5.3.4.1/src/cpp/include/amps/LoggedBookmarkStore.hpp +0 -1255
- amps-python-client-5.3.4.1/src/cpp/include/amps/MMapBookmarkStore.hpp +0 -1283
- amps-python-client-5.3.4.1/src/cpp/include/amps/MMapStoreBuffer.hpp +0 -290
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryBookmarkStore.hpp +0 -1622
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryPublishStore.hpp +0 -66
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryStoreBuffer.hpp +0 -244
- amps-python-client-5.3.4.1/src/cpp/include/amps/MemorySubscriptionManager.hpp +0 -850
- amps-python-client-5.3.4.1/src/cpp/include/amps/Message.hpp +0 -1819
- amps-python-client-5.3.4.1/src/cpp/include/amps/MessageRouter.hpp +0 -618
- amps-python-client-5.3.4.1/src/cpp/include/amps/PublishStore.hpp +0 -158
- amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategy.hpp +0 -106
- amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +0 -317
- amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPoint.hpp +0 -323
- amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPointAdapter.hpp +0 -501
- amps-python-client-5.3.4.1/src/cpp/include/amps/RingBookmarkStore.hpp +0 -669
- amps-python-client-5.3.4.1/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +0 -490
- amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooser.hpp +0 -145
- amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooserImpl.hpp +0 -95
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps.h +0 -775
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_impl.h +0 -204
- amps-python-client-5.3.4.1/src/cpp/include/amps/amps_ssl.h +0 -78
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampscrc.hpp +0 -210
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsplusplus.hpp +0 -8817
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsuri.h +0 -84
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h +0 -41
- amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h.in +0 -41
- amps-python-client-5.3.4.1/src/cpp/include/amps/constants.hpp +0 -194
- amps-python-client-5.3.4.1/src/cpp/include/amps/util.hpp +0 -1692
- amps-python-client-5.3.4.1/src/cpp/src/amps_protocol.c +0 -688
- amps-python-client-5.3.4.1/src/cpp/src/amps_ssl.c +0 -489
- amps-python-client-5.3.4.1/src/cpp/src/atfork.c +0 -446
- amps-python-client-5.3.4.1/src/cpp/src/client.c +0 -483
- amps-python-client-5.3.4.1/src/cpp/src/message.c +0 -837
- amps-python-client-5.3.4.1/src/cpp/src/message_generated.h +0 -611
- amps-python-client-5.3.4.1/src/cpp/src/tcp.c +0 -1489
- amps-python-client-5.3.4.1/src/cpp/src/tcps.c +0 -1894
- amps-python-client-5.3.4.1/src/cpp/src/transports.c +0 -123
- amps-python-client-5.3.4.1/src/cpp/src/unix.c +0 -984
- amps-python-client-5.3.4.1/src/cpp/src/uri.c +0 -301
- amps-python-client-5.3.4.1/src/exponentialdelaystrategy.cpp +0 -137
- amps-python-client-5.3.4.1/src/failedwritehandler.cpp +0 -116
- amps-python-client-5.3.4.1/src/fixbuilder.cpp +0 -146
- amps-python-client-5.3.4.1/src/fixeddelaystrategy.cpp +0 -114
- amps-python-client-5.3.4.1/src/fixshredder.cpp +0 -105
- amps-python-client-5.3.4.1/src/fixshredder_docs.h +0 -38
- amps-python-client-5.3.4.1/src/haclient.cpp +0 -691
- amps-python-client-5.3.4.1/src/haclient_docs.h +0 -132
- amps-python-client-5.3.4.1/src/hybridpublishstore.cpp +0 -137
- amps-python-client-5.3.4.1/src/hybridpublishstore_docs.h +0 -31
- amps-python-client-5.3.4.1/src/memorybookmarkstore.cpp +0 -373
- amps-python-client-5.3.4.1/src/memorybookmarkstore_docs.h +0 -39
- amps-python-client-5.3.4.1/src/memorypublishstore.cpp +0 -160
- amps-python-client-5.3.4.1/src/memorypublishstore_docs.h +0 -32
- amps-python-client-5.3.4.1/src/message.cpp +0 -765
- amps-python-client-5.3.4.1/src/message_docs.h +0 -306
- amps-python-client-5.3.4.1/src/messagestream.cpp +0 -623
- amps-python-client-5.3.4.1/src/messagestream_docs.h +0 -45
- amps-python-client-5.3.4.1/src/mmapbookmarkstore.cpp +0 -422
- amps-python-client-5.3.4.1/src/nvfixbuilder.cpp +0 -160
- amps-python-client-5.3.4.1/src/nvfixbuilder_docs.h +0 -33
- amps-python-client-5.3.4.1/src/nvfixshredder.cpp +0 -99
- amps-python-client-5.3.4.1/src/nvfixshredder_docs.h +0 -39
- amps-python-client-5.3.4.1/src/publishstore.cpp +0 -183
- amps-python-client-5.3.4.1/src/raw_wrapper.cpp +0 -756
- amps-python-client-5.3.4.1/src/reason.cpp +0 -71
- amps-python-client-5.3.4.1/src/recoverypoint.cpp +0 -135
- amps-python-client-5.3.4.1/src/recoverypointadapter.cpp +0 -171
- amps-python-client-5.3.4.1/src/ringbookmarkstore.cpp +0 -360
- amps-python-client-5.3.4.1/src/serverchooser.cpp +0 -245
- amps-python-client-5.3.4.1/src/serverchooser_docs.h +0 -39
- amps-python-client-5.3.4.1/src/sowrecoverypointadapter.cpp +0 -248
- amps-python-client-5.3.4.1/src/store.cpp +0 -62
- amps-python-client-5.3.4.1/src/versioninfo.cpp +0 -175
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/HISTORY +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/LICENSE +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/README.md +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_sources/code.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/classic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/default.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/sidebar.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/caution.png +0 -0
- {amps-python-client-5.3.4.1/docs/command-reference → amps-python-client-5.3.4.2/docs/python}/html/_images/caution.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/connection_string.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/important.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/important.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/tip.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/tip.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/warning.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_sources/chapters/cpp-compiler-list.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_sources/chapters/crankitup.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_sources/chapters/equipment.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_sources/index.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/resources/custom.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/resources/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_sources/chapters/spark.rst.txt +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/ajax-loader.gif +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/alabaster.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/basic.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/comment-bright.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/comment-close.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/comment.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/doctools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/down-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/down.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/file.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/flag_logo.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/flag_logo.svg +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/jquery-3.1.0.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/jquery.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/minus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/plus.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/pygments.css +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/searchtools.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/underscore-1.3.1.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/underscore.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/up-pressed.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/up.png +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/websupport.js +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/src/cpp/include/amps/amps_generated.h +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/src/cpp/src/amps_protocol_generated.h +0 -0
- {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/src/cpp/src/makefile +0 -0
|
@@ -1,1552 +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>4. AMPS Expressions — 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="5. AMPS Functions" href="amps_functions.html" />
|
|
30
|
-
<link rel="prev" title="3. Publish and Subscribe" href="pub_sub.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="#">4. AMPS Expressions</a><ul>
|
|
49
|
-
<li><a class="reference internal" href="#expressions-overview">Expressions Overview</a></li>
|
|
50
|
-
<li><a class="reference internal" href="#expression-syntax">Expression Syntax</a><ul>
|
|
51
|
-
<li><a class="reference internal" href="#ug-expression-identifiers">Identifiers</a></li>
|
|
52
|
-
<li><a class="reference internal" href="#amps-data-types">AMPS Data Types</a><ul>
|
|
53
|
-
<li><a class="reference internal" href="#numeric-types-and-literals-in-amps-expressions">Numeric Types and Literals in AMPS Expressions</a></li>
|
|
54
|
-
<li><a class="reference internal" href="#type-promotion-for-numeric-types">Type Promotion for Numeric Types</a></li>
|
|
55
|
-
<li><a class="reference internal" href="#string-literals-in-amps-expressions">String Literals in AMPS Expressions</a></li>
|
|
56
|
-
<li><a class="reference internal" href="#null-nan-and-is-null">NULL, NaN and IS NULL</a></li>
|
|
57
|
-
</ul>
|
|
58
|
-
</li>
|
|
59
|
-
<li><a class="reference internal" href="#grouping-and-order-of-evaluation">Grouping and Order of Evaluation</a></li>
|
|
60
|
-
<li><a class="reference internal" href="#logical-operators">Logical Operators</a></li>
|
|
61
|
-
<li><a class="reference internal" href="#arithmetic-operators">Arithmetic Operators</a></li>
|
|
62
|
-
<li><a class="reference internal" href="#comparison-operators">Comparison Operators</a></li>
|
|
63
|
-
<li><a class="reference internal" href="#regular-expression-matching">Regular Expression Matching</a></li>
|
|
64
|
-
<li><a class="reference internal" href="#conditional-operators">Conditional Operators</a></li>
|
|
65
|
-
<li><a class="reference internal" href="#working-with-arrays">Working with Arrays</a></li>
|
|
66
|
-
<li><a class="reference internal" href="#working-with-timestamps">Working with Timestamps</a></li>
|
|
67
|
-
</ul>
|
|
68
|
-
</li>
|
|
69
|
-
<li><a class="reference internal" href="#using-regular-expressions-in-amps">Using Regular Expressions in AMPS</a><ul>
|
|
70
|
-
<li><a class="reference internal" href="#examples">Examples</a></li>
|
|
71
|
-
<li><a class="reference internal" href="#raw-strings">Raw Strings</a></li>
|
|
72
|
-
<li><a class="reference internal" href="#subscribing-to-a-set-of-topics-using-regular-expressions">Subscribing to a Set of Topics Using Regular Expressions</a></li>
|
|
73
|
-
</ul>
|
|
74
|
-
</li>
|
|
75
|
-
<li><a class="reference internal" href="#performance-considerations">Performance Considerations</a><ul>
|
|
76
|
-
<li><a class="reference internal" href="#use-short-circuiting">Use Short-Circuiting</a></li>
|
|
77
|
-
<li><a class="reference internal" href="#avoid-redundant-expressions">Avoid Redundant Expressions</a></li>
|
|
78
|
-
<li><a class="reference internal" href="#use-specialized-operators-for-simple-comparisons-use-like-when-necessary">Use Specialized Operators for Simple Comparisons, Use LIKE when Necessary</a></li>
|
|
79
|
-
<li><a class="reference internal" href="#optimize-for-partial-parsing">Optimize for Partial Parsing</a></li>
|
|
80
|
-
<li><a class="reference internal" href="#sow-queries-and-indexing">SOW Queries and Indexing</a></li>
|
|
81
|
-
</ul>
|
|
82
|
-
</li>
|
|
83
|
-
</ul>
|
|
84
|
-
</li>
|
|
85
|
-
</ul>
|
|
86
|
-
<div class="relations">
|
|
87
|
-
<h3>Related Topics</h3>
|
|
88
|
-
<ul>
|
|
89
|
-
<li><a href="../index.html">Documentation overview</a><ul>
|
|
90
|
-
<li>Previous: <a href="pub_sub.html" title="previous chapter">3. Publish and Subscribe</a></li>
|
|
91
|
-
<li>Next: <a href="amps_functions.html" title="next chapter">5. AMPS Functions</a></li>
|
|
92
|
-
</ul></li>
|
|
93
|
-
</ul>
|
|
94
|
-
</div>
|
|
95
|
-
<div id="searchbox" style="display: none" role="search">
|
|
96
|
-
<h3>Quick search</h3>
|
|
97
|
-
<form class="search" action="../search.html" method="get">
|
|
98
|
-
<div><input type="text" name="q" /></div>
|
|
99
|
-
<div><input type="submit" value="Go" /></div>
|
|
100
|
-
<input type="hidden" name="check_keywords" value="yes" />
|
|
101
|
-
<input type="hidden" name="area" value="default" />
|
|
102
|
-
</form>
|
|
103
|
-
</div>
|
|
104
|
-
<script type="text/javascript">$('#searchbox').show(0);</script>
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
<div class="documentwrapper">
|
|
108
|
-
<div class="bodywrapper">
|
|
109
|
-
<div class="body" role="main">
|
|
110
|
-
|
|
111
|
-
<div class="section" id="amps-expressions">
|
|
112
|
-
<span id="ug-amps-expressions"></span><span id="index-0"></span><span id="id1"></span><h1>4. AMPS Expressions<a class="headerlink" href="#amps-expressions" title="Permalink to this headline">¶</a></h1>
|
|
113
|
-
<p>AMPS includes an expression language that combines elements of XPath and
|
|
114
|
-
SQL-92’s <code class="docutils literal"><span class="pre">WHERE</span></code> clause. This expression language is used whenever the
|
|
115
|
-
AMPS server refers to the contents of a message, including:</p>
|
|
116
|
-
<ul class="simple">
|
|
117
|
-
<li>Content filtering</li>
|
|
118
|
-
<li>Constructing fields for message enrichment</li>
|
|
119
|
-
<li>Creating projected fields for views</li>
|
|
120
|
-
</ul>
|
|
121
|
-
<p>AMPS uses a common syntax for each of these purposes, and provides a
|
|
122
|
-
common set of operators and functions. AMPS also provides special
|
|
123
|
-
directives for message enrichment, and aggregation functions for
|
|
124
|
-
projecting views.</p>
|
|
125
|
-
<p>For example, when an expression is used as a content filter, any message
|
|
126
|
-
for which the expression returns <code class="docutils literal"><span class="pre">true</span></code> matches the content filter.
|
|
127
|
-
When an expression is used to construct a field for message enrichment
|
|
128
|
-
or view projection, the expression is evaluated and the result that the
|
|
129
|
-
expression returns is used as the content of the field.</p>
|
|
130
|
-
<div class="section" id="expressions-overview">
|
|
131
|
-
<h2>Expressions Overview<a class="headerlink" href="#expressions-overview" title="Permalink to this headline">¶</a></h2>
|
|
132
|
-
<p>The quickest way to learn AMPS expressions is to think of each as a
|
|
133
|
-
combination of identifiers that tell AMPS where to find data in a
|
|
134
|
-
message, and operators that tell AMPS what to do with that data. Each
|
|
135
|
-
AMPS expression produces a value. The way AMPS uses that value depends
|
|
136
|
-
on where the expression is used. For example, in a content filter, AMPS
|
|
137
|
-
uses the value of the expression to determine whether a message matches
|
|
138
|
-
the filter. When constructing a field, AMPS uses the value of the
|
|
139
|
-
expression as the contents of the field.</p>
|
|
140
|
-
<p>Consider a simple example of an expression used as a filter. Imagine
|
|
141
|
-
AMPS receives the following JSON message:</p>
|
|
142
|
-
<div class="highlight-javascript"><div class="highlight"><pre><span></span><span class="p">{</span><span class="s2">"name"</span><span class="o">:</span><span class="s2">"Gyro"</span><span class="p">,</span> <span class="s2">"job"</span><span class="o">:</span><span class="s2">"kitten"</span><span class="p">}</span>
|
|
143
|
-
</pre></div>
|
|
144
|
-
</div>
|
|
145
|
-
<p>Using an AMPS expression, you can easily construct a content filter that
|
|
146
|
-
matches the message:</p>
|
|
147
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">name</span> <span class="o">=</span> <span class="s1">'Gyro'</span>
|
|
148
|
-
</pre></div>
|
|
149
|
-
</div>
|
|
150
|
-
<p>There are three parts to this expression. The first part, <code class="docutils literal"><span class="pre">/name</span></code>, is
|
|
151
|
-
an <em>identifier</em> that tells AMPS to look for the contents of the <code class="docutils literal"><span class="pre">name</span></code>
|
|
152
|
-
field at the top level of the JSON document. The second part of the
|
|
153
|
-
filter, <code class="docutils literal"><span class="pre">=</span></code>, is the equality <em>operator</em>, which tells AMPS to compare
|
|
154
|
-
the values on either side of the operator and return <code class="docutils literal"><span class="pre">true</span></code> if the
|
|
155
|
-
values match. The final part of the filter, <code class="docutils literal"><span class="pre">'Gyro'</span></code>, is a string
|
|
156
|
-
<em>literal</em> for the equality operator to use in the comparison. When an
|
|
157
|
-
expression is used in a content filter, a message matches the filter
|
|
158
|
-
when the expression returns <code class="docutils literal"><span class="pre">true</span></code>. The expression returns <code class="docutils literal"><span class="pre">true</span></code>
|
|
159
|
-
for the sample message, so the sample message matches the filter.</p>
|
|
160
|
-
<p>The identifier syntax is a subset of XPath, as described in
|
|
161
|
-
<a class="reference internal" href="#ug-expression-identifiers"><span class="std std-ref">Identifiers</span></a>. The comparison syntax
|
|
162
|
-
is similar to SQL-92.</p>
|
|
163
|
-
<p>Notice that AMPS makes no rigid guarantees as to the number of times
|
|
164
|
-
a given expression is evaluated or when that evaluation will take
|
|
165
|
-
place. AMPS will evaluate the expression as needed.</p>
|
|
166
|
-
</div>
|
|
167
|
-
<div class="section" id="expression-syntax">
|
|
168
|
-
<span id="content-filter-syntax"></span><h2>Expression Syntax<a class="headerlink" href="#expression-syntax" title="Permalink to this headline">¶</a></h2>
|
|
169
|
-
<p>AMPS expressions are designed to work exactly as expected if you are
|
|
170
|
-
familiar with XPath path specifiers and SQL-92 predicates. This section
|
|
171
|
-
describes in detail how AMPS evaluates the syntax, operators, and
|
|
172
|
-
functions available in the AMPS expression language.</p>
|
|
173
|
-
<p>AMPS expressions combine the following elements:</p>
|
|
174
|
-
<ul class="simple">
|
|
175
|
-
<li><em>Identifiers</em> specify a field in a message. When evaluating an
|
|
176
|
-
expression, AMPS replaces identifiers with values from the message
|
|
177
|
-
or set of messages being evaluated.</li>
|
|
178
|
-
<li><em>Literal</em> values are explicit values in an AMPS expression, such as
|
|
179
|
-
<code class="docutils literal"><span class="pre">'IBM'</span></code> or <code class="docutils literal"><span class="pre">42</span></code></li>
|
|
180
|
-
<li><em>Operators</em> and <em>functions</em> such as <code class="docutils literal"><span class="pre">=</span></code>, <code class="docutils literal"><span class="pre"><</span></code>, <code class="docutils literal"><span class="pre">></span></code>, <code class="docutils literal"><span class="pre">*</span></code>, and
|
|
181
|
-
<code class="docutils literal"><span class="pre">UNIX_TIMESTAMP()</span></code></li>
|
|
182
|
-
</ul>
|
|
183
|
-
<p>Every AMPS expression produces a value. The way that AMPS uses the value
|
|
184
|
-
depends on the context in which AMPS evaluates the expression. For
|
|
185
|
-
example, if the expression is used for a filter, the message is
|
|
186
|
-
considered to match the filter when the expression returns <code class="docutils literal"><span class="pre">true</span></code>.
|
|
187
|
-
When an expression is used to project a field, the result of the
|
|
188
|
-
expression is used as the value of the projected field.</p>
|
|
189
|
-
<div class="section" id="ug-expression-identifiers">
|
|
190
|
-
<span id="index-1"></span><span id="identifiers"></span><h3>Identifiers<a class="headerlink" href="#ug-expression-identifiers" title="Permalink to this headline">¶</a></h3>
|
|
191
|
-
<p>AMPS identifiers use a subset of XPath to specify values in a message.
|
|
192
|
-
AMPS identifiers specify the value of an attribute or element in an XML
|
|
193
|
-
message, and the value of a field in a JSON, FIX or NVFIX message.
|
|
194
|
-
Given that the identifier syntax is only used to specify values, the subset
|
|
195
|
-
of XPath used by AMPS does not include wildcards, relative paths, array
|
|
196
|
-
manipulation, predicates or functions.</p>
|
|
197
|
-
<p>For example, when messages are in this XML format:</p>
|
|
198
|
-
<div class="highlight-xml"><div class="highlight"><pre><span></span><span class="nt"><Order</span> <span class="na">update=</span><span class="s">"full"</span><span class="nt">></span>
|
|
199
|
-
<span class="nt"><ClientID></span>12345<span class="nt"></ClientID></span>
|
|
200
|
-
<span class="nt"><Symbol></span>IBM<span class="nt"></Symbol></span>
|
|
201
|
-
<span class="nt"><OrderQty></span>1000<span class="nt"></OrderQty></span>
|
|
202
|
-
<span class="nt"></Order></span>
|
|
203
|
-
</pre></div>
|
|
204
|
-
</div>
|
|
205
|
-
<p>The following identifier specifies the <code class="docutils literal"><span class="pre">Symbol</span></code> element of an
|
|
206
|
-
<code class="docutils literal"><span class="pre">Order</span></code> message:</p>
|
|
207
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="n">Symbol</span>
|
|
208
|
-
</pre></div>
|
|
209
|
-
</div>
|
|
210
|
-
<p>The following identifier specifies the <code class="docutils literal"><span class="pre">update</span></code> attribute of an
|
|
211
|
-
<code class="docutils literal"><span class="pre">Order</span></code> message:</p>
|
|
212
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="nd">@update</span>
|
|
213
|
-
</pre></div>
|
|
214
|
-
</div>
|
|
215
|
-
<p>For FIX and NVFIX, you specify fields using <code class="docutils literal"><span class="pre">/</span></code> and the tag name. AMPS
|
|
216
|
-
interprets FIX and NVFIX messages as though they were an XML fragment
|
|
217
|
-
with no root element. For example, to specify the value of FIX tag
|
|
218
|
-
<code class="docutils literal"><span class="pre">55</span></code> (symbol), use the following identifier:</p>
|
|
219
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="mi">55</span>
|
|
220
|
-
</pre></div>
|
|
221
|
-
</div>
|
|
222
|
-
<p>Likewise, for JSON or other types that represent an object, you navigate
|
|
223
|
-
through the object structure using the <code class="docutils literal"><span class="pre">/</span></code> to indicate each level of
|
|
224
|
-
nesting.</p>
|
|
225
|
-
<p>AMPS only guarantees support for field identifiers that are valid <em>step names</em>
|
|
226
|
-
in XPath. For example, AMPS does not guarantee that it can process or
|
|
227
|
-
filter on a field named <code class="docutils literal"><span class="pre">Fits&Starts</span></code>.</p>
|
|
228
|
-
<p>AMPS also supports an optional <em>bracketed field identifier</em> syntax that extends
|
|
229
|
-
the characters available for field names. For example, the following step name:</p>
|
|
230
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">[</span><span class="o">/</span><span class="n">Not</span> <span class="n">Xpath</span> <span class="n">Name</span><span class="p">]</span>
|
|
231
|
-
</pre></div>
|
|
232
|
-
</div>
|
|
233
|
-
<p>refers to a field name of <code class="docutils literal"><span class="pre">Not</span> <span class="pre">Xpath</span> <span class="pre">Name</span></code> at the root level of the message.
|
|
234
|
-
This syntax allows spaces to be used in field names in AMPS expressions, even
|
|
235
|
-
though this is not a valid step name in XPath. Notice that not all message
|
|
236
|
-
types support field names with embedded spaces or other special characters.
|
|
237
|
-
For example, the <code class="docutils literal"><span class="pre">Not</span> <span class="pre">Xpath</span> <span class="pre">Name</span></code> identifier is not a valid element name
|
|
238
|
-
in XML, nor would it be a valid field name in Google Protocol Buffers.</p>
|
|
239
|
-
<p>AMPS checks the syntax of identifiers when parsing an expression. AMPS
|
|
240
|
-
does not try to predict whether an identifier will match messages within
|
|
241
|
-
a particular topic. It is not an error to submit an identifier that can
|
|
242
|
-
never match due to the limitations of the message type. For example,
|
|
243
|
-
AMPS allows you to use an identifier like <code class="docutils literal"><span class="pre">/OrderQty</span></code> in a filter submitted
|
|
244
|
-
for a FIX connection, even though FIX messages only use numeric tags, or an
|
|
245
|
-
identifier like <code class="docutils literal"><span class="pre">/DataPackage/RunDate</span></code> in a filter submitted for a BFlat
|
|
246
|
-
connection, even though BFlat does not support nested elements.</p>
|
|
247
|
-
<p>The message type is responsible for constructing a set of identifiers
|
|
248
|
-
from a message. In most cases, the mapping is simple. However, see the
|
|
249
|
-
documentation for the message type for details, or if the mapping is
|
|
250
|
-
unclear. For example, a <code class="docutils literal"><span class="pre">composite-local</span></code> message type adds the number
|
|
251
|
-
of the part to the beginning of each XPath within the part (so, a
|
|
252
|
-
top-level field of <code class="docutils literal"><span class="pre">/name</span></code> in the first part of the message has an
|
|
253
|
-
identifier of <code class="docutils literal"><span class="pre">/0/name</span></code>).</p>
|
|
254
|
-
</div>
|
|
255
|
-
<div class="section" id="amps-data-types">
|
|
256
|
-
<span id="ug-expressions-data-types"></span><span id="index-2"></span><h3>AMPS Data Types<a class="headerlink" href="#amps-data-types" title="Permalink to this headline">¶</a></h3>
|
|
257
|
-
<p>Each value in AMPS is assigned a data type when the message type module
|
|
258
|
-
parses the value. AMPS operators and functions attempt to convert values
|
|
259
|
-
into compatible types, based on the type of operation. For example, the
|
|
260
|
-
<code class="docutils literal"><span class="pre">*</span></code> operator (multiplication) will attempt to convert all values to
|
|
261
|
-
numeric values, while the <code class="docutils literal"><span class="pre">CONCAT</span></code> function (string concatenation)
|
|
262
|
-
will attempt to convert all values to strings. In effect, a value in
|
|
263
|
-
AMPS can be transparently treated as any type to which it can be
|
|
264
|
-
meaningfully converted.</p>
|
|
265
|
-
<p>Internally, AMPS uses the data types in the table below. As mentioned above, the
|
|
266
|
-
message type module is responsible for assigning the type of a value
|
|
267
|
-
from an incoming message as part of the parsing process. For some types,
|
|
268
|
-
such as JSON, XML, FIX and NVFIX, the parser infers the type of the
|
|
269
|
-
value from the field. For other types, such as MessagePack, BFLAT,
|
|
270
|
-
Google Protocol Buffers or BSON, the message itself contains information
|
|
271
|
-
about the type of the field.</p>
|
|
272
|
-
<p>As mentioned above, the AMPS expression language does not limit the value
|
|
273
|
-
to the type assigned by the message type module. Instead, a value in AMPS
|
|
274
|
-
can be used in any context.</p>
|
|
275
|
-
<p>For example, given the following JSON document:</p>
|
|
276
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">{</span><span class="s2">"a"</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">"b"</span><span class="p">:</span><span class="s2">"47"</span><span class="p">}</span>
|
|
277
|
-
</pre></div>
|
|
278
|
-
</div>
|
|
279
|
-
<p>The values of <code class="docutils literal"><span class="pre">/a</span></code> and <code class="docutils literal"><span class="pre">/b</span></code> can be used as either string values or
|
|
280
|
-
numeric values. AMPS will automatically convert these values as necessary,
|
|
281
|
-
and AMPS considers the string or numeric representation to
|
|
282
|
-
be equally correct and valid.</p>
|
|
283
|
-
<p>The following table lists the data types in the AMPS expression language:</p>
|
|
284
|
-
<table border="1" class="colwidths-given docutils" id="id3">
|
|
285
|
-
<caption><span class="caption-text"><em>AMPS data types</em></span><a class="headerlink" href="#id3" title="Permalink to this table">¶</a></caption>
|
|
286
|
-
<colgroup>
|
|
287
|
-
<col width="10%" />
|
|
288
|
-
<col width="30%" />
|
|
289
|
-
<col width="60%" />
|
|
290
|
-
</colgroup>
|
|
291
|
-
<thead valign="bottom">
|
|
292
|
-
<tr class="row-odd"><th class="head">Type</th>
|
|
293
|
-
<th class="head">Description</th>
|
|
294
|
-
<th class="head">Untyped Message Examples</th>
|
|
295
|
-
</tr>
|
|
296
|
-
</thead>
|
|
297
|
-
<tbody valign="top">
|
|
298
|
-
<tr class="row-even"><td>NULL</td>
|
|
299
|
-
<td>Unknown, untyped value
|
|
300
|
-
(SQL-92 semantics)</td>
|
|
301
|
-
<td><p class="first">[no field provided]</p>
|
|
302
|
-
<p>NVFIX: <code class="docutils literal"><span class="pre">a=<SOH></span></code></p>
|
|
303
|
-
<p>JSON: <code class="docutils literal"><span class="pre">{"a":null}</span></code></p>
|
|
304
|
-
<p class="last">XML: <code class="docutils literal"><span class="pre"><a/></span></code></p>
|
|
305
|
-
</td>
|
|
306
|
-
</tr>
|
|
307
|
-
<tr class="row-odd"><td>Boolean</td>
|
|
308
|
-
<td>True (<code class="docutils literal"><span class="pre">1</span></code>) or false
|
|
309
|
-
(<code class="docutils literal"><span class="pre">0</span></code>)</td>
|
|
310
|
-
<td>JSON: <code class="docutils literal"><span class="pre">{"e":true}</span></code></td>
|
|
311
|
-
</tr>
|
|
312
|
-
<tr class="row-even"><td>Integer</td>
|
|
313
|
-
<td>Signed 64-bit integer or
|
|
314
|
-
unsigned 64-bit integer
|
|
315
|
-
for values > LONG_MAX</td>
|
|
316
|
-
<td><p class="first">NVFIX: <code class="docutils literal"><span class="pre">b=24</span></code></p>
|
|
317
|
-
<p>JSON: <code class="docutils literal"><span class="pre">{"b":24}</span></code></p>
|
|
318
|
-
<p class="last">XML: <code class="docutils literal"><span class="pre"><b>24</b></span></code></p>
|
|
319
|
-
</td>
|
|
320
|
-
</tr>
|
|
321
|
-
<tr class="row-odd"><td>Floating
|
|
322
|
-
Point
|
|
323
|
-
Number</td>
|
|
324
|
-
<td>64-bit floating point
|
|
325
|
-
number</td>
|
|
326
|
-
<td><p class="first">NVFIX: <code class="docutils literal"><span class="pre">c=24.0</span></code></p>
|
|
327
|
-
<p>JSON: <code class="docutils literal"><span class="pre">{"c":24.0}</span></code></p>
|
|
328
|
-
<p class="last">XML: <code class="docutils literal"><span class="pre"><c>24.0</c></span></code></p>
|
|
329
|
-
</td>
|
|
330
|
-
</tr>
|
|
331
|
-
<tr class="row-even"><td>String</td>
|
|
332
|
-
<td><p class="first">Arbitrary sequence of
|
|
333
|
-
bytes of a specific length</p>
|
|
334
|
-
<p class="last">An empty string is
|
|
335
|
-
considered to be <code class="docutils literal"><span class="pre">NULL</span></code></p>
|
|
336
|
-
</td>
|
|
337
|
-
<td><p class="first">NVFIX:
|
|
338
|
-
<code class="docutils literal"><span class="pre">d=Grilled</span> <span class="pre">cheese</span> <span class="pre">sandwich<SOH></span></code></p>
|
|
339
|
-
<p>JSON:
|
|
340
|
-
<code class="docutils literal"><span class="pre">{"d":"Grilled</span> <span class="pre">cheese</span> <span class="pre">sandwich"}</span></code></p>
|
|
341
|
-
<p class="last">XML:
|
|
342
|
-
<code class="docutils literal"><span class="pre"><d>Grilled</span> <span class="pre">cheese</span> <span class="pre">sandwich</d></span></code></p>
|
|
343
|
-
</td>
|
|
344
|
-
</tr>
|
|
345
|
-
</tbody>
|
|
346
|
-
</table>
|
|
347
|
-
<div class="section" id="numeric-types-and-literals-in-amps-expressions">
|
|
348
|
-
<span id="ug-numeric-types"></span><span id="index-3"></span><h4>Numeric Types and Literals in AMPS Expressions<a class="headerlink" href="#numeric-types-and-literals-in-amps-expressions" title="Permalink to this headline">¶</a></h4>
|
|
349
|
-
<p>Numeric values in AMPS are always <em>typed</em> as either integers or floating
|
|
350
|
-
point values. All numeric types that are less than or equal to the
|
|
351
|
-
LONG_MAX limit in AMPS are signed, otherwise, the numeric type is unsigned.
|
|
352
|
-
AMPS message types convert the original numeric types (or original
|
|
353
|
-
representation for message types that do not have typed values) into the
|
|
354
|
-
internal AMPS type system for the purposes of expression evaluation.</p>
|
|
355
|
-
<p>Within expressions, integer values are all numerals, with no decimal
|
|
356
|
-
point, and can have a value in the same range as a 64-bit integer. For
|
|
357
|
-
example:</p>
|
|
358
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="mi">42</span>
|
|
359
|
-
<span class="mi">149</span>
|
|
360
|
-
<span class="o">-</span><span class="mi">273</span>
|
|
361
|
-
<span class="mi">18446744073709551610</span>
|
|
362
|
-
</pre></div>
|
|
363
|
-
</div>
|
|
364
|
-
<p>Within expressions, all numerals with a decimal point are floating-point
|
|
365
|
-
numbers. AMPS interprets these numerals as double-precision floating
|
|
366
|
-
point values. For example:</p>
|
|
367
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="mf">3.1415926535</span>
|
|
368
|
-
<span class="mf">98.6</span>
|
|
369
|
-
<span class="o">-</span><span class="mf">273.0</span>
|
|
370
|
-
</pre></div>
|
|
371
|
-
</div>
|
|
372
|
-
<p>or, in scientific notation:</p>
|
|
373
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="mf">31.4e-1</span>
|
|
374
|
-
<span class="mf">6.022E23</span>
|
|
375
|
-
<span class="mf">2.998e8</span>
|
|
376
|
-
</pre></div>
|
|
377
|
-
</div>
|
|
378
|
-
<p>AMPS automatically converts strings that contain numeric values to
|
|
379
|
-
numbers when strings are used with an operator, function or
|
|
380
|
-
comparison that expects a numeric value.</p>
|
|
381
|
-
</div>
|
|
382
|
-
<div class="section" id="type-promotion-for-numeric-types">
|
|
383
|
-
<h4>Type Promotion for Numeric Types<a class="headerlink" href="#type-promotion-for-numeric-types" title="Permalink to this headline">¶</a></h4>
|
|
384
|
-
<p>AMPS uses the following rules for type promotion when evaluating numeric
|
|
385
|
-
expressions:</p>
|
|
386
|
-
<ol class="arabic simple">
|
|
387
|
-
<li>If any of the values in the expression is <code class="docutils literal"><span class="pre">NaN</span></code>, the result is
|
|
388
|
-
<code class="docutils literal"><span class="pre">NaN</span></code>.</li>
|
|
389
|
-
<li>Otherwise, if any of the values in the expression is floating point,
|
|
390
|
-
the result is floating point.</li>
|
|
391
|
-
<li>Otherwise, all of the values in the expression are integers, and the
|
|
392
|
-
result is an integer.</li>
|
|
393
|
-
</ol>
|
|
394
|
-
<p>Notice that, for division in particular, the results returned are
|
|
395
|
-
affected by the type of the values. For example, the expression
|
|
396
|
-
<code class="docutils literal"><span class="pre">1</span> <span class="pre">/</span> <span class="pre">5</span></code> evaluates to <code class="docutils literal"><span class="pre">0</span></code> since the result is interpreted as an
|
|
397
|
-
integer. In comparison, the expression <code class="docutils literal"><span class="pre">1.0</span> <span class="pre">/</span> <span class="pre">5</span></code> evaluates to <code class="docutils literal"><span class="pre">0.2</span></code>
|
|
398
|
-
since the result is interpreted as a floating point value.</p>
|
|
399
|
-
<p>When a function or operator that expects a numeric type is provided with
|
|
400
|
-
a string, AMPS will attempt to convert string values to numeric types as
|
|
401
|
-
necessary. When converting string values, AMPS recognizes the same numeric
|
|
402
|
-
formats in message data as are supported in the AMPS expression language
|
|
403
|
-
(see <a class="reference internal" href="#ug-expression-literal-values"><span class="std std-ref">String Literals</span></a>). If the
|
|
404
|
-
string is in an unrecognized format, AMPS converts the string as
|
|
405
|
-
<code class="docutils literal"><span class="pre">NaN</span></code>.</p>
|
|
406
|
-
</div>
|
|
407
|
-
<div class="section" id="string-literals-in-amps-expressions">
|
|
408
|
-
<span id="ug-expression-literal-values"></span><h4>String Literals in AMPS Expressions<a class="headerlink" href="#string-literals-in-amps-expressions" title="Permalink to this headline">¶</a></h4>
|
|
409
|
-
<p>When creating expressions for AMPS, string literals are indicated with
|
|
410
|
-
single or double quotes. For example:</p>
|
|
411
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="n">Instrmt</span><span class="o">/</span><span class="nd">@Sym</span> <span class="o">=</span> <span class="s1">'IBM'</span>
|
|
412
|
-
</pre></div>
|
|
413
|
-
</div>
|
|
414
|
-
<p>AMPS supports the following escape sequences within string literals:</p>
|
|
415
|
-
<table border="1" class="docutils" id="id4">
|
|
416
|
-
<caption><span class="caption-text"><em>Escape Sequences</em></span><a class="headerlink" href="#id4" title="Permalink to this table">¶</a></caption>
|
|
417
|
-
<colgroup>
|
|
418
|
-
<col width="50%" />
|
|
419
|
-
<col width="50%" />
|
|
420
|
-
</colgroup>
|
|
421
|
-
<thead valign="bottom">
|
|
422
|
-
<tr class="row-odd"><th class="head"><strong>Escape Sequence</strong></th>
|
|
423
|
-
<th class="head"><strong>Definition</strong></th>
|
|
424
|
-
</tr>
|
|
425
|
-
</thead>
|
|
426
|
-
<tbody valign="top">
|
|
427
|
-
<tr class="row-even"><td>\a</td>
|
|
428
|
-
<td>Alert</td>
|
|
429
|
-
</tr>
|
|
430
|
-
<tr class="row-odd"><td>\b</td>
|
|
431
|
-
<td>Backspace</td>
|
|
432
|
-
</tr>
|
|
433
|
-
<tr class="row-even"><td>\t</td>
|
|
434
|
-
<td>Horizontal tab</td>
|
|
435
|
-
</tr>
|
|
436
|
-
<tr class="row-odd"><td>\n</td>
|
|
437
|
-
<td>Newline</td>
|
|
438
|
-
</tr>
|
|
439
|
-
<tr class="row-even"><td>\f</td>
|
|
440
|
-
<td>Form feed</td>
|
|
441
|
-
</tr>
|
|
442
|
-
<tr class="row-odd"><td>\r</td>
|
|
443
|
-
<td>Carriage return</td>
|
|
444
|
-
</tr>
|
|
445
|
-
<tr class="row-even"><td>\xHH</td>
|
|
446
|
-
<td>Hexadecimal digit where H is (0..9,a..f,A..F)</td>
|
|
447
|
-
</tr>
|
|
448
|
-
<tr class="row-odd"><td>\OOO</td>
|
|
449
|
-
<td>Octal Digit (0..7)</td>
|
|
450
|
-
</tr>
|
|
451
|
-
</tbody>
|
|
452
|
-
</table>
|
|
453
|
-
<p>Additionally, any character which follows a backslash will be treated as
|
|
454
|
-
a literal character.</p>
|
|
455
|
-
<p>AMPS string operations have no restrictions on character set, and
|
|
456
|
-
correctly handle embedded <code class="docutils literal"><span class="pre">NULL</span></code> characters (<code class="docutils literal"><span class="pre">\x00</span></code>) and characters
|
|
457
|
-
outside of the 7-bit ASCII range. AMPS string operations are not
|
|
458
|
-
unicode-aware.</p>
|
|
459
|
-
</div>
|
|
460
|
-
<div class="section" id="null-nan-and-is-null">
|
|
461
|
-
<span id="ug-null-nan"></span><span id="index-4"></span><h4>NULL, NaN and IS NULL<a class="headerlink" href="#null-nan-and-is-null" title="Permalink to this headline">¶</a></h4>
|
|
462
|
-
<p>XPath expressions are considered to be <code class="docutils literal"><span class="pre">NULL</span></code> when they evaluate to an
|
|
463
|
-
empty or nonexistent field reference. <code class="docutils literal"><span class="pre">NULL</span></code> values follow SQL-92
|
|
464
|
-
semantics.</p>
|
|
465
|
-
<p>This means that comparisons with <code class="docutils literal"><span class="pre">NULL</span></code> are never true
|
|
466
|
-
(in other words, even if <code class="docutils literal"><span class="pre">/a</span></code> is <code class="docutils literal"><span class="pre">NULL</span></code>, <code class="docutils literal"><span class="pre">/a</span> <span class="pre">!=</span> <span class="pre">NULL</span></code> is false
|
|
467
|
-
and <code class="docutils literal"><span class="pre">/a</span> <span class="pre">==</span> <span class="pre">NULL</span></code> is also false).</p>
|
|
468
|
-
<p>In numeric expressions where the operands or results are not a valid
|
|
469
|
-
number, the XPath expression evaluates to <code class="docutils literal"><span class="pre">NaN</span></code> (not a number). The rules
|
|
470
|
-
for applying the <code class="docutils literal"><span class="pre">AND</span></code> and <code class="docutils literal"><span class="pre">OR</span></code> operators against <code class="docutils literal"><span class="pre">NULL</span></code> and <code class="docutils literal"><span class="pre">NaN</span></code>
|
|
471
|
-
values are outlined in the tables below:</p>
|
|
472
|
-
<span id="table-logical-and"></span><table border="1" class="docutils" id="id5">
|
|
473
|
-
<caption><span class="caption-text"><em>Logical AND with NULL/NaN Values</em></span><a class="headerlink" href="#id5" title="Permalink to this table">¶</a></caption>
|
|
474
|
-
<colgroup>
|
|
475
|
-
<col width="25%" />
|
|
476
|
-
<col width="25%" />
|
|
477
|
-
<col width="25%" />
|
|
478
|
-
<col width="25%" />
|
|
479
|
-
</colgroup>
|
|
480
|
-
<thead valign="bottom">
|
|
481
|
-
<tr class="row-odd"><th class="head"><strong>Operand1</strong></th>
|
|
482
|
-
<th class="head"> </th>
|
|
483
|
-
<th class="head"><strong>Operand2</strong></th>
|
|
484
|
-
<th class="head"><strong>Result</strong></th>
|
|
485
|
-
</tr>
|
|
486
|
-
</thead>
|
|
487
|
-
<tbody valign="top">
|
|
488
|
-
<tr class="row-even"><td>TRUE</td>
|
|
489
|
-
<td>(AND)</td>
|
|
490
|
-
<td>NULL</td>
|
|
491
|
-
<td>NULL</td>
|
|
492
|
-
</tr>
|
|
493
|
-
<tr class="row-odd"><td>FALSE</td>
|
|
494
|
-
<td>(AND)</td>
|
|
495
|
-
<td>NULL</td>
|
|
496
|
-
<td>FALSE</td>
|
|
497
|
-
</tr>
|
|
498
|
-
<tr class="row-even"><td>NULL</td>
|
|
499
|
-
<td>(AND)</td>
|
|
500
|
-
<td>NULL</td>
|
|
501
|
-
<td>NULL</td>
|
|
502
|
-
</tr>
|
|
503
|
-
<tr class="row-odd"><td>NULL</td>
|
|
504
|
-
<td>(AND)</td>
|
|
505
|
-
<td>TRUE</td>
|
|
506
|
-
<td>NULL</td>
|
|
507
|
-
</tr>
|
|
508
|
-
<tr class="row-even"><td>NULL</td>
|
|
509
|
-
<td>(AND)</td>
|
|
510
|
-
<td>FALSE</td>
|
|
511
|
-
<td>NULL</td>
|
|
512
|
-
</tr>
|
|
513
|
-
</tbody>
|
|
514
|
-
</table>
|
|
515
|
-
<span id="table-logical-or"></span><table border="1" class="docutils" id="id6">
|
|
516
|
-
<caption><span class="caption-text"><em>Logical OR with NULL/NaN Values</em></span><a class="headerlink" href="#id6" title="Permalink to this table">¶</a></caption>
|
|
517
|
-
<colgroup>
|
|
518
|
-
<col width="25%" />
|
|
519
|
-
<col width="25%" />
|
|
520
|
-
<col width="25%" />
|
|
521
|
-
<col width="25%" />
|
|
522
|
-
</colgroup>
|
|
523
|
-
<thead valign="bottom">
|
|
524
|
-
<tr class="row-odd"><th class="head"><strong>Operand1</strong></th>
|
|
525
|
-
<th class="head"> </th>
|
|
526
|
-
<th class="head"><strong>Operand2</strong></th>
|
|
527
|
-
<th class="head"><strong>Result</strong></th>
|
|
528
|
-
</tr>
|
|
529
|
-
</thead>
|
|
530
|
-
<tbody valign="top">
|
|
531
|
-
<tr class="row-even"><td>TRUE</td>
|
|
532
|
-
<td>(OR)</td>
|
|
533
|
-
<td>NULL</td>
|
|
534
|
-
<td>TRUE</td>
|
|
535
|
-
</tr>
|
|
536
|
-
<tr class="row-odd"><td>FALSE</td>
|
|
537
|
-
<td>(OR)</td>
|
|
538
|
-
<td>NULL</td>
|
|
539
|
-
<td>NULL</td>
|
|
540
|
-
</tr>
|
|
541
|
-
<tr class="row-even"><td>NULL</td>
|
|
542
|
-
<td>(OR)</td>
|
|
543
|
-
<td>NULL</td>
|
|
544
|
-
<td>NULL</td>
|
|
545
|
-
</tr>
|
|
546
|
-
<tr class="row-odd"><td>NULL</td>
|
|
547
|
-
<td>(OR)</td>
|
|
548
|
-
<td>TRUE</td>
|
|
549
|
-
<td>NULL</td>
|
|
550
|
-
</tr>
|
|
551
|
-
<tr class="row-even"><td>NULL</td>
|
|
552
|
-
<td>(OR)</td>
|
|
553
|
-
<td>FALSE</td>
|
|
554
|
-
<td>NULL</td>
|
|
555
|
-
</tr>
|
|
556
|
-
</tbody>
|
|
557
|
-
</table>
|
|
558
|
-
<p>Likewise, direct comparisons with <code class="docutils literal"><span class="pre">NULL</span></code> are not ever true (so, if <code class="docutils literal"><span class="pre">/b</span></code> is NULL,
|
|
559
|
-
<code class="docutils literal"><span class="pre">/b</span> <span class="pre">==</span> <span class="pre">NULL</span></code> does not produce a true value, and neither does <code class="docutils literal"><span class="pre">/b</span> <span class="pre">!=</span> <span class="pre">NULL</span></code>).
|
|
560
|
-
AMPS, like SQL-92, provides an <code class="docutils literal"><span class="pre">IS</span> <span class="pre">NULL</span></code> predicate for testing whether a value is
|
|
561
|
-
<code class="docutils literal"><span class="pre">NULL</span></code>, and an <code class="docutils literal"><span class="pre">IS</span> <span class="pre">NOT</span> <span class="pre">NULL</span></code> predicate for testing whether a value is not <code class="docutils literal"><span class="pre">NULL</span></code>.</p>
|
|
562
|
-
<p>There also exists an
|
|
563
|
-
<code class="docutils literal"><span class="pre">IS</span> <span class="pre">NAN</span></code> predicate for checking that a value is <code class="docutils literal"><span class="pre">NaN</span></code> (not a
|
|
564
|
-
number.)</p>
|
|
565
|
-
<div class="admonition caution">
|
|
566
|
-
<p class="first admonition-title">Caution</p>
|
|
567
|
-
<p>To reliably check for existence of a <code class="docutils literal"><span class="pre">NULL</span></code> value, you must
|
|
568
|
-
use the <code class="docutils literal"><span class="pre">IS</span> <span class="pre">NULL</span></code> predicate such as the filter:
|
|
569
|
-
<code class="docutils literal"><span class="pre">/optionalField</span> <span class="pre">IS</span> <span class="pre">NULL</span></code></p>
|
|
570
|
-
<p class="last">To reliably check that a value is not <code class="docutils literal"><span class="pre">NULL</span></code>, you must use
|
|
571
|
-
the <code class="docutils literal"><span class="pre">IS</span> <span class="pre">NOT</span> <span class="pre">NULL</span></code> predicate or negate the value of an
|
|
572
|
-
<code class="docutils literal"><span class="pre">IS</span> <span class="pre">NULL</span></code> test: <code class="docutils literal"><span class="pre">/optionalField</span> <span class="pre">IS</span> <span class="pre">NOT</span> <span class="pre">NULL</span></code> and
|
|
573
|
-
<code class="docutils literal"><span class="pre">NOT</span> <span class="pre">/optionalField</span> <span class="pre">IS</span> <span class="pre">NULL</span></code> are equivalent</p>
|
|
574
|
-
</div>
|
|
575
|
-
<p id="index-5">AMPS also provides a <code class="docutils literal"><span class="pre">COALESCE()</span></code> function that accepts a set
|
|
576
|
-
of values and returns the first value that is not NULL. For example,
|
|
577
|
-
given the following filter expression:</p>
|
|
578
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">COALESCE</span><span class="p">(</span><span class="o">/</span><span class="n">userCategory</span><span class="p">,</span>
|
|
579
|
-
<span class="o">/</span><span class="n">employeeCategory</span><span class="p">,</span>
|
|
580
|
-
<span class="o">/</span><span class="n">vendorCategory</span><span class="p">,</span>
|
|
581
|
-
<span class="s1">'restricted'</span><span class="p">)</span> <span class="o">!=</span> <span class="s1">'restricted'</span>
|
|
582
|
-
</pre></div>
|
|
583
|
-
</div>
|
|
584
|
-
<p>AMPS will return the first value that is not <code class="docutils literal"><span class="pre">NULL</span></code>, and compare that
|
|
585
|
-
value to the constant string <code class="docutils literal"><span class="pre">'restricted'</span></code>. Notice that, to make the
|
|
586
|
-
intent of the filter clear, this example provides a constant value for
|
|
587
|
-
AMPS to return from the <code class="docutils literal"><span class="pre">COALESCE</span></code> if all of the field values are
|
|
588
|
-
<code class="docutils literal"><span class="pre">NULL</span></code>.</p>
|
|
589
|
-
<p>The <code class="docutils literal"><span class="pre">COALESCE</span></code> function, like other functions in AMPS, is not array-aware.
|
|
590
|
-
This means that when one of the XPath expressions provided to <code class="docutils literal"><span class="pre">COALESCE</span></code>
|
|
591
|
-
specifies an array in the original message, AMPS provides the <em>first item in
|
|
592
|
-
the array</em> to the <code class="docutils literal"><span class="pre">COALESCE</span></code> function. See <a class="reference internal" href="#working-with-arrays">Working With Arrays</a> for details.</p>
|
|
593
|
-
</div>
|
|
594
|
-
</div>
|
|
595
|
-
<div class="section" id="grouping-and-order-of-evaluation">
|
|
596
|
-
<span id="index-6"></span><h3>Grouping and Order of Evaluation<a class="headerlink" href="#grouping-and-order-of-evaluation" title="Permalink to this headline">¶</a></h3>
|
|
597
|
-
<p>AMPS expressions allow you to group parts of the expression using
|
|
598
|
-
parentheses. Parts of an expression inside parentheses are evaluated
|
|
599
|
-
together. 60East recommends using parentheses to group independent parts
|
|
600
|
-
of an expression to ensure that the expression is evaluated in the expected
|
|
601
|
-
order. For example, in this expression:</p>
|
|
602
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">(</span> <span class="o">/</span><span class="n">counter</span> <span class="o">%</span> <span class="mi">3</span> <span class="p">)</span> <span class="o">==</span> <span class="mi">0</span>
|
|
603
|
-
</pre></div>
|
|
604
|
-
</div>
|
|
605
|
-
<p>The clause <code class="docutils literal"><span class="pre">/counter</span> <span class="pre">%</span> <span class="pre">3</span></code> is evaluated first, and the result of that
|
|
606
|
-
evaluation is compared to <code class="docutils literal"><span class="pre">0</span></code>.</p>
|
|
607
|
-
<p>Within a group, elements are evaluated left to right in precedence
|
|
608
|
-
order. For example, given the filter below:</p>
|
|
609
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">(</span><span class="n">expression1</span> <span class="n">OR</span> <span class="n">expression2</span> <span class="n">AND</span> <span class="n">expression3</span><span class="p">)</span> <span class="n">OR</span> <span class="p">(</span><span class="n">expression4</span> <span class="n">AND</span>
|
|
610
|
-
<span class="n">NOT</span> <span class="n">expression5</span><span class="p">)</span> <span class="o">...</span>
|
|
611
|
-
</pre></div>
|
|
612
|
-
</div>
|
|
613
|
-
<p>AMPS evaluates <code class="docutils literal"><span class="pre">expression2</span></code>, then <code class="docutils literal"><span class="pre">expression3</span></code> (since <code class="docutils literal"><span class="pre">AND</span></code> has
|
|
614
|
-
higher precedence than <code class="docutils literal"><span class="pre">OR</span></code>), and if they evaluate to false, then
|
|
615
|
-
<code class="docutils literal"><span class="pre">expression1</span></code> will be evaluated.</p>
|
|
616
|
-
<p>AMPS does not guarantee that all parts of an expression will be
|
|
617
|
-
evaluated if the result of an expression can be determined after only
|
|
618
|
-
evaluating part of the expression. For example, given the expression:</p>
|
|
619
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">A_FUNCTION</span><span class="p">(</span><span class="o">/</span><span class="n">a</span><span class="p">)</span> <span class="n">OR</span> <span class="n">B_FUNCTION</span><span class="p">(</span><span class="o">/</span><span class="n">b</span><span class="p">)</span>
|
|
620
|
-
</pre></div>
|
|
621
|
-
</div>
|
|
622
|
-
<p>AMPS only guarantees that <code class="docutils literal"><span class="pre">B_FUNCTION(/b)</span></code> will be evaluated if
|
|
623
|
-
<code class="docutils literal"><span class="pre">A_FUNCTION(/a)</span></code> returns <code class="docutils literal"><span class="pre">false</span></code>.</p>
|
|
624
|
-
</div>
|
|
625
|
-
<div class="section" id="logical-operators">
|
|
626
|
-
<h3>Logical Operators<a class="headerlink" href="#logical-operators" title="Permalink to this headline">¶</a></h3>
|
|
627
|
-
<p>The logical operators are <code class="docutils literal"><span class="pre">NOT</span></code>, <code class="docutils literal"><span class="pre">AND</span></code>, and <code class="docutils literal"><span class="pre">OR</span></code>, in order of
|
|
628
|
-
precedence. These operators have the usual Boolean logic semantics.</p>
|
|
629
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="n">Instrmt</span><span class="o">/</span><span class="nd">@Sym</span> <span class="o">=</span> <span class="s1">'IBM'</span> <span class="n">OR</span> <span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="n">Instrmt</span><span class="o">/</span><span class="nd">@Sym</span> <span class="o">=</span> <span class="s1">'MSFT'</span>
|
|
630
|
-
</pre></div>
|
|
631
|
-
</div>
|
|
632
|
-
<p>As with other operators, you can use parentheses to group operators and
|
|
633
|
-
affect the order of evaluation.</p>
|
|
634
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">(</span><span class="o">/</span><span class="n">orderType</span> <span class="o">=</span> <span class="s1">'rush'</span> <span class="n">AND</span> <span class="o">/</span><span class="n">customerType</span> <span class="n">IN</span> <span class="p">(</span><span class="s1">'silver'</span><span class="p">,</span> <span class="s1">'gold'</span><span class="p">)</span> <span class="p">)</span>
|
|
635
|
-
<span class="n">OR</span> <span class="o">/</span><span class="n">customerType</span> <span class="o">=</span> <span class="s1">'platinum'</span>
|
|
636
|
-
</pre></div>
|
|
637
|
-
</div>
|
|
638
|
-
</div>
|
|
639
|
-
<div class="section" id="arithmetic-operators">
|
|
640
|
-
<h3>Arithmetic Operators<a class="headerlink" href="#arithmetic-operators" title="Permalink to this headline">¶</a></h3>
|
|
641
|
-
<p>AMPS supports the arithmetic operators <code class="docutils literal"><span class="pre">+</span></code>, <code class="docutils literal"><span class="pre">-</span></code>, <code class="docutils literal"><span class="pre">*</span></code>, <code class="docutils literal"><span class="pre">/</span></code>,
|
|
642
|
-
<code class="docutils literal"><span class="pre">%</span></code>, and <code class="docutils literal"><span class="pre">MOD</span></code> in expressions. The result of arithmetic operators
|
|
643
|
-
where one of the operands is <code class="docutils literal"><span class="pre">NULL</span></code> is undefined and evaluates to
|
|
644
|
-
<code class="docutils literal"><span class="pre">NULL</span></code>.</p>
|
|
645
|
-
<p>AMPS distinguishes between floating point and integral types. When an
|
|
646
|
-
arithmetic operator uses two different types, AMPS will convert the
|
|
647
|
-
integral type to a floating point value as described in
|
|
648
|
-
<a class="reference internal" href="#ug-numeric-types"><span class="std std-ref">Numeric Types and Literals</span></a>.</p>
|
|
649
|
-
<p>Examples of filter expressions using arithmetic operators:</p>
|
|
650
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="mi">6</span> <span class="o">*</span> <span class="o">/</span><span class="mi">14</span> <span class="o"><</span> <span class="mi">1000</span>
|
|
651
|
-
|
|
652
|
-
<span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="nd">@Qty</span> <span class="o">*</span> <span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="nd">@Prc</span> <span class="o">>=</span> <span class="mi">1000000</span>
|
|
653
|
-
</pre></div>
|
|
654
|
-
</div>
|
|
655
|
-
<p>AMPS numeric types are signed, and the AMPS arithmetic operators
|
|
656
|
-
correctly handle negative numbers. The <code class="docutils literal"><span class="pre">MOD</span></code> and <code class="docutils literal"><span class="pre">%</span></code> operators
|
|
657
|
-
preserve the sign of the first argument to the operator. That is,
|
|
658
|
-
<code class="docutils literal"><span class="pre">-5</span> <span class="pre">%</span> <span class="pre">3</span></code> produces a result of <code class="docutils literal"><span class="pre">-2</span></code>, while <code class="docutils literal"><span class="pre">5</span> <span class="pre">%</span> <span class="pre">-3</span></code> produces a
|
|
659
|
-
result of <code class="docutils literal"><span class="pre">2</span></code>.</p>
|
|
660
|
-
<div class="admonition caution">
|
|
661
|
-
<p class="first admonition-title">Caution</p>
|
|
662
|
-
<p class="last">When using mathematical operators in conjunction with filters,
|
|
663
|
-
be careful about the placement of the operator. Some operators
|
|
664
|
-
are used in the XPath expression as well as for mathematical
|
|
665
|
-
operation (for example, the <code class="docutils literal"><span class="pre">'/'</span></code> operator in division).
|
|
666
|
-
Therefore, it is important to separate mathematical operators
|
|
667
|
-
with white space to prevent interpretation as an XPath
|
|
668
|
-
expression.</p>
|
|
669
|
-
</div>
|
|
670
|
-
</div>
|
|
671
|
-
<div class="section" id="comparison-operators">
|
|
672
|
-
<h3>Comparison Operators<a class="headerlink" href="#comparison-operators" title="Permalink to this headline">¶</a></h3>
|
|
673
|
-
<p>The comparison operators can be loosely grouped into equality
|
|
674
|
-
comparisons and range comparisons. The basic equality comparison
|
|
675
|
-
operators, in precedence order, are <code class="docutils literal"><span class="pre">==</span></code>, <code class="docutils literal"><span class="pre">=</span></code>, <code class="docutils literal"><span class="pre">></span></code>, <code class="docutils literal"><span class="pre">>=</span></code>, <code class="docutils literal"><span class="pre"><</span></code>,
|
|
676
|
-
<code class="docutils literal"><span class="pre"><=</span></code>, <code class="docutils literal"><span class="pre">!=</span></code>, and <code class="docutils literal"><span class="pre"><></span></code>. The <code class="docutils literal"><span class="pre">==</span></code> comparison and the <code class="docutils literal"><span class="pre">=</span></code> comparison
|
|
677
|
-
are treated as the same operator and produce the same results.</p>
|
|
678
|
-
<p>If these binary operators are applied to two operands of different
|
|
679
|
-
types, AMPS attempts to convert strings to numbers. If conversion
|
|
680
|
-
succeeds, AMPS uses the numeric values. If conversion fails because the
|
|
681
|
-
string cannot be meaningfully converted to a number, strings are always
|
|
682
|
-
considered to be greater than numbers. The operators consider an empty
|
|
683
|
-
string to be <code class="docutils literal"><span class="pre">NULL</span></code>.</p>
|
|
684
|
-
<p>The following table shows some examples of how AMPS compares different
|
|
685
|
-
types.</p>
|
|
686
|
-
<table border="1" class="docutils" id="id7">
|
|
687
|
-
<caption><span class="caption-text"><em>Comparison Operator Examples</em></span><a class="headerlink" href="#id7" title="Permalink to this table">¶</a></caption>
|
|
688
|
-
<colgroup>
|
|
689
|
-
<col width="50%" />
|
|
690
|
-
<col width="50%" />
|
|
691
|
-
</colgroup>
|
|
692
|
-
<thead valign="bottom">
|
|
693
|
-
<tr class="row-odd"><th class="head">Expression</th>
|
|
694
|
-
<th class="head">Result</th>
|
|
695
|
-
</tr>
|
|
696
|
-
</thead>
|
|
697
|
-
<tbody valign="top">
|
|
698
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">1</span> <span class="pre"><</span> <span class="pre">2</span></code></td>
|
|
699
|
-
<td>TRUE</td>
|
|
700
|
-
</tr>
|
|
701
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">10</span> <span class="pre"><</span> <span class="pre">'2'</span></code></td>
|
|
702
|
-
<td>FALSE, ‘2’ can be converted to a
|
|
703
|
-
number</td>
|
|
704
|
-
</tr>
|
|
705
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">'2.000'</span> <span class="pre"><></span> <span class="pre">'2.0'</span></code></td>
|
|
706
|
-
<td>TRUE, no conversion to numbers since
|
|
707
|
-
both are strings</td>
|
|
708
|
-
</tr>
|
|
709
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">2</span> <span class="pre">=</span> <span class="pre">2.0</span></code></td>
|
|
710
|
-
<td>TRUE, numeric comparison</td>
|
|
711
|
-
</tr>
|
|
712
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">10</span> <span class="pre"><</span> <span class="pre">'Crank</span> <span class="pre">It</span> <span class="pre">Up'</span></code></td>
|
|
713
|
-
<td>TRUE, strings are greater than
|
|
714
|
-
numbers</td>
|
|
715
|
-
</tr>
|
|
716
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">10</span> <span class="pre"><</span> <span class="pre">''</span></code></td>
|
|
717
|
-
<td>FALSE, an empty string is considered
|
|
718
|
-
to be NULL</td>
|
|
719
|
-
</tr>
|
|
720
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">10</span> <span class="pre">></span> <span class="pre">''</span></code></td>
|
|
721
|
-
<td>FALSE, an empty string is considered
|
|
722
|
-
to be NULL</td>
|
|
723
|
-
</tr>
|
|
724
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">''</span> <span class="pre">=</span> <span class="pre">''</span></code></td>
|
|
725
|
-
<td>FALSE, an empty string is considered
|
|
726
|
-
to be NULL</td>
|
|
727
|
-
</tr>
|
|
728
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">''</span> <span class="pre">IS</span> <span class="pre">NULL</span></code></td>
|
|
729
|
-
<td>TRUE, an empty string is considered
|
|
730
|
-
to be NULL</td>
|
|
731
|
-
</tr>
|
|
732
|
-
</tbody>
|
|
733
|
-
</table>
|
|
734
|
-
<p>There are also set and range comparison operators. The <code class="docutils literal"><span class="pre">BETWEEN</span></code> operator
|
|
735
|
-
can be used to check the range values.</p>
|
|
736
|
-
<div class="admonition tip">
|
|
737
|
-
<p class="first admonition-title">Tip</p>
|
|
738
|
-
<p class="last">The range used in the <code class="docutils literal"><span class="pre">BETWEEN</span></code> operator is inclusive of both
|
|
739
|
-
operands, meaning the expression <code class="docutils literal"><span class="pre">/A</span> <span class="pre">BETWEEN</span> <span class="pre">0</span> <span class="pre">AND</span> <span class="pre">100</span></code> is
|
|
740
|
-
equivalent to <code class="docutils literal"><span class="pre">/A</span> <span class="pre">>=</span> <span class="pre">0</span> <span class="pre">AND</span> <span class="pre">/A</span> <span class="pre"><=</span> <span class="pre">100</span></code></p>
|
|
741
|
-
</div>
|
|
742
|
-
<p>For example:</p>
|
|
743
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="n">OrdQty</span><span class="o">/</span><span class="nd">@Qty</span> <span class="n">BETWEEN</span> <span class="mi">0</span> <span class="n">AND</span> <span class="mi">10000</span>
|
|
744
|
-
|
|
745
|
-
<span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="nd">@Px</span> <span class="n">NOT</span> <span class="n">BETWEEN</span> <span class="mf">90.0</span> <span class="n">AND</span> <span class="mf">90.5</span>
|
|
746
|
-
|
|
747
|
-
<span class="p">(</span><span class="o">/</span><span class="n">price</span> <span class="o">*</span> <span class="o">/</span><span class="n">qty</span><span class="p">)</span> <span class="n">BETWEEN</span> <span class="mi">0</span> <span class="n">AND</span> <span class="mi">100000</span>
|
|
748
|
-
</pre></div>
|
|
749
|
-
</div>
|
|
750
|
-
<p>The <code class="docutils literal"><span class="pre">IN</span></code> operator can be used to perform membership operations on sets
|
|
751
|
-
of values. The <code class="docutils literal"><span class="pre">IN</span></code> operator returns true when the value on the left
|
|
752
|
-
of the <code class="docutils literal"><span class="pre">IN</span></code> appears in the set of values in the <code class="docutils literal"><span class="pre">IN</span></code> clause. For
|
|
753
|
-
example:</p>
|
|
754
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">Trade</span><span class="o">/</span><span class="n">OwnerID</span> <span class="n">NOT</span> <span class="n">IN</span> <span class="p">(</span><span class="s1">'JMB'</span><span class="p">,</span> <span class="s1">'BLH'</span><span class="p">,</span> <span class="s1">'CJB'</span><span class="p">)</span>
|
|
755
|
-
|
|
756
|
-
<span class="o">/</span><span class="mi">21964</span> <span class="n">IN</span> <span class="p">(</span><span class="o">/</span><span class="mi">14</span><span class="o">*</span><span class="mi">5</span><span class="p">,</span> <span class="o">/</span><span class="mi">6</span><span class="o">*/</span><span class="mi">14</span><span class="p">,</span> <span class="mi">1000</span><span class="p">,</span> <span class="mi">2000</span><span class="p">)</span>
|
|
757
|
-
|
|
758
|
-
<span class="o">/</span><span class="n">customer</span> <span class="n">IN</span> <span class="p">(</span><span class="s1">'Bob'</span><span class="p">,</span> <span class="s1">'Phil'</span><span class="p">,</span> <span class="s1">'Brent'</span><span class="p">)</span>
|
|
759
|
-
</pre></div>
|
|
760
|
-
</div>
|
|
761
|
-
<p>The <code class="docutils literal"><span class="pre">IN</span></code> operator returns true for the set of records that would be
|
|
762
|
-
returned by an equivalent set of <code class="docutils literal"><span class="pre">=</span></code> comparisons joined by <code class="docutils literal"><span class="pre">OR</span></code>. The
|
|
763
|
-
following two statements return the same set of records:</p>
|
|
764
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">pet</span> <span class="n">IN</span> <span class="p">(</span><span class="s1">'puppy'</span><span class="p">,</span> <span class="s1">'kitten'</span><span class="p">,</span> <span class="s1">'goldfish'</span><span class="p">)</span>
|
|
765
|
-
</pre></div>
|
|
766
|
-
</div>
|
|
767
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">(</span><span class="o">/</span><span class="n">pet</span> <span class="o">=</span> <span class="s1">'puppy'</span><span class="p">)</span> <span class="n">OR</span> <span class="p">(</span><span class="o">/</span><span class="n">pet</span> <span class="o">=</span> <span class="s1">'kitten'</span><span class="p">)</span> <span class="n">OR</span> <span class="p">(</span><span class="o">/</span><span class="n">pet</span> <span class="o">=</span> <span class="s1">'goldfish)</span>
|
|
768
|
-
</pre></div>
|
|
769
|
-
</div>
|
|
770
|
-
<p>This equivalence means that <code class="docutils literal"><span class="pre">NULL</span></code> values in either the field being
|
|
771
|
-
evaluated, or the set of values provided to the <code class="docutils literal"><span class="pre">IN</span></code> clause, always return
|
|
772
|
-
false.</p>
|
|
773
|
-
<p>This also means that, for string values, the <code class="docutils literal"><span class="pre">IN</span></code> operator performs exact,
|
|
774
|
-
case-sensitive matching.</p>
|
|
775
|
-
<div class="admonition tip">
|
|
776
|
-
<p class="first admonition-title">Tip</p>
|
|
777
|
-
<p class="last">When evaluating against a set of values, the <code class="docutils literal"><span class="pre">IN</span></code> operator
|
|
778
|
-
typically provides better performance than using a set of <code class="docutils literal"><span class="pre">OR</span></code>
|
|
779
|
-
operators. That is, a filter written as
|
|
780
|
-
<code class="docutils literal"><span class="pre">/firstName</span> <span class="pre">IN</span> <span class="pre">('Joe',</span> <span class="pre">'Kathleen',</span> <span class="pre">'Frank',</span> <span class="pre">'Cindy',</span> <span class="pre">'Mortimer')</span></code>
|
|
781
|
-
will typically perform better than an equivalent filter written
|
|
782
|
-
as
|
|
783
|
-
<code class="docutils literal"><span class="pre">/firstName</span> <span class="pre">=</span> <span class="pre">'Joe'</span> <span class="pre">OR</span> <span class="pre">/firstName</span> <span class="pre">=</span> <span class="pre">'Kathleen'</span> <span class="pre">OR</span> <span class="pre">/firstName</span> <span class="pre">=</span>
|
|
784
|
-
<span class="pre">'Frank'</span> <span class="pre">OR</span> <span class="pre">/firstName</span> <span class="pre">=</span> <span class="pre">'Cindy'</span> <span class="pre">OR</span> <span class="pre">/firstName</span> <span class="pre">=</span> <span class="pre">'Mortimer'</span></code>.</p>
|
|
785
|
-
</div>
|
|
786
|
-
</div>
|
|
787
|
-
<div class="section" id="regular-expression-matching">
|
|
788
|
-
<span id="ug-filter-syntax-regular-expression"></span><h3>Regular Expression Matching<a class="headerlink" href="#regular-expression-matching" title="Permalink to this headline">¶</a></h3>
|
|
789
|
-
<p>AMPS also provides a regular expression comparison operator, <code class="docutils literal"><span class="pre">LIKE</span></code>,
|
|
790
|
-
to provide regular expression matching on string values. A <em>pattern</em> is
|
|
791
|
-
used for the right side of the <code class="docutils literal"><span class="pre">LIKE</span></code> operator. A pattern must be
|
|
792
|
-
provided as a literal, quoted value. For more on regular expressions and
|
|
793
|
-
the <code class="docutils literal"><span class="pre">LIKE</span></code> comparison operator, please see the section on
|
|
794
|
-
<a class="reference internal" href="#ug-regular-expressions"><span class="std std-ref">Using Regular Expressions in AMPS</span></a>.</p>
|
|
795
|
-
<p>The string comparison operators described in the section called
|
|
796
|
-
<a class="reference internal" href="amps_functions.html#ug-string-comparison-functions"><span class="std std-ref">String Comparison Functions</span></a> are usually more
|
|
797
|
-
efficient than equivalent <code class="docutils literal"><span class="pre">LIKE</span></code> expressions, particularly when used
|
|
798
|
-
to compare multiple literal patterns, or when the only purpose of the
|
|
799
|
-
regular expression is to perform case-insensitive matching. Use <code class="docutils literal"><span class="pre">LIKE</span></code>
|
|
800
|
-
operations when it is not practical to represent the filter condition
|
|
801
|
-
with the string comparison operators.</p>
|
|
802
|
-
<table border="1" class="docutils" id="id8">
|
|
803
|
-
<caption><span class="caption-text"><em>AMPS regular expression comparison</em></span><a class="headerlink" href="#id8" title="Permalink to this table">¶</a></caption>
|
|
804
|
-
<colgroup>
|
|
805
|
-
<col width="33%" />
|
|
806
|
-
<col width="33%" />
|
|
807
|
-
<col width="33%" />
|
|
808
|
-
</colgroup>
|
|
809
|
-
<thead valign="bottom">
|
|
810
|
-
<tr class="row-odd"><th class="head">Function or Operator</th>
|
|
811
|
-
<th class="head">Parameters</th>
|
|
812
|
-
<th class="head">Description</th>
|
|
813
|
-
</tr>
|
|
814
|
-
</thead>
|
|
815
|
-
<tbody valign="top">
|
|
816
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">LIKE</span></code></td>
|
|
817
|
-
<td><p class="first">The string to be
|
|
818
|
-
compared</p>
|
|
819
|
-
<p class="last">The pattern to evaluate
|
|
820
|
-
the string against</p>
|
|
821
|
-
</td>
|
|
822
|
-
<td><p class="first"><em>Case-sensitive</em></p>
|
|
823
|
-
<p>Returns true if the
|
|
824
|
-
string to be compared
|
|
825
|
-
matches the pattern.</p>
|
|
826
|
-
<p>For example, the
|
|
827
|
-
following filter uses a
|
|
828
|
-
PCRE backreference to
|
|
829
|
-
return true for any
|
|
830
|
-
message where the
|
|
831
|
-
<code class="docutils literal"><span class="pre">/state</span></code> field
|
|
832
|
-
contains two identical
|
|
833
|
-
characters in a row.</p>
|
|
834
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">state</span> <span class="n">LIKE</span> <span class="s1">'(.)</span><span class="se">\1</span><span class="s1">'</span>
|
|
835
|
-
</pre></div>
|
|
836
|
-
</div>
|
|
837
|
-
<p class="last">This operator is not
|
|
838
|
-
unicode-aware.</p>
|
|
839
|
-
</td>
|
|
840
|
-
</tr>
|
|
841
|
-
</tbody>
|
|
842
|
-
</table>
|
|
843
|
-
</div>
|
|
844
|
-
<div class="section" id="conditional-operators">
|
|
845
|
-
<span id="index-7"></span><h3>Conditional Operators<a class="headerlink" href="#conditional-operators" title="Permalink to this headline">¶</a></h3>
|
|
846
|
-
<p>AMPS contains support for a ternary conditional <code class="docutils literal"><span class="pre">IF</span></code> operator which
|
|
847
|
-
allows for a Boolean condition to be evaluated to <code class="docutils literal"><span class="pre">true</span></code> or <code class="docutils literal"><span class="pre">false</span></code>,
|
|
848
|
-
and will return one of the two parameters. The general format of the
|
|
849
|
-
<code class="docutils literal"><span class="pre">IF</span></code> statement is</p>
|
|
850
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">IF</span> <span class="p">(</span><span class="n">BOOLEAN_CONDITIONAL</span><span class="p">,</span> <span class="n">VALUE_TRUE</span><span class="p">,</span> <span class="n">VALUE_FALSE</span><span class="p">)</span>
|
|
851
|
-
</pre></div>
|
|
852
|
-
</div>
|
|
853
|
-
<p>In this example, the <code class="docutils literal"><span class="pre">BOOLEAN_CONDITIONAL</span></code> will be evaluated, and if
|
|
854
|
-
the result is true, the <code class="docutils literal"><span class="pre">VALUE_TRUE</span></code> value will be returned otherwise
|
|
855
|
-
the <code class="docutils literal"><span class="pre">VALUE_FALSE</span></code> will be returned.</p>
|
|
856
|
-
<table border="1" class="docutils" id="id9">
|
|
857
|
-
<caption><span class="caption-text"><em>AMPS if statement</em></span><a class="headerlink" href="#id9" title="Permalink to this table">¶</a></caption>
|
|
858
|
-
<colgroup>
|
|
859
|
-
<col width="33%" />
|
|
860
|
-
<col width="33%" />
|
|
861
|
-
<col width="33%" />
|
|
862
|
-
</colgroup>
|
|
863
|
-
<thead valign="bottom">
|
|
864
|
-
<tr class="row-odd"><th class="head">Function or Operator</th>
|
|
865
|
-
<th class="head">Parameters</th>
|
|
866
|
-
<th class="head">Description</th>
|
|
867
|
-
</tr>
|
|
868
|
-
</thead>
|
|
869
|
-
<tbody valign="top">
|
|
870
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">IF</span></code></td>
|
|
871
|
-
<td><p class="first">Conditional expression</p>
|
|
872
|
-
<p>Value to return if
|
|
873
|
-
conditional expression
|
|
874
|
-
is true</p>
|
|
875
|
-
<p class="last">Value to return if
|
|
876
|
-
conditional expression
|
|
877
|
-
is false</p>
|
|
878
|
-
</td>
|
|
879
|
-
<td><p class="first">Evaluate the conditional
|
|
880
|
-
expression and return
|
|
881
|
-
one of the two input
|
|
882
|
-
values based on the
|
|
883
|
-
results of the
|
|
884
|
-
expression.</p>
|
|
885
|
-
<p class="last">The AMPS expression
|
|
886
|
-
engine can conditionally
|
|
887
|
-
evaluate the terms
|
|
888
|
-
provided to the <code class="docutils literal"><span class="pre">IF</span></code>
|
|
889
|
-
statement in version
|
|
890
|
-
5.3.4 and greater.
|
|
891
|
-
In previous versions of
|
|
892
|
-
AMPS, all expressions
|
|
893
|
-
provided to the <code class="docutils literal"><span class="pre">IF</span></code>
|
|
894
|
-
statement were fully
|
|
895
|
-
evaluated before the
|
|
896
|
-
<code class="docutils literal"><span class="pre">IF</span></code> statement
|
|
897
|
-
was evaluated.</p>
|
|
898
|
-
</td>
|
|
899
|
-
</tr>
|
|
900
|
-
</tbody>
|
|
901
|
-
</table>
|
|
902
|
-
<p>For example:</p>
|
|
903
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">SUM</span><span class="p">(</span> <span class="n">IF</span><span class="p">((</span> <span class="p">(</span><span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="n">OrdQty</span><span class="o">/</span><span class="nd">@Qty</span> <span class="o">></span> <span class="mi">500</span><span class="p">)</span> <span class="n">AND</span>
|
|
904
|
-
<span class="p">(</span><span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="n">Instrmt</span><span class="o">/</span><span class="nd">@Sym</span> <span class="o">=</span><span class="s1">'MSFT'</span><span class="p">)),</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span> <span class="p">))</span>
|
|
905
|
-
</pre></div>
|
|
906
|
-
</div>
|
|
907
|
-
<p>The above example returns a count of the total number of orders that
|
|
908
|
-
have been placed where the symbol is MSFT and the order contains a
|
|
909
|
-
quantity more than 500.</p>
|
|
910
|
-
<p>The <code class="docutils literal"><span class="pre">IF</span></code> operator can also be used to evaluate results to determine if
|
|
911
|
-
results are <code class="docutils literal"><span class="pre">NULL</span></code> or <code class="docutils literal"><span class="pre">NaN</span></code>. This is useful for calculating aggregates
|
|
912
|
-
where some values may be <code class="docutils literal"><span class="pre">NULL</span></code> or <code class="docutils literal"><span class="pre">NaN</span></code>. The <code class="docutils literal"><span class="pre">NULL</span></code> and <code class="docutils literal"><span class="pre">NaN</span></code> values are
|
|
913
|
-
discussed in more detail in the section called
|
|
914
|
-
<a class="reference internal" href="#ug-null-nan"><span class="std std-ref">NULL, NaN, and IS NULL</span></a>.</p>
|
|
915
|
-
<p>For example:</p>
|
|
916
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">SUM</span><span class="p">(</span><span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="n">Instrmt</span><span class="o">/</span><span class="nd">@Qty</span> <span class="o">*</span> <span class="n">IF</span><span class="p">(</span>
|
|
917
|
-
<span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="n">Instmt</span><span class="o">/</span><span class="nd">@Price</span> <span class="n">IS</span> <span class="n">NOT</span> <span class="n">NULL</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
|
|
918
|
-
</pre></div>
|
|
919
|
-
</div>
|
|
920
|
-
</div>
|
|
921
|
-
<div class="section" id="working-with-arrays">
|
|
922
|
-
<h3>Working with Arrays<a class="headerlink" href="#working-with-arrays" title="Permalink to this headline">¶</a></h3>
|
|
923
|
-
<p>AMPS supports filters that operate on arrays in messages. There are two
|
|
924
|
-
simple principles behind how AMPS treats arrays:</p>
|
|
925
|
-
<ol class="arabic simple" id="index-8">
|
|
926
|
-
<li><em>Binary operators</em> that yield <code class="docutils literal"><span class="pre">true</span></code> or <code class="docutils literal"><span class="pre">false</span></code>
|
|
927
|
-
(for example, <code class="docutils literal"><span class="pre">=</span></code>, <code class="docutils literal"><span class="pre"><</span></code>, <code class="docutils literal"><span class="pre">LIKE</span></code>) are <em>array aware</em>, as is the
|
|
928
|
-
<code class="docutils literal"><span class="pre">IN</span></code> operator. These operators work on arrays as a whole, and evaluate
|
|
929
|
-
every element in the array.</li>
|
|
930
|
-
<li><em>Arithmetic operators</em>, <em>functions</em>, <em>user-defined functions</em> and other
|
|
931
|
-
<em>scalar operators</em>, are <em>not</em> array aware, and use the first element in
|
|
932
|
-
the array.</li>
|
|
933
|
-
</ol>
|
|
934
|
-
<p>With these simple principles, you can predict how AMPS will
|
|
935
|
-
evaluate an expression that uses an array. For any operator, an empty
|
|
936
|
-
array evaluates to <code class="docutils literal"><span class="pre">NULL</span></code>.</p>
|
|
937
|
-
<p>Let’s look at some examples. For the purposes of this section, we will
|
|
938
|
-
consider the following JSON document:</p>
|
|
939
|
-
<div class="highlight-javascript"><div class="highlight"><pre><span></span><span class="p">{</span>
|
|
940
|
-
<span class="s2">"data"</span> <span class="o">:</span> <span class="p">[</span><span class="mf">1</span><span class="p">,</span> <span class="mf">2</span><span class="p">,</span> <span class="mf">3</span><span class="p">,</span> <span class="s2">"zebra"</span><span class="p">,</span> <span class="mf">5</span><span class="p">],</span>
|
|
941
|
-
<span class="s2">"other"</span> <span class="o">:</span> <span class="p">[</span><span class="mf">14</span><span class="p">,</span> <span class="mf">34</span><span class="p">,</span> <span class="mf">23</span><span class="p">,</span> <span class="mf">5</span><span class="p">]</span>
|
|
942
|
-
<span class="p">}</span>
|
|
943
|
-
</pre></div>
|
|
944
|
-
</div>
|
|
945
|
-
<p>While these arrays are presented using JSON format for simplicity, the
|
|
946
|
-
same principles apply to arrays in other message formats.</p>
|
|
947
|
-
<p>Here are some examples of ways to use an array in an AMPS filter:</p>
|
|
948
|
-
<ol class="arabic">
|
|
949
|
-
<li><p class="first">Determining if any element in an array meets a criteria. To determine
|
|
950
|
-
this, you provide the identifier for the array, and use a comparison
|
|
951
|
-
operator.</p>
|
|
952
|
-
<table border="1" class="docutils" id="id10">
|
|
953
|
-
<caption><span class="caption-text"><em>Match if any element matches</em></span><a class="headerlink" href="#id10" title="Permalink to this table">¶</a></caption>
|
|
954
|
-
<colgroup>
|
|
955
|
-
<col width="50%" />
|
|
956
|
-
<col width="50%" />
|
|
957
|
-
</colgroup>
|
|
958
|
-
<thead valign="bottom">
|
|
959
|
-
<tr class="row-odd"><th class="head">Filter</th>
|
|
960
|
-
<th class="head">Evaluates as</th>
|
|
961
|
-
</tr>
|
|
962
|
-
</thead>
|
|
963
|
-
<tbody valign="top">
|
|
964
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/data</span> <span class="pre">=</span> <span class="pre">1</span></code></td>
|
|
965
|
-
<td>TRUE, <code class="docutils literal"><span class="pre">/data</span></code> contains <code class="docutils literal"><span class="pre">1</span></code></td>
|
|
966
|
-
</tr>
|
|
967
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/data</span> <span class="pre">=</span> <span class="pre">'zebra'</span></code></td>
|
|
968
|
-
<td>TRUE, <code class="docutils literal"><span class="pre">/data</span></code> contains <code class="docutils literal"><span class="pre">'zebra'</span></code></td>
|
|
969
|
-
</tr>
|
|
970
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/data</span> <span class="pre">!=</span> <span class="pre">'zebra'</span></code></td>
|
|
971
|
-
<td>TRUE, <code class="docutils literal"><span class="pre">/data</span></code> contains an element
|
|
972
|
-
that is not <code class="docutils literal"><span class="pre">'zebra'</span></code></td>
|
|
973
|
-
</tr>
|
|
974
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/data</span> <span class="pre">=</span> <span class="pre">42</span></code></td>
|
|
975
|
-
<td>FALSE, <code class="docutils literal"><span class="pre">/data</span></code> does not contain
|
|
976
|
-
<code class="docutils literal"><span class="pre">42</span></code></td>
|
|
977
|
-
</tr>
|
|
978
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/data</span> <span class="pre">LIKE</span> <span class="pre">'z'</span></code></td>
|
|
979
|
-
<td>TRUE, a member of <code class="docutils literal"><span class="pre">/data</span></code> matches
|
|
980
|
-
<code class="docutils literal"><span class="pre">'z'</span></code></td>
|
|
981
|
-
</tr>
|
|
982
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/other</span> <span class="pre">></span> <span class="pre">30</span></code></td>
|
|
983
|
-
<td>TRUE, a member of <code class="docutils literal"><span class="pre">/other</span></code> is
|
|
984
|
-
<code class="docutils literal"><span class="pre">></span> <span class="pre">30</span></code></td>
|
|
985
|
-
</tr>
|
|
986
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/other</span> <span class="pre">></span> <span class="pre">50</span></code></td>
|
|
987
|
-
<td>FALSE, no member of <code class="docutils literal"><span class="pre">/other</span></code> is
|
|
988
|
-
<code class="docutils literal"><span class="pre">></span> <span class="pre">50</span></code></td>
|
|
989
|
-
</tr>
|
|
990
|
-
</tbody>
|
|
991
|
-
</table>
|
|
992
|
-
</li>
|
|
993
|
-
<li><p class="first">Determine whether a specific value is at a specific position. To
|
|
994
|
-
determine this, use the subscript operator <code class="docutils literal"><span class="pre">[]</span></code> on the XPath
|
|
995
|
-
identifier to specify the position, and use the equality operator to
|
|
996
|
-
check the value at that position.</p>
|
|
997
|
-
<table border="1" class="docutils" id="id11">
|
|
998
|
-
<caption><span class="caption-text"><em>Match if a value is at a specific position</em></span><a class="headerlink" href="#id11" title="Permalink to this table">¶</a></caption>
|
|
999
|
-
<colgroup>
|
|
1000
|
-
<col width="50%" />
|
|
1001
|
-
<col width="50%" />
|
|
1002
|
-
</colgroup>
|
|
1003
|
-
<thead valign="bottom">
|
|
1004
|
-
<tr class="row-odd"><th class="head">Filter</th>
|
|
1005
|
-
<th class="head">Evaluates as</th>
|
|
1006
|
-
</tr>
|
|
1007
|
-
</thead>
|
|
1008
|
-
<tbody valign="top">
|
|
1009
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/data[0]</span> <span class="pre">=</span> <span class="pre">1</span></code></td>
|
|
1010
|
-
<td>TRUE, first element of <code class="docutils literal"><span class="pre">/data</span></code> is
|
|
1011
|
-
<code class="docutils literal"><span class="pre">1</span></code></td>
|
|
1012
|
-
</tr>
|
|
1013
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/data[3]</span> <span class="pre">=</span> <span class="pre">"zebra"</span></code></td>
|
|
1014
|
-
<td>TRUE, fourth element of <code class="docutils literal"><span class="pre">/data</span></code> is
|
|
1015
|
-
<code class="docutils literal"><span class="pre">'zebra'</span></code></td>
|
|
1016
|
-
</tr>
|
|
1017
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/data[1]</span> <span class="pre">!=</span> <span class="pre">1</span></code></td>
|
|
1018
|
-
<td>TRUE, second element of <code class="docutils literal"><span class="pre">/data</span></code> is
|
|
1019
|
-
not <code class="docutils literal"><span class="pre">1</span></code></td>
|
|
1020
|
-
</tr>
|
|
1021
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/other[1]</span> <span class="pre">LIKE</span> <span class="pre">'4'</span></code></td>
|
|
1022
|
-
<td>TRUE, second element of <code class="docutils literal"><span class="pre">/other</span></code>
|
|
1023
|
-
matches <code class="docutils literal"><span class="pre">'4'</span></code></td>
|
|
1024
|
-
</tr>
|
|
1025
|
-
</tbody>
|
|
1026
|
-
</table>
|
|
1027
|
-
</li>
|
|
1028
|
-
<li><p class="first">Determine whether any value in one array is present in another array.</p>
|
|
1029
|
-
<table border="1" class="docutils" id="id12">
|
|
1030
|
-
<caption><span class="caption-text"><em>Match if any elements match</em></span><a class="headerlink" href="#id12" title="Permalink to this table">¶</a></caption>
|
|
1031
|
-
<colgroup>
|
|
1032
|
-
<col width="50%" />
|
|
1033
|
-
<col width="50%" />
|
|
1034
|
-
</colgroup>
|
|
1035
|
-
<thead valign="bottom">
|
|
1036
|
-
<tr class="row-odd"><th class="head">Filter</th>
|
|
1037
|
-
<th class="head">Evaluates as</th>
|
|
1038
|
-
</tr>
|
|
1039
|
-
</thead>
|
|
1040
|
-
<tbody valign="top">
|
|
1041
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/data</span> <span class="pre">=</span> <span class="pre">/other</span></code></td>
|
|
1042
|
-
<td>TRUE, a value in <code class="docutils literal"><span class="pre">/data</span></code> equals a
|
|
1043
|
-
value in <code class="docutils literal"><span class="pre">/other</span></code></td>
|
|
1044
|
-
</tr>
|
|
1045
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/data</span> <span class="pre">!=</span> <span class="pre">/other</span></code></td>
|
|
1046
|
-
<td>TRUE, a value in <code class="docutils literal"><span class="pre">/data</span></code> does not
|
|
1047
|
-
equal a value in <code class="docutils literal"><span class="pre">/other</span></code></td>
|
|
1048
|
-
</tr>
|
|
1049
|
-
</tbody>
|
|
1050
|
-
</table>
|
|
1051
|
-
</li>
|
|
1052
|
-
<li><p class="first">Determine whether an array contains one of a set of values.</p>
|
|
1053
|
-
<table border="1" class="docutils" id="id13">
|
|
1054
|
-
<caption><span class="caption-text"><em>Match if any of a set of values is present</em></span><a class="headerlink" href="#id13" title="Permalink to this table">¶</a></caption>
|
|
1055
|
-
<colgroup>
|
|
1056
|
-
<col width="50%" />
|
|
1057
|
-
<col width="50%" />
|
|
1058
|
-
</colgroup>
|
|
1059
|
-
<thead valign="bottom">
|
|
1060
|
-
<tr class="row-odd"><th class="head">Filter</th>
|
|
1061
|
-
<th class="head">Evaluates as</th>
|
|
1062
|
-
</tr>
|
|
1063
|
-
</thead>
|
|
1064
|
-
<tbody valign="top">
|
|
1065
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">3</span> <span class="pre">IN</span> <span class="pre">(/data)</span></code></td>
|
|
1066
|
-
<td>TRUE, <code class="docutils literal"><span class="pre">3</span></code> is a member of <code class="docutils literal"><span class="pre">/data</span></code></td>
|
|
1067
|
-
</tr>
|
|
1068
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">/data</span> <span class="pre">IN</span> <span class="pre">(1,</span> <span class="pre">2,</span> <span class="pre">3)</span></code></td>
|
|
1069
|
-
<td>TRUE, a member of <code class="docutils literal"><span class="pre">/data</span></code> is in
|
|
1070
|
-
<code class="docutils literal"><span class="pre">(1,</span> <span class="pre">2,</span> <span class="pre">3)</span></code></td>
|
|
1071
|
-
</tr>
|
|
1072
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">/data</span> <span class="pre">IN</span> <span class="pre">("zebra",</span> <span class="pre">"antelope",</span>
|
|
1073
|
-
<span class="pre">"lion")</span></code></td>
|
|
1074
|
-
<td>TRUE, a member of <code class="docutils literal"><span class="pre">/data</span></code> is in
|
|
1075
|
-
<code class="docutils literal"><span class="pre">("zebra",</span> <span class="pre">"antelope",</span> <span class="pre">"lion")</span></code></td>
|
|
1076
|
-
</tr>
|
|
1077
|
-
</tbody>
|
|
1078
|
-
</table>
|
|
1079
|
-
</li>
|
|
1080
|
-
</ol>
|
|
1081
|
-
</div>
|
|
1082
|
-
<div class="section" id="working-with-timestamps">
|
|
1083
|
-
<h3>Working with Timestamps<a class="headerlink" href="#working-with-timestamps" title="Permalink to this headline">¶</a></h3>
|
|
1084
|
-
<p>AMPS does not include a dedicated timestamp data type. Instead, AMPS represents
|
|
1085
|
-
timestamps either as a <code class="docutils literal"><span class="pre">double</span></code> or a <code class="docutils literal"><span class="pre">string</span></code>.</p>
|
|
1086
|
-
<p>When representing timestamps as a <code class="docutils literal"><span class="pre">double</span></code>, AMPS uses standard UNIX timestamps.</p>
|
|
1087
|
-
<p>When representing timestamps as a <code class="docutils literal"><span class="pre">string</span></code>, AMPS formats strings in a format compliant
|
|
1088
|
-
with ISO-8601. The format AMPS uses was chosen to balance parsing speed, precision,
|
|
1089
|
-
readability, and bandwidth. The format uses:</p>
|
|
1090
|
-
<ul class="simple">
|
|
1091
|
-
<li>Basic format (no delimiters between parts of a date or time)</li>
|
|
1092
|
-
<li>Decimal fractional seconds (with <code class="docutils literal"><span class="pre">.</span></code> delimiting the fraction rather than <code class="docutils literal"><span class="pre">,</span></code>)</li>
|
|
1093
|
-
<li>Explicit <code class="docutils literal"><span class="pre">T</span></code> to separate date and time</li>
|
|
1094
|
-
<li>Explicit time zone specifier allowed, but not required</li>
|
|
1095
|
-
</ul>
|
|
1096
|
-
<p>A <code class="docutils literal"><span class="pre">string</span></code> timestamp has the format of <code class="docutils literal"><span class="pre">YYYYmmddTHHMMSS[Z]</span></code> where:</p>
|
|
1097
|
-
<ul class="simple">
|
|
1098
|
-
<li><code class="docutils literal"><span class="pre">YYYY</span></code> is the four digit year</li>
|
|
1099
|
-
<li><code class="docutils literal"><span class="pre">mm</span></code> is the two digit month</li>
|
|
1100
|
-
<li><code class="docutils literal"><span class="pre">dd</span></code> is the two digit day</li>
|
|
1101
|
-
<li><code class="docutils literal"><span class="pre">T</span></code> is the character separator between the date and time</li>
|
|
1102
|
-
<li><code class="docutils literal"><span class="pre">HH</span></code> is the two digit hour</li>
|
|
1103
|
-
<li><code class="docutils literal"><span class="pre">MM</span></code> is the two digit minute</li>
|
|
1104
|
-
<li><code class="docutils literal"><span class="pre">SS</span></code> is the two digit second</li>
|
|
1105
|
-
<li><code class="docutils literal"><span class="pre">Z</span></code> is an optional timezone specifier. AMPS timestamps are always
|
|
1106
|
-
in UTC, regardless of whether the timezone is included. AMPS only
|
|
1107
|
-
accepts a literal value of <code class="docutils literal"><span class="pre">Z</span></code> for a timezone specifier.</li>
|
|
1108
|
-
</ul>
|
|
1109
|
-
<p>For example, a timestamp for January 2nd, 2015, at 12:35:</p>
|
|
1110
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="mi">20150102</span><span class="n">T123500Z</span>
|
|
1111
|
-
</pre></div>
|
|
1112
|
-
</div>
|
|
1113
|
-
<p>Timestamps in string format are used for point-in-time bookmarks, as
|
|
1114
|
-
explicit time specifiers in configuration files, in the <code class="docutils literal"><span class="pre">timestamp</span></code>
|
|
1115
|
-
header optionally returned on AMPS messages, and so on.</p>
|
|
1116
|
-
<p>The timestamp format AMPS uses was chosen to make string comparisons
|
|
1117
|
-
for timestamps work as expected, including simple comparisons like
|
|
1118
|
-
<code class="docutils literal"><span class="pre"><</span></code> and <code class="docutils literal"><span class="pre">></span></code>, as well as more sophisticated comparisons like the
|
|
1119
|
-
<code class="docutils literal"><span class="pre">BETWEEN</span></code> operator.</p>
|
|
1120
|
-
<p>AMPS provides functions to convert between <code class="docutils literal"><span class="pre">string</span></code> representation
|
|
1121
|
-
of a timestamp and the <code class="docutils literal"><span class="pre">double</span></code> representation of a timestamp,
|
|
1122
|
-
as described in <a class="reference internal" href="amps_functions.html#ug-date-and-time-functions"><span class="std std-ref">Date and Time Functions</span></a>.</p>
|
|
1123
|
-
</div>
|
|
1124
|
-
</div>
|
|
1125
|
-
<div class="section" id="using-regular-expressions-in-amps">
|
|
1126
|
-
<span id="regular-expressions"></span><span id="ug-regular-expressions"></span><span id="index-9"></span><h2>Using Regular Expressions in AMPS<a class="headerlink" href="#using-regular-expressions-in-amps" title="Permalink to this headline">¶</a></h2>
|
|
1127
|
-
<p>Regular expression matching provides precision, power, and flexibility
|
|
1128
|
-
for matching patterns. AMPS supports regular expression matching on
|
|
1129
|
-
topics and within content filters. Regular expressions are implemented
|
|
1130
|
-
in AMPS using the Perl-Compatible Regular Expressions (PCRE) library.
|
|
1131
|
-
For a complete definition of the supported regular expression syntax,
|
|
1132
|
-
please refer to:</p>
|
|
1133
|
-
<p><a class="reference external" href="http://perldoc.perl.org/perlre.html">http://perldoc.perl.org/perlre.html</a></p>
|
|
1134
|
-
<p>To use regular expressions for topic matching, provide a regular
|
|
1135
|
-
expression pattern where you would normally provide a topic name.</p>
|
|
1136
|
-
<p>To use regular expressions in content filtering, compare strings to
|
|
1137
|
-
regular expressions using the <code class="docutils literal"><span class="pre">LIKE</span></code> operator. The syntax of the
|
|
1138
|
-
<code class="docutils literal"><span class="pre">LIKE</span></code> operator is:</p>
|
|
1139
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="n">string</span> <span class="n">LIKE</span> <span class="n">pattern</span>
|
|
1140
|
-
</pre></div>
|
|
1141
|
-
</div>
|
|
1142
|
-
<p>In this context, a string is any expression that provides a string and pattern is
|
|
1143
|
-
a literal regular expression pattern.</p>
|
|
1144
|
-
<p>This chapter presents a brief overview of regular expressions in AMPS.
|
|
1145
|
-
However, this chapter is not exhaustive. For more information on regular
|
|
1146
|
-
expression matching, see the PCRE site mentioned above.</p>
|
|
1147
|
-
<div class="section" id="examples">
|
|
1148
|
-
<h3>Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h3>
|
|
1149
|
-
<p>Here is an example of a content filter for messages that will match any
|
|
1150
|
-
message meeting the following criteria:</p>
|
|
1151
|
-
<ul class="simple">
|
|
1152
|
-
<li>Regular expression match of symbols of 2 or 3 characters starting
|
|
1153
|
-
with “IB”</li>
|
|
1154
|
-
<li>Regular expression match of prices starting with “90”</li>
|
|
1155
|
-
<li>Numeric comparison of prices less than 91</li>
|
|
1156
|
-
</ul>
|
|
1157
|
-
<p>The corresponding content filter would be:</p>
|
|
1158
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">(</span><span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="n">Instrmt</span><span class="o">/</span><span class="nd">@Sym</span> <span class="n">LIKE</span> <span class="s2">"^IB.?$"</span><span class="p">)</span> <span class="n">AND</span>
|
|
1159
|
-
<span class="p">(</span><span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="nd">@Px</span> <span class="n">LIKE</span> <span class="s2">"^90\..*"</span> <span class="n">AND</span> <span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Order</span><span class="o">/</span><span class="nd">@Px</span> <span class="o"><</span> <span class="mf">91.0</span><span class="p">)</span>
|
|
1160
|
-
</pre></div>
|
|
1161
|
-
</div>
|
|
1162
|
-
<p>The tables below (
|
|
1163
|
-
<a class="reference internal" href="#table-regex-meta-chars"><span class="std std-ref">Regular Expression Meta-characters</span></a>,
|
|
1164
|
-
<a class="reference internal" href="#table-regex-repetition-constructs"><span class="std std-ref">Regular Expression Repetition Constructs</span></a>, and
|
|
1165
|
-
<a class="reference internal" href="#table-regex-behavior-modifiers"><span class="std std-ref">Regular Expression Behavior Modifiers</span></a>
|
|
1166
|
-
) contain a brief summary of special characters and constructs available within regular expressions.</p>
|
|
1167
|
-
<p>Here are more examples of using regular expressions within AMPS:</p>
|
|
1168
|
-
<p id="index-10">Use <code class="docutils literal"><span class="pre">(?i)</span></code> to enable case-insensitive regular expression searching. For example, the following
|
|
1169
|
-
filter will be true regardless if <code class="docutils literal"><span class="pre">/client/country</span></code> contains “US” or
|
|
1170
|
-
“us”.</p>
|
|
1171
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">(</span><span class="o">/</span><span class="n">client</span><span class="o">/</span><span class="n">country</span> <span class="n">LIKE</span> <span class="s2">"(?i)ˆus$"</span><span class="p">)</span>
|
|
1172
|
-
</pre></div>
|
|
1173
|
-
</div>
|
|
1174
|
-
<p>To match messages where tag 55 has a <code class="docutils literal"><span class="pre">TRADE</span></code> suffix, use the following
|
|
1175
|
-
filter:</p>
|
|
1176
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">(</span><span class="o">/</span><span class="mi">55</span> <span class="n">LIKE</span> <span class="s2">"TRADE$"</span><span class="p">)</span>
|
|
1177
|
-
</pre></div>
|
|
1178
|
-
</div>
|
|
1179
|
-
<p>To match messages where tag 109 has a <code class="docutils literal"><span class="pre">US</span></code> prefix and a <code class="docutils literal"><span class="pre">TRADE</span></code>
|
|
1180
|
-
suffix, with case insensitive matching, use the following filter:</p>
|
|
1181
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="p">(</span><span class="o">/</span><span class="mi">109</span> <span class="n">LIKE</span> <span class="s2">"(?i)ˆUS.*TRADE$"</span><span class="p">)</span>
|
|
1182
|
-
</pre></div>
|
|
1183
|
-
</div>
|
|
1184
|
-
<span id="table-regex-meta-chars"></span><table border="1" class="docutils" id="id14">
|
|
1185
|
-
<caption><span class="caption-text"><em>Regular Expression Meta-characters</em></span><a class="headerlink" href="#id14" title="Permalink to this table">¶</a></caption>
|
|
1186
|
-
<colgroup>
|
|
1187
|
-
<col width="50%" />
|
|
1188
|
-
<col width="50%" />
|
|
1189
|
-
</colgroup>
|
|
1190
|
-
<thead valign="bottom">
|
|
1191
|
-
<tr class="row-odd"><th class="head"><strong>Characters</strong></th>
|
|
1192
|
-
<th class="head"><strong>Meaning</strong></th>
|
|
1193
|
-
</tr>
|
|
1194
|
-
</thead>
|
|
1195
|
-
<tbody valign="top">
|
|
1196
|
-
<tr class="row-even"><td>^</td>
|
|
1197
|
-
<td>Beginning of string</td>
|
|
1198
|
-
</tr>
|
|
1199
|
-
<tr class="row-odd"><td>$</td>
|
|
1200
|
-
<td>End of string</td>
|
|
1201
|
-
</tr>
|
|
1202
|
-
<tr class="row-even"><td>.</td>
|
|
1203
|
-
<td>Any character except a newline</td>
|
|
1204
|
-
</tr>
|
|
1205
|
-
<tr class="row-odd"><td>*</td>
|
|
1206
|
-
<td>Match previous 0 or more times</td>
|
|
1207
|
-
</tr>
|
|
1208
|
-
<tr class="row-even"><td>?</td>
|
|
1209
|
-
<td>Match previous 0 or 1 times</td>
|
|
1210
|
-
</tr>
|
|
1211
|
-
<tr class="row-odd"><td>|</td>
|
|
1212
|
-
<td>The previous is an alternative to the following</td>
|
|
1213
|
-
</tr>
|
|
1214
|
-
<tr class="row-even"><td>()</td>
|
|
1215
|
-
<td>Grouping of expression</td>
|
|
1216
|
-
</tr>
|
|
1217
|
-
<tr class="row-odd"><td>[]</td>
|
|
1218
|
-
<td>Set of characters</td>
|
|
1219
|
-
</tr>
|
|
1220
|
-
<tr class="row-even"><td>{}</td>
|
|
1221
|
-
<td>Repetition modifier</td>
|
|
1222
|
-
</tr>
|
|
1223
|
-
<tr class="row-odd"><td>\</td>
|
|
1224
|
-
<td>Escape for special characters</td>
|
|
1225
|
-
</tr>
|
|
1226
|
-
</tbody>
|
|
1227
|
-
</table>
|
|
1228
|
-
<span id="table-regex-repetition-constructs"></span><table border="1" class="docutils" id="id15">
|
|
1229
|
-
<caption><span class="caption-text"><em>Regular Expression Repetition Constructs</em></span><a class="headerlink" href="#id15" title="Permalink to this table">¶</a></caption>
|
|
1230
|
-
<colgroup>
|
|
1231
|
-
<col width="50%" />
|
|
1232
|
-
<col width="50%" />
|
|
1233
|
-
</colgroup>
|
|
1234
|
-
<thead valign="bottom">
|
|
1235
|
-
<tr class="row-odd"><th class="head"><strong>Construct</strong></th>
|
|
1236
|
-
<th class="head"><strong>Meaning</strong></th>
|
|
1237
|
-
</tr>
|
|
1238
|
-
</thead>
|
|
1239
|
-
<tbody valign="top">
|
|
1240
|
-
<tr class="row-even"><td><em>a</em>*</td>
|
|
1241
|
-
<td>Zero or more <em>a</em>‘s</td>
|
|
1242
|
-
</tr>
|
|
1243
|
-
<tr class="row-odd"><td><em>a</em>?</td>
|
|
1244
|
-
<td>Zero or one <em>a</em>‘s</td>
|
|
1245
|
-
</tr>
|
|
1246
|
-
<tr class="row-even"><td><em>a</em>{<em>m</em>}</td>
|
|
1247
|
-
<td>Exactly <em>m a</em>‘s</td>
|
|
1248
|
-
</tr>
|
|
1249
|
-
<tr class="row-odd"><td><em>a</em>{<em>m</em>,}</td>
|
|
1250
|
-
<td>At least <em>m a</em>‘s</td>
|
|
1251
|
-
</tr>
|
|
1252
|
-
<tr class="row-even"><td><em>a</em>{<em>m</em>,<em>n</em>}</td>
|
|
1253
|
-
<td>At least <em>m</em>, but no more than <em>n a</em>‘s</td>
|
|
1254
|
-
</tr>
|
|
1255
|
-
</tbody>
|
|
1256
|
-
</table>
|
|
1257
|
-
<span id="table-regex-behavior-modifiers"></span><table border="1" class="docutils" id="id16">
|
|
1258
|
-
<caption><span class="caption-text"><em>Regular Expression Behavior Modifiers</em></span><a class="headerlink" href="#id16" title="Permalink to this table">¶</a></caption>
|
|
1259
|
-
<colgroup>
|
|
1260
|
-
<col width="50%" />
|
|
1261
|
-
<col width="50%" />
|
|
1262
|
-
</colgroup>
|
|
1263
|
-
<thead valign="bottom">
|
|
1264
|
-
<tr class="row-odd"><th class="head"><strong>Modifier</strong></th>
|
|
1265
|
-
<th class="head"><strong>Meaning</strong></th>
|
|
1266
|
-
</tr>
|
|
1267
|
-
</thead>
|
|
1268
|
-
<tbody valign="top">
|
|
1269
|
-
<tr class="row-even"><td>i</td>
|
|
1270
|
-
<td>Case insensitive search</td>
|
|
1271
|
-
</tr>
|
|
1272
|
-
<tr class="row-odd"><td>m</td>
|
|
1273
|
-
<td>Multi-line search</td>
|
|
1274
|
-
</tr>
|
|
1275
|
-
<tr class="row-even"><td>s</td>
|
|
1276
|
-
<td>Any character (including newlines) can be matched by a .
|
|
1277
|
-
character</td>
|
|
1278
|
-
</tr>
|
|
1279
|
-
<tr class="row-odd"><td>x</td>
|
|
1280
|
-
<td>Unescaped white space is ignored in the pattern</td>
|
|
1281
|
-
</tr>
|
|
1282
|
-
<tr class="row-even"><td>A</td>
|
|
1283
|
-
<td>Constrain the pattern to only match the beginning of a
|
|
1284
|
-
string</td>
|
|
1285
|
-
</tr>
|
|
1286
|
-
<tr class="row-odd"><td>U</td>
|
|
1287
|
-
<td>Make the quantifiers non-greedy by default (the
|
|
1288
|
-
quantifiers are greedy and try to match as much as
|
|
1289
|
-
possible by default)</td>
|
|
1290
|
-
</tr>
|
|
1291
|
-
</tbody>
|
|
1292
|
-
</table>
|
|
1293
|
-
</div>
|
|
1294
|
-
<div class="section" id="raw-strings">
|
|
1295
|
-
<h3>Raw Strings<a class="headerlink" href="#raw-strings" title="Permalink to this headline">¶</a></h3>
|
|
1296
|
-
<p id="index-11">AMPS additionally provides support for <em>raw strings</em>, which are strings
|
|
1297
|
-
prefixed by an ‘r’ or ‘R’ character. Raw strings use different rules for
|
|
1298
|
-
how a backslash escape sequence is interpreted by the parser. When a
|
|
1299
|
-
string literal is provided as a raw string, the characters in the raw
|
|
1300
|
-
string are matched exactly, even when those characters are special
|
|
1301
|
-
characters for a regular expression.</p>
|
|
1302
|
-
<p>In the example below, the raw string - noted by the <code class="docutils literal"><span class="pre">r</span></code> prefix of the
|
|
1303
|
-
string literal in the second operand of the <code class="docutils literal"><span class="pre">LIKE</span></code> predicate (
|
|
1304
|
-
<a class="reference internal" href="#listing-raw-string"><span class="std std-ref">Raw String Example</span></a>
|
|
1305
|
-
) - causes AMPS to search for the literal characters
|
|
1306
|
-
<code class="docutils literal"><span class="pre">++</span></code> in the results, without requiring those characters to be escaped (
|
|
1307
|
-
<a class="reference internal" href="#listing-regular-string"><span class="std std-ref">Regular String Example</span></a>
|
|
1308
|
-
). In this example we are querying for a string that
|
|
1309
|
-
contains the programming language named C++. In the regular string, we
|
|
1310
|
-
are required to escape the <code class="docutils literal"><span class="pre">'+'</span></code> character since it is also used in a
|
|
1311
|
-
regular expression as the “match previous 1 or more times” regular
|
|
1312
|
-
expression character. In the raw string we can use <code class="docutils literal"><span class="pre">r'C++'</span></code> to search
|
|
1313
|
-
for the string and not have to escape the special <code class="docutils literal"><span class="pre">'+'</span></code> character.</p>
|
|
1314
|
-
<div class="code highlight-default" id="listing-raw-string"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Language</span> <span class="n">LIKE</span> <span class="sa">r</span><span class="s1">'C++'</span>
|
|
1315
|
-
</pre></div>
|
|
1316
|
-
</div>
|
|
1317
|
-
<p><em>Raw String Example</em></p>
|
|
1318
|
-
<div class="code highlight-default" id="listing-regular-string"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">FIXML</span><span class="o">/</span><span class="n">Language</span> <span class="n">LIKE</span> <span class="s1">'C\+\+'</span>
|
|
1319
|
-
</pre></div>
|
|
1320
|
-
</div>
|
|
1321
|
-
<p><em>Regular String Example</em></p>
|
|
1322
|
-
</div>
|
|
1323
|
-
<div class="section" id="subscribing-to-a-set-of-topics-using-regular-expressions">
|
|
1324
|
-
<span id="ug-regex-sub"></span><h3>Subscribing to a Set of Topics Using Regular Expressions<a class="headerlink" href="#subscribing-to-a-set-of-topics-using-regular-expressions" title="Permalink to this headline">¶</a></h3>
|
|
1325
|
-
<p>As mentioned previously, AMPS supports regular expression filtering for
|
|
1326
|
-
topics, in addition to content filters. Regular expressions use the same
|
|
1327
|
-
grammar described in content filtering. Regular expression matching for
|
|
1328
|
-
topics is enabled in an AMPS instance by default.</p>
|
|
1329
|
-
<p>Subscriptions or queries that use a regular expression for the topic
|
|
1330
|
-
name provide all matching records from AMPS topics where the name of the
|
|
1331
|
-
topic matches the regular expression used for the subscription or query.
|
|
1332
|
-
For example, if your AMPS configuration has three SOW topics,
|
|
1333
|
-
<code class="docutils literal"><span class="pre">Topic_A</span></code>, <code class="docutils literal"><span class="pre">Topic_B</span></code> and <code class="docutils literal"><span class="pre">Topic_C</span></code> and you wish to search for all
|
|
1334
|
-
messages in all of your SOW topics for records where the <code class="docutils literal"><span class="pre">Name</span></code> field
|
|
1335
|
-
is equal to “Bob”, then you could use a <code class="docutils literal"><span class="pre">sow</span></code> command with a topic of
|
|
1336
|
-
<code class="docutils literal"><span class="pre">^Topic_.*</span></code> and a filter of <code class="docutils literal"><span class="pre">/FIXML/@Name='Bob'</span></code> to return all
|
|
1337
|
-
matching messages that match the filter in all of the topics that match
|
|
1338
|
-
the topic regular expression.</p>
|
|
1339
|
-
<p>Notice that, as with the <code class="docutils literal"><span class="pre">LIKE</span></code> expression, a regular expression
|
|
1340
|
-
will match at any position in the topic name. To anchor the match
|
|
1341
|
-
to the beginning of the string, use the <code class="docutils literal"><span class="pre">^</span></code> directive at the
|
|
1342
|
-
beginning of the regular expression. To anchor the match to the
|
|
1343
|
-
end of the string, use the <code class="docutils literal"><span class="pre">$</span></code> directive at the end of the string.</p>
|
|
1344
|
-
<p>For example, to match a topic with <code class="docutils literal"><span class="pre">"order"</span></code> anywhere in the topic
|
|
1345
|
-
name, you could use the regular expression <code class="docutils literal"><span class="pre">order.*</span></code> (the
|
|
1346
|
-
ending <code class="docutils literal"><span class="pre">.*</span></code> matches zero or more characters, but lets AMPS know
|
|
1347
|
-
to interpret this as a regular expression). To match only
|
|
1348
|
-
topics that start with <code class="docutils literal"><span class="pre">order</span></code>, you would use the regular expression
|
|
1349
|
-
<code class="docutils literal"><span class="pre">^order</span></code>. To match topics that end with <code class="docutils literal"><span class="pre">order</span></code>, you would
|
|
1350
|
-
use the regular expression <code class="docutils literal"><span class="pre">order$</span></code>.</p>
|
|
1351
|
-
<div class="admonition tip">
|
|
1352
|
-
<p class="first admonition-title">Tip</p>
|
|
1353
|
-
<p class="last">Results returned when performing a topic regular expression
|
|
1354
|
-
query will follow “configuration order” — meaning that the
|
|
1355
|
-
topics will be searched in the order that they appear in your
|
|
1356
|
-
AMPS configuration file. Using the above query example with
|
|
1357
|
-
<code class="docutils literal"><span class="pre">Topic_A</span></code>, <code class="docutils literal"><span class="pre">Topic_B</span></code> and <code class="docutils literal"><span class="pre">Topic_C</span></code>, if the configuration
|
|
1358
|
-
file has these topics in that exact order, the results will be
|
|
1359
|
-
returned first from <code class="docutils literal"><span class="pre">Topic_A</span></code>, then from <code class="docutils literal"><span class="pre">Topic_B</span></code> and
|
|
1360
|
-
finally the results from <code class="docutils literal"><span class="pre">Topic_C</span></code>. As with other queries,
|
|
1361
|
-
AMPS does not make any guarantees about the ordering of results
|
|
1362
|
-
within any given topic query.</p>
|
|
1363
|
-
</div>
|
|
1364
|
-
</div>
|
|
1365
|
-
</div>
|
|
1366
|
-
<div class="section" id="performance-considerations">
|
|
1367
|
-
<h2>Performance Considerations<a class="headerlink" href="#performance-considerations" title="Permalink to this headline">¶</a></h2>
|
|
1368
|
-
<p>This section describes general performance considerations for the AMPS
|
|
1369
|
-
expression language and content filters. The considerations here are aspects
|
|
1370
|
-
of AMPS performance to be aware of in the general case. However, since the
|
|
1371
|
-
AMPS expression language operates on specific data, the structure and size
|
|
1372
|
-
of the messages that your application uses may have more effect on overall
|
|
1373
|
-
performance than the specific expressions used. For example, parsing and
|
|
1374
|
-
filtering a 20MB XML document is inherently more expensive than parsing
|
|
1375
|
-
and filtering a 400 byte BFlat document.</p>
|
|
1376
|
-
<div class="section" id="use-short-circuiting">
|
|
1377
|
-
<h3>Use Short-Circuiting<a class="headerlink" href="#use-short-circuiting" title="Permalink to this headline">¶</a></h3>
|
|
1378
|
-
<p>When clauses in an expression are joined by <code class="docutils literal"><span class="pre">OR</span></code>, AMPS will only
|
|
1379
|
-
evaluate the right side of an <code class="docutils literal"><span class="pre">OR</span></code> expression if the left side
|
|
1380
|
-
of the expression is false.</p>
|
|
1381
|
-
<p>When constructing an expression, this means that there can be a
|
|
1382
|
-
performance advantage to having relatively less expensive clauses
|
|
1383
|
-
on the left hand sides of the <code class="docutils literal"><span class="pre">OR</span></code>. For example, in the
|
|
1384
|
-
following clause:</p>
|
|
1385
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">code</span> <span class="o">=</span> <span class="s1">'restricted'</span> <span class="n">OR</span> <span class="o">/</span><span class="n">notes</span> <span class="n">LIKE</span> <span class="s1">'restricted|limited'</span>
|
|
1386
|
-
</pre></div>
|
|
1387
|
-
</div>
|
|
1388
|
-
<p>The regular expression comparison is only evaluated if the comparison
|
|
1389
|
-
<code class="docutils literal"><span class="pre">/code</span> <span class="pre">=</span> <span class="pre">'restricted'</span></code> is false. If the comparison is true, then
|
|
1390
|
-
the overall clause is true and there is no need to evaluate the
|
|
1391
|
-
regular expression.</p>
|
|
1392
|
-
</div>
|
|
1393
|
-
<div class="section" id="avoid-redundant-expressions">
|
|
1394
|
-
<h3>Avoid Redundant Expressions<a class="headerlink" href="#avoid-redundant-expressions" title="Permalink to this headline">¶</a></h3>
|
|
1395
|
-
<p>AMPS does not reorder or recombine complex expressions. Where feasible,
|
|
1396
|
-
your application can save work at the server by combining expressions.
|
|
1397
|
-
In particular, if an application is constructing a filter by reading
|
|
1398
|
-
options from various sources, performance can be improved by combining
|
|
1399
|
-
the queries.</p>
|
|
1400
|
-
<p>For example, in a filter like the following:</p>
|
|
1401
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="nb">id</span> <span class="o">=</span> <span class="s1">'12345'</span> <span class="n">OR</span> <span class="o">/</span><span class="nb">id</span> <span class="n">IN</span> <span class="p">(</span><span class="s1">'12345'</span><span class="p">,</span><span class="s1">'23456'</span><span class="p">,</span><span class="s1">'34567'</span><span class="p">,</span><span class="s1">'45678'</span><span class="p">)</span>
|
|
1402
|
-
<span class="n">OR</span> <span class="o">/</span><span class="nb">id</span> <span class="n">IN</span> <span class="p">(</span><span class="s1">'12345'</span><span class="p">,</span><span class="s1">'45678'</span><span class="p">,</span><span class="s1">'90909'</span><span class="p">)</span>
|
|
1403
|
-
</pre></div>
|
|
1404
|
-
</div>
|
|
1405
|
-
<p>The comparison against <code class="docutils literal"><span class="pre">'12345'</span></code> will be evaluated three times in cases where
|
|
1406
|
-
the value of <code class="docutils literal"><span class="pre">/id</span></code> does not match any of the values in the filter.</p>
|
|
1407
|
-
<p>This filter is equivalent to:</p>
|
|
1408
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="nb">id</span> <span class="n">IN</span> <span class="p">(</span><span class="s1">'12345'</span><span class="p">,</span><span class="s1">'23456'</span><span class="p">,</span><span class="s1">'34567'</span><span class="p">,</span><span class="s1">'45678'</span><span class="p">,</span><span class="s1">'90909'</span><span class="p">)</span>
|
|
1409
|
-
</pre></div>
|
|
1410
|
-
</div>
|
|
1411
|
-
<p>The same results are produced, but only evaluates the <code class="docutils literal"><span class="pre">/id</span></code> field against
|
|
1412
|
-
a given value one time.</p>
|
|
1413
|
-
</div>
|
|
1414
|
-
<div class="section" id="use-specialized-operators-for-simple-comparisons-use-like-when-necessary">
|
|
1415
|
-
<h3>Use Specialized Operators for Simple Comparisons, Use LIKE when Necessary<a class="headerlink" href="#use-specialized-operators-for-simple-comparisons-use-like-when-necessary" title="Permalink to this headline">¶</a></h3>
|
|
1416
|
-
<p>The <code class="docutils literal"><span class="pre">LIKE</span></code> operator offers access to full Perl-Compatible Regular
|
|
1417
|
-
Expressions within the AMPS expression language. This flexibility
|
|
1418
|
-
allows for very precise filtering, and the PCRE engine performs
|
|
1419
|
-
well.</p>
|
|
1420
|
-
<p>However, for comparisons for which AMPS provides a named function,
|
|
1421
|
-
the named function is highly-optimized and will perform somewhat
|
|
1422
|
-
better than the general-purpose regular expression engine.</p>
|
|
1423
|
-
<p>For example, given a choice between two equivalent
|
|
1424
|
-
expressions:</p>
|
|
1425
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">state</span> <span class="n">BEGINS</span> <span class="n">WITH</span><span class="p">(</span><span class="s1">'North'</span><span class="p">)</span>
|
|
1426
|
-
</pre></div>
|
|
1427
|
-
</div>
|
|
1428
|
-
<p>and</p>
|
|
1429
|
-
<div class="code highlight-default"><div class="highlight"><pre><span></span><span class="o">/</span><span class="n">state</span> <span class="n">LIKE</span> <span class="s1">'^North'</span>
|
|
1430
|
-
</pre></div>
|
|
1431
|
-
</div>
|
|
1432
|
-
<p>The version that uses <code class="docutils literal"><span class="pre">BEGINS</span> <span class="pre">WITH</span></code> will typically perform slightly
|
|
1433
|
-
better than the version that uses the regular expression.</p>
|
|
1434
|
-
<p>This doesn’t mean that regular expressions or the <code class="docutils literal"><span class="pre">LIKE</span></code> operator
|
|
1435
|
-
perform poorly. The <code class="docutils literal"><span class="pre">LIKE</span></code> operator can efficiently match patterns
|
|
1436
|
-
that would be difficult or impossible to match using the other operators.
|
|
1437
|
-
However, for very simple comparisons where AMPS provides a dedicated
|
|
1438
|
-
operator, that operator typically performs slightly better than a regular
|
|
1439
|
-
expression.</p>
|
|
1440
|
-
<p>The following table shows some examples of regular expressions and the AMPS operator
|
|
1441
|
-
equivalent.</p>
|
|
1442
|
-
<table border="1" class="docutils">
|
|
1443
|
-
<colgroup>
|
|
1444
|
-
<col width="50%" />
|
|
1445
|
-
<col width="50%" />
|
|
1446
|
-
</colgroup>
|
|
1447
|
-
<thead valign="bottom">
|
|
1448
|
-
<tr class="row-odd"><th class="head">Regular Expression</th>
|
|
1449
|
-
<th class="head">AMPS Operator Equivalent</th>
|
|
1450
|
-
</tr>
|
|
1451
|
-
</thead>
|
|
1452
|
-
<tbody valign="top">
|
|
1453
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">^something</span></code></td>
|
|
1454
|
-
<td><code class="docutils literal"><span class="pre">BEGINS</span> <span class="pre">WITH('something')</span></code></td>
|
|
1455
|
-
</tr>
|
|
1456
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">something$</span></code></td>
|
|
1457
|
-
<td><code class="docutils literal"><span class="pre">ENDS</span> <span class="pre">WITH</span> <span class="pre">('something')</span></code></td>
|
|
1458
|
-
</tr>
|
|
1459
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">something</span></code></td>
|
|
1460
|
-
<td><code class="docutils literal"><span class="pre">INSTR(/field,</span> <span class="pre">'something')</span> <span class="pre">!=</span> <span class="pre">0</span></code></td>
|
|
1461
|
-
</tr>
|
|
1462
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">(?i)something</span></code></td>
|
|
1463
|
-
<td><code class="docutils literal"><span class="pre">INSTR_I(/field,</span> <span class="pre">'something')</span> <span class="pre">!=</span> <span class="pre">0</span></code></td>
|
|
1464
|
-
</tr>
|
|
1465
|
-
<tr class="row-even"><td><code class="docutils literal"><span class="pre">(?i)^something$</span></code></td>
|
|
1466
|
-
<td><code class="docutils literal"><span class="pre">STREQUAL_I(/field,</span> <span class="pre">'something')</span> <span class="pre">!=</span> <span class="pre">0</span></code></td>
|
|
1467
|
-
</tr>
|
|
1468
|
-
<tr class="row-odd"><td><code class="docutils literal"><span class="pre">^a$|^b$|^c$</span></code></td>
|
|
1469
|
-
<td><code class="docutils literal"><span class="pre">IN</span> <span class="pre">('a','b','c')</span></code></td>
|
|
1470
|
-
</tr>
|
|
1471
|
-
</tbody>
|
|
1472
|
-
</table>
|
|
1473
|
-
<p><em>Regular expressions and operators</em></p>
|
|
1474
|
-
</div>
|
|
1475
|
-
<div class="section" id="optimize-for-partial-parsing">
|
|
1476
|
-
<h3>Optimize for Partial Parsing<a class="headerlink" href="#optimize-for-partial-parsing" title="Permalink to this headline">¶</a></h3>
|
|
1477
|
-
<p>Most AMPS message types have the ability to <em>partially parse</em> messages.
|
|
1478
|
-
That is, rather than parsing the entire message, the message type can
|
|
1479
|
-
simply find the identifiers that will be used, and stop the parsing
|
|
1480
|
-
process as soon as those identifiers are found.</p>
|
|
1481
|
-
<p>This optimization is most useful for larger messages. For example,
|
|
1482
|
-
if the SOW key for a topic is based on the <code class="docutils literal"><span class="pre">/id</span></code> field of a message and
|
|
1483
|
-
there are active content filters that use both the <code class="docutils literal"><span class="pre">/id</span></code> field and the
|
|
1484
|
-
<code class="docutils literal"><span class="pre">/code</span></code> field, while no other field is being indexed, then, considering
|
|
1485
|
-
the message below:</p>
|
|
1486
|
-
<div class="code js highlight-default"><div class="highlight"><pre><span></span><span class="p">{</span><span class="s2">"id"</span><span class="p">:</span><span class="mi">24</span><span class="p">,</span><span class="s2">"code"</span><span class="p">:</span><span class="s2">"A12347"</span><span class="p">,</span><span class="s2">"notes"</span><span class="p">:</span><span class="s2">"entered on behalf of a sloth"</span><span class="p">,</span>
|
|
1487
|
-
<span class="o">//</span> <span class="o">...</span> <span class="mi">100</span><span class="n">K</span> <span class="n">of</span> <span class="n">other</span> <span class="n">data</span> <span class="o">...</span>
|
|
1488
|
-
<span class="p">}</span>
|
|
1489
|
-
</pre></div>
|
|
1490
|
-
</div>
|
|
1491
|
-
<p>The AMPS parser can stop parsing after processing only the <code class="docutils literal"><span class="pre">/id</span></code> and the
|
|
1492
|
-
<code class="docutils literal"><span class="pre">/code</span></code> fields. In this case, halting the parsing after processing these two
|
|
1493
|
-
fields avoids the expense of parsing the remaining parts of the message.</p>
|
|
1494
|
-
<p>Notice that this optimization will only improve performance in cases
|
|
1495
|
-
where AMPS doesn’t need to parse the entire message. For example, if
|
|
1496
|
-
there is a <code class="docutils literal"><span class="pre">delta_subscribe</span></code> active for the topic, or if the
|
|
1497
|
-
command being processed is a <code class="docutils literal"><span class="pre">delta_publish</span></code>, AMPS will parse the
|
|
1498
|
-
message completely to be able to calculate the deltas. Likewise, if
|
|
1499
|
-
any filter refers to a field that doesn’t appear in the message,
|
|
1500
|
-
AMPS will parse the message completely to be able to determine that
|
|
1501
|
-
the field does not appear in the message.</p>
|
|
1502
|
-
</div>
|
|
1503
|
-
<div class="section" id="sow-queries-and-indexing">
|
|
1504
|
-
<h3>SOW Queries and Indexing<a class="headerlink" href="#sow-queries-and-indexing" title="Permalink to this headline">¶</a></h3>
|
|
1505
|
-
<p>Queries over topics in the State of the World (SOW) have additional performance
|
|
1506
|
-
considerations. AMPS maintains indexes over SOW topics to help locate messages
|
|
1507
|
-
in response to a query.</p>
|
|
1508
|
-
<ul class="simple">
|
|
1509
|
-
<li>Queries over a topic in the SOW can use SOW topic indexes. Where
|
|
1510
|
-
possible, use an exact string match and create a hash index to
|
|
1511
|
-
take advantage of hash indexes.</li>
|
|
1512
|
-
<li>When a query is submitted with an XPath identifier for which no index
|
|
1513
|
-
exists, AMPS will create and populate a memo index for that XPath
|
|
1514
|
-
identifier. This can add to the amount of time a query takes the
|
|
1515
|
-
first time a given XPath identifier is queried. You can specify that
|
|
1516
|
-
AMPS creates a memo index for a given identifier by using the
|
|
1517
|
-
<code class="docutils literal"><span class="pre">Index</span></code> configuration item in the <code class="docutils literal"><span class="pre">Topic</span></code> definition. Once
|
|
1518
|
-
an index is created, AMPS will continue to search for that XPath
|
|
1519
|
-
identifier in incoming messages for that topic to keep the index
|
|
1520
|
-
up to date.</li>
|
|
1521
|
-
</ul>
|
|
1522
|
-
<p>Notice that SOW topic indexes are only used for <code class="docutils literal"><span class="pre">sow</span></code> commands and during
|
|
1523
|
-
the <code class="docutils literal"><span class="pre">sow</span></code> portion of a <code class="docutils literal"><span class="pre">sow_and_subscribe</span></code> (or <code class="docutils literal"><span class="pre">sow_and_delta_subscribe</span></code>)
|
|
1524
|
-
command. Once the subscription to current updates begins, the subscription
|
|
1525
|
-
does not use a SOW topic index because there is no need to locate
|
|
1526
|
-
a message. During a subscription, filters are run against the current
|
|
1527
|
-
message.</p>
|
|
1528
|
-
<p>See <a class="reference internal" href="sow.html#ug-sow-indexing"><span class="std std-ref">SOW Indexing</span></a> for details.</p>
|
|
1529
|
-
</div>
|
|
1530
|
-
</div>
|
|
1531
|
-
</div>
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
</div>
|
|
1535
|
-
</div>
|
|
1536
|
-
</div>
|
|
1537
|
-
<div class="clearer"></div>
|
|
1538
|
-
</div>
|
|
1539
|
-
<div class="footer">
|
|
1540
|
-
©2023 60East Technologies, Inc. (version develop).
|
|
1541
|
-
|
|
1542
|
-
|
|
|
1543
|
-
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
|
|
1544
|
-
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
|
|
1545
|
-
|
|
1546
|
-
</div>
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
</body>
|
|
1552
|
-
</html>
|