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.
Files changed (917) hide show
  1. amps-python-client-5.3.4.2/PKG-INFO +112 -0
  2. amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
  3. amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
  4. amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
  5. amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
  6. amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
  7. amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
  8. amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
  9. amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
  10. amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
  11. amps-python-client-5.3.4.2/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
  12. amps-python-client-5.3.4.2/docs/command-reference/doctrees/environment.pickle +0 -0
  13. amps-python-client-5.3.4.2/docs/command-reference/doctrees/index.doctree +0 -0
  14. amps-python-client-5.3.4.2/docs/command-reference/html/.buildinfo +4 -0
  15. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +8 -0
  16. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +8 -0
  17. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/intro.rst.txt +8 -0
  18. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/logon.rst.txt +8 -0
  19. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +8 -0
  20. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/publishing.rst.txt +8 -0
  21. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +8 -0
  22. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +8 -0
  23. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/removing.rst.txt +8 -0
  24. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/chapters/utilities.rst.txt +8 -0
  25. amps-python-client-5.3.4.2/docs/command-reference/html/_sources/index.rst.txt +36 -0
  26. amps-python-client-5.3.4.2/docs/command-reference/html/_static/custom.css +161 -0
  27. amps-python-client-5.3.4.2/docs/command-reference/html/chapters/ack-messages.html +95 -0
  28. amps-python-client-5.3.4.2/docs/command-reference/html/chapters/content-messages.html +95 -0
  29. amps-python-client-5.3.4.2/docs/command-reference/html/chapters/intro.html +95 -0
  30. amps-python-client-5.3.4.2/docs/command-reference/html/chapters/logon.html +95 -0
  31. amps-python-client-5.3.4.2/docs/command-reference/html/chapters/protocol-reference.html +93 -0
  32. amps-python-client-5.3.4.2/docs/command-reference/html/chapters/publishing.html +95 -0
  33. amps-python-client-5.3.4.2/docs/command-reference/html/chapters/query-delimiters.html +95 -0
  34. amps-python-client-5.3.4.2/docs/command-reference/html/chapters/query-subscribe.html +95 -0
  35. amps-python-client-5.3.4.2/docs/command-reference/html/chapters/removing.html +95 -0
  36. amps-python-client-5.3.4.2/docs/command-reference/html/chapters/utilities.html +95 -0
  37. amps-python-client-5.3.4.2/docs/command-reference/html/genindex.html +97 -0
  38. amps-python-client-5.3.4.2/docs/command-reference/html/index.html +98 -0
  39. amps-python-client-5.3.4.2/docs/command-reference/html/objects.inv +6 -0
  40. amps-python-client-5.3.4.2/docs/command-reference/html/search.html +107 -0
  41. amps-python-client-5.3.4.2/docs/command-reference/html/searchindex.js +1 -0
  42. amps-python-client-5.3.4.2/docs/html/.buildinfo +4 -0
  43. amps-python-client-5.3.4.2/docs/html/code.html +6616 -0
  44. amps-python-client-5.3.4.2/docs/html/genindex.html +1363 -0
  45. amps-python-client-5.3.4.2/docs/html/index.html +131 -0
  46. amps-python-client-5.3.4.2/docs/html/objects.inv +0 -0
  47. amps-python-client-5.3.4.2/docs/html/py-modindex.html +111 -0
  48. amps-python-client-5.3.4.2/docs/html/search.html +107 -0
  49. amps-python-client-5.3.4.2/docs/html/searchindex.js +1 -0
  50. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
  51. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
  52. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
  53. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
  54. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/deltas.doctree +0 -0
  55. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/error-handling.doctree +0 -0
  56. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/exceptions.doctree +0 -0
  57. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/first-program.doctree +0 -0
  58. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/high-availability.doctree +0 -0
  59. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/installing.doctree +0 -0
  60. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/introduction.doctree +0 -0
  61. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
  62. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
  63. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/queues.doctree +0 -0
  64. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/sow.doctree +0 -0
  65. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
  66. amps-python-client-5.3.4.2/docs/python/doctrees/chapters/utilities.doctree +0 -0
  67. amps-python-client-5.3.4.2/docs/python/doctrees/environment.pickle +0 -0
  68. amps-python-client-5.3.4.2/docs/python/doctrees/index.doctree +0 -0
  69. amps-python-client-5.3.4.2/docs/python/html/.buildinfo +4 -0
  70. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/advanced-topics.rst.txt +398 -0
  71. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +26 -0
  72. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/creating-commands.rst.txt +159 -0
  73. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/deltas.rst.txt +79 -0
  74. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/error-handling.rst.txt +481 -0
  75. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/exceptions.rst.txt +123 -0
  76. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/first-program.rst.txt +168 -0
  77. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/high-availability.rst.txt +879 -0
  78. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/installing.rst.txt +184 -0
  79. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/introduction.rst.txt +50 -0
  80. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +32 -0
  81. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/performance-tips.rst.txt +432 -0
  82. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/queues.rst.txt +282 -0
  83. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/sow.rst.txt +294 -0
  84. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/subscriptions.rst.txt +374 -0
  85. amps-python-client-5.3.4.2/docs/python/html/_sources/chapters/utilities.rst.txt +214 -0
  86. amps-python-client-5.3.4.2/docs/python/html/_static/custom.css +161 -0
  87. amps-python-client-5.3.4.2/docs/python/html/chapters/advanced-topics.html +447 -0
  88. amps-python-client-5.3.4.2/docs/python/html/chapters/cpp-compiler-list.html +92 -0
  89. amps-python-client-5.3.4.2/docs/python/html/chapters/cpp-feature-table.html +156 -0
  90. amps-python-client-5.3.4.2/docs/python/html/chapters/creating-commands.html +2882 -0
  91. amps-python-client-5.3.4.2/docs/python/html/chapters/deltas.html +169 -0
  92. amps-python-client-5.3.4.2/docs/python/html/chapters/error-handling.html +745 -0
  93. amps-python-client-5.3.4.2/docs/python/html/chapters/exceptions.html +266 -0
  94. amps-python-client-5.3.4.2/docs/python/html/chapters/first-program.html +526 -0
  95. amps-python-client-5.3.4.2/docs/python/html/chapters/high-availability.html +1017 -0
  96. amps-python-client-5.3.4.2/docs/python/html/chapters/installing.html +264 -0
  97. amps-python-client-5.3.4.2/docs/python/html/chapters/introduction.html +245 -0
  98. amps-python-client-5.3.4.2/docs/python/html/chapters/moving-from-python-lite.html +118 -0
  99. amps-python-client-5.3.4.2/docs/python/html/chapters/performance-tips.html +499 -0
  100. amps-python-client-5.3.4.2/docs/python/html/chapters/queues.html +352 -0
  101. amps-python-client-5.3.4.2/docs/python/html/chapters/sow.html +383 -0
  102. amps-python-client-5.3.4.2/docs/python/html/chapters/subscriptions.html +535 -0
  103. amps-python-client-5.3.4.2/docs/python/html/chapters/utilities.html +302 -0
  104. amps-python-client-5.3.4.2/docs/python/html/genindex.html +351 -0
  105. amps-python-client-5.3.4.2/docs/python/html/index.html +382 -0
  106. amps-python-client-5.3.4.2/docs/python/html/objects.inv +0 -0
  107. amps-python-client-5.3.4.2/docs/python/html/search.html +107 -0
  108. amps-python-client-5.3.4.2/docs/python/html/searchindex.js +1 -0
  109. amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
  110. amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
  111. amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/environment.pickle +0 -0
  112. amps-python-client-5.3.4.2/docs/python-quickstart/doctrees/index.doctree +0 -0
  113. amps-python-client-5.3.4.2/docs/python-quickstart/html/.buildinfo +4 -0
  114. amps-python-client-5.3.4.2/docs/python-quickstart/html/_static/custom.css +161 -0
  115. amps-python-client-5.3.4.2/docs/python-quickstart/html/chapters/crankitup.html +271 -0
  116. amps-python-client-5.3.4.2/docs/python-quickstart/html/chapters/equipment.html +105 -0
  117. amps-python-client-5.3.4.2/docs/python-quickstart/html/genindex.html +97 -0
  118. amps-python-client-5.3.4.2/docs/python-quickstart/html/index.html +381 -0
  119. amps-python-client-5.3.4.2/docs/python-quickstart/html/objects.inv +0 -0
  120. amps-python-client-5.3.4.2/docs/python-quickstart/html/search.html +107 -0
  121. amps-python-client-5.3.4.2/docs/python-quickstart/html/searchindex.js +1 -0
  122. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
  123. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
  124. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
  125. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
  126. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
  127. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
  128. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
  129. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
  130. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
  131. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
  132. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
  133. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
  134. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
  135. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/events.doctree +0 -0
  136. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
  137. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
  138. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
  139. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
  140. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
  141. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
  142. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
  143. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
  144. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
  145. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
  146. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
  147. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
  148. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
  149. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
  150. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
  151. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
  152. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
  153. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
  154. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
  155. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
  156. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
  157. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
  158. amps-python-client-5.3.4.2/docs/user-guide/doctrees/chapters/views.doctree +0 -0
  159. amps-python-client-5.3.4.2/docs/user-guide/doctrees/environment.pickle +0 -0
  160. amps-python-client-5.3.4.2/docs/user-guide/doctrees/index.doctree +0 -0
  161. amps-python-client-5.3.4.2/docs/user-guide/html/.buildinfo +4 -0
  162. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/acks.rst.txt +8 -0
  163. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/actions.rst.txt +8 -0
  164. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +8 -0
  165. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +8 -0
  166. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +8 -0
  167. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +8 -0
  168. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +8 -0
  169. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +8 -0
  170. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +8 -0
  171. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/daemon.rst.txt +8 -0
  172. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/delta.rst.txt +8 -0
  173. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/distribution.rst.txt +8 -0
  174. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +8 -0
  175. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/events.rst.txt +8 -0
  176. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +8 -0
  177. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/glossary.rst.txt +8 -0
  178. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/ha.rst.txt +8 -0
  179. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +8 -0
  180. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/intro.rst.txt +8 -0
  181. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/logging.rst.txt +8 -0
  182. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +8 -0
  183. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +8 -0
  184. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/oof.rst.txt +8 -0
  185. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/operation.rst.txt +8 -0
  186. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +8 -0
  187. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/queues.rst.txt +8 -0
  188. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/replication.rst.txt +8 -0
  189. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/securing.rst.txt +8 -0
  190. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/sow.rst.txt +8 -0
  191. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +8 -0
  192. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/transports.rst.txt +8 -0
  193. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +8 -0
  194. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/txlog.rst.txt +8 -0
  195. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/usecases.rst.txt +8 -0
  196. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/utilities.rst.txt +8 -0
  197. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/chapters/views.rst.txt +8 -0
  198. amps-python-client-5.3.4.2/docs/user-guide/html/_sources/index.rst.txt +62 -0
  199. amps-python-client-5.3.4.2/docs/user-guide/html/_static/custom.css +161 -0
  200. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/acks.html +94 -0
  201. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/actions.html +94 -0
  202. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/amps-statistics.html +94 -0
  203. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/amps_expressions.html +94 -0
  204. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/amps_functions.html +94 -0
  205. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/auxiliary_modules.html +94 -0
  206. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/config-file-shortcuts.html +94 -0
  207. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/conflated_topics.html +94 -0
  208. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/constructing-fields.html +94 -0
  209. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/daemon.html +94 -0
  210. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/delta.html +94 -0
  211. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/distribution.html +94 -0
  212. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/enrichment.html +94 -0
  213. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/events.html +94 -0
  214. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/file_format_versions.html +94 -0
  215. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/glossary.html +92 -0
  216. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/ha.html +94 -0
  217. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/installing_and_starting.html +94 -0
  218. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/intro.html +94 -0
  219. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/logging.html +94 -0
  220. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/messageTypes.html +94 -0
  221. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/monitoring.html +94 -0
  222. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/oof.html +94 -0
  223. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/operation.html +94 -0
  224. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/pub_sub.html +94 -0
  225. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/queues.html +94 -0
  226. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/replication.html +94 -0
  227. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/securing.html +94 -0
  228. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/sow.html +94 -0
  229. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/sow_queries.html +94 -0
  230. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/spark.html +819 -0
  231. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/transports.html +94 -0
  232. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/troubleshooting.html +94 -0
  233. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/txlog.html +94 -0
  234. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/usecases.html +94 -0
  235. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/utilities.html +94 -0
  236. amps-python-client-5.3.4.2/docs/user-guide/html/chapters/views.html +94 -0
  237. amps-python-client-5.3.4.2/docs/user-guide/html/genindex.html +133 -0
  238. amps-python-client-5.3.4.2/docs/user-guide/html/index.html +96 -0
  239. amps-python-client-5.3.4.2/docs/user-guide/html/objects.inv +0 -0
  240. amps-python-client-5.3.4.2/docs/user-guide/html/search.html +106 -0
  241. amps-python-client-5.3.4.2/docs/user-guide/html/searchindex.js +1 -0
  242. amps-python-client-5.3.4.2/include/ampspy_bookmarkstore.hpp +63 -0
  243. amps-python-client-5.3.4.2/include/ampspy_compat.h +63 -0
  244. amps-python-client-5.3.4.2/include/ampspy_defs.hpp +181 -0
  245. amps-python-client-5.3.4.2/include/ampspy_recoverypointadapter.hpp +52 -0
  246. amps-python-client-5.3.4.2/include/ampspy_shims.hpp +113 -0
  247. amps-python-client-5.3.4.2/include/ampspy_type_object.hpp +242 -0
  248. amps-python-client-5.3.4.2/include/ampspy_types.hpp +1139 -0
  249. amps-python-client-5.3.4.2/include/ampspyver.h +30 -0
  250. amps-python-client-5.3.4.2/index.html +66 -0
  251. amps-python-client-5.3.4.2/samples/AMPSConsolePublisher.py +59 -0
  252. amps-python-client-5.3.4.2/samples/AMPSConsoleSubscriber.py +63 -0
  253. amps-python-client-5.3.4.2/samples/AMPSFIXBuilderPublisher.py +71 -0
  254. amps-python-client-5.3.4.2/samples/AMPSFIXShredderSubscriber.py +69 -0
  255. amps-python-client-5.3.4.2/samples/AMPSNVFIXBuilderPublisher.py +71 -0
  256. amps-python-client-5.3.4.2/samples/AMPSNVFIXShredderSubscriber.py +67 -0
  257. amps-python-client-5.3.4.2/samples/AMPSPublishForReplay.py +81 -0
  258. amps-python-client-5.3.4.2/samples/AMPSQueueConsumer.py +69 -0
  259. amps-python-client-5.3.4.2/samples/AMPSQueuePublisher.py +59 -0
  260. amps-python-client-5.3.4.2/samples/AMPSSOWConsolePublisher.py +67 -0
  261. amps-python-client-5.3.4.2/samples/AMPSSOWConsoleSubscriber.py +77 -0
  262. amps-python-client-5.3.4.2/samples/AMPSSOWandSubscribeConsoleSubscriber.py +79 -0
  263. amps-python-client-5.3.4.2/samples/AMPSSOWandSubscribeWithOOF.py +108 -0
  264. amps-python-client-5.3.4.2/samples/AMPSSubscribeForReplay.py +128 -0
  265. amps-python-client-5.3.4.2/samples/AMPSUpdateForOOF.py +123 -0
  266. amps-python-client-5.3.4.2/samples/CompositeMessagePublisher.py +84 -0
  267. amps-python-client-5.3.4.2/samples/CompositeMessageSubscriber.py +87 -0
  268. amps-python-client-5.3.4.2/samples/RandomServerChooser.py +66 -0
  269. amps-python-client-5.3.4.2/samples/sample.xml +335 -0
  270. amps-python-client-5.3.4.2/setup.py +210 -0
  271. amps-python-client-5.3.4.2/setup_amps.py +94 -0
  272. amps-python-client-5.3.4.2/src/ampspy_shims.cpp +214 -0
  273. amps-python-client-5.3.4.2/src/ampspy_type_object.cpp +495 -0
  274. amps-python-client-5.3.4.2/src/authenticator.cpp +128 -0
  275. amps-python-client-5.3.4.2/src/bookmarkstore.cpp +246 -0
  276. amps-python-client-5.3.4.2/src/client.cpp +2648 -0
  277. amps-python-client-5.3.4.2/src/client_docs.h +956 -0
  278. amps-python-client-5.3.4.2/src/cmessagehandler.cpp +161 -0
  279. amps-python-client-5.3.4.2/src/command.cpp +164 -0
  280. amps-python-client-5.3.4.2/src/command_docs.h +269 -0
  281. amps-python-client-5.3.4.2/src/compositemessagebuilder.cpp +113 -0
  282. amps-python-client-5.3.4.2/src/compositemessageparser.cpp +151 -0
  283. amps-python-client-5.3.4.2/src/conflatingrecoverypointadapter.cpp +197 -0
  284. amps-python-client-5.3.4.2/src/cpp/include/amps/BlockPublishStore.hpp +2053 -0
  285. amps-python-client-5.3.4.2/src/cpp/include/amps/BlockStore.hpp +677 -0
  286. amps-python-client-5.3.4.2/src/cpp/include/amps/BookmarkStore.hpp +542 -0
  287. amps-python-client-5.3.4.2/src/cpp/include/amps/Buffer.hpp +214 -0
  288. amps-python-client-5.3.4.2/src/cpp/include/amps/CompositeMessageBuilder.hpp +174 -0
  289. amps-python-client-5.3.4.2/src/cpp/include/amps/CompositeMessageParser.hpp +151 -0
  290. amps-python-client-5.3.4.2/src/cpp/include/amps/DefaultServerChooser.hpp +162 -0
  291. amps-python-client-5.3.4.2/src/cpp/include/amps/Field.hpp +719 -0
  292. amps-python-client-5.3.4.2/src/cpp/include/amps/HAClient.hpp +370 -0
  293. amps-python-client-5.3.4.2/src/cpp/include/amps/HAClientImpl.hpp +460 -0
  294. amps-python-client-5.3.4.2/src/cpp/include/amps/HybridPublishStore.hpp +481 -0
  295. amps-python-client-5.3.4.2/src/cpp/include/amps/LoggedBookmarkStore.hpp +1256 -0
  296. amps-python-client-5.3.4.2/src/cpp/include/amps/MMapBookmarkStore.hpp +1283 -0
  297. amps-python-client-5.3.4.2/src/cpp/include/amps/MMapStoreBuffer.hpp +290 -0
  298. amps-python-client-5.3.4.2/src/cpp/include/amps/MemoryBookmarkStore.hpp +1628 -0
  299. amps-python-client-5.3.4.2/src/cpp/include/amps/MemoryPublishStore.hpp +66 -0
  300. amps-python-client-5.3.4.2/src/cpp/include/amps/MemoryStoreBuffer.hpp +244 -0
  301. amps-python-client-5.3.4.2/src/cpp/include/amps/MemorySubscriptionManager.hpp +850 -0
  302. amps-python-client-5.3.4.2/src/cpp/include/amps/Message.hpp +1819 -0
  303. amps-python-client-5.3.4.2/src/cpp/include/amps/MessageRouter.hpp +647 -0
  304. amps-python-client-5.3.4.2/src/cpp/include/amps/PublishStore.hpp +158 -0
  305. amps-python-client-5.3.4.2/src/cpp/include/amps/ReconnectDelayStrategy.hpp +106 -0
  306. amps-python-client-5.3.4.2/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +317 -0
  307. amps-python-client-5.3.4.2/src/cpp/include/amps/RecoveryPoint.hpp +323 -0
  308. amps-python-client-5.3.4.2/src/cpp/include/amps/RecoveryPointAdapter.hpp +501 -0
  309. amps-python-client-5.3.4.2/src/cpp/include/amps/RingBookmarkStore.hpp +669 -0
  310. amps-python-client-5.3.4.2/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +494 -0
  311. amps-python-client-5.3.4.2/src/cpp/include/amps/ServerChooser.hpp +145 -0
  312. amps-python-client-5.3.4.2/src/cpp/include/amps/ServerChooserImpl.hpp +95 -0
  313. amps-python-client-5.3.4.2/src/cpp/include/amps/amps.h +803 -0
  314. amps-python-client-5.3.4.2/src/cpp/include/amps/amps_impl.h +208 -0
  315. amps-python-client-5.3.4.2/src/cpp/include/amps/amps_ssl.h +78 -0
  316. amps-python-client-5.3.4.2/src/cpp/include/amps/ampscrc.hpp +210 -0
  317. amps-python-client-5.3.4.2/src/cpp/include/amps/ampsplusplus.hpp +8850 -0
  318. amps-python-client-5.3.4.2/src/cpp/include/amps/ampsuri.h +84 -0
  319. amps-python-client-5.3.4.2/src/cpp/include/amps/ampsver.h +41 -0
  320. amps-python-client-5.3.4.2/src/cpp/include/amps/ampsver.h.in +41 -0
  321. amps-python-client-5.3.4.2/src/cpp/include/amps/constants.hpp +194 -0
  322. amps-python-client-5.3.4.2/src/cpp/include/amps/util.hpp +1722 -0
  323. amps-python-client-5.3.4.2/src/cpp/src/amps_protocol.c +693 -0
  324. amps-python-client-5.3.4.2/src/cpp/src/amps_ssl.c +489 -0
  325. amps-python-client-5.3.4.2/src/cpp/src/atfork.c +451 -0
  326. amps-python-client-5.3.4.2/src/cpp/src/client.c +498 -0
  327. amps-python-client-5.3.4.2/src/cpp/src/message.c +837 -0
  328. amps-python-client-5.3.4.2/src/cpp/src/message_generated.h +611 -0
  329. amps-python-client-5.3.4.2/src/cpp/src/tcp.c +1517 -0
  330. amps-python-client-5.3.4.2/src/cpp/src/tcps.c +1885 -0
  331. amps-python-client-5.3.4.2/src/cpp/src/transports.c +129 -0
  332. amps-python-client-5.3.4.2/src/cpp/src/unix.c +1002 -0
  333. amps-python-client-5.3.4.2/src/cpp/src/uri.c +301 -0
  334. amps-python-client-5.3.4.2/src/exponentialdelaystrategy.cpp +137 -0
  335. amps-python-client-5.3.4.2/src/failedwritehandler.cpp +116 -0
  336. amps-python-client-5.3.4.2/src/fixbuilder.cpp +146 -0
  337. amps-python-client-5.3.4.2/src/fixeddelaystrategy.cpp +114 -0
  338. amps-python-client-5.3.4.2/src/fixshredder.cpp +105 -0
  339. amps-python-client-5.3.4.2/src/fixshredder_docs.h +38 -0
  340. amps-python-client-5.3.4.2/src/haclient.cpp +691 -0
  341. amps-python-client-5.3.4.2/src/haclient_docs.h +186 -0
  342. amps-python-client-5.3.4.2/src/hybridpublishstore.cpp +137 -0
  343. amps-python-client-5.3.4.2/src/hybridpublishstore_docs.h +31 -0
  344. amps-python-client-5.3.4.2/src/memorybookmarkstore.cpp +373 -0
  345. amps-python-client-5.3.4.2/src/memorybookmarkstore_docs.h +39 -0
  346. amps-python-client-5.3.4.2/src/memorypublishstore.cpp +160 -0
  347. amps-python-client-5.3.4.2/src/memorypublishstore_docs.h +32 -0
  348. amps-python-client-5.3.4.2/src/message.cpp +765 -0
  349. amps-python-client-5.3.4.2/src/message_docs.h +306 -0
  350. amps-python-client-5.3.4.2/src/messagestream.cpp +630 -0
  351. amps-python-client-5.3.4.2/src/messagestream_docs.h +45 -0
  352. amps-python-client-5.3.4.2/src/mmapbookmarkstore.cpp +422 -0
  353. amps-python-client-5.3.4.2/src/nvfixbuilder.cpp +160 -0
  354. amps-python-client-5.3.4.2/src/nvfixbuilder_docs.h +35 -0
  355. amps-python-client-5.3.4.2/src/nvfixshredder.cpp +99 -0
  356. amps-python-client-5.3.4.2/src/nvfixshredder_docs.h +43 -0
  357. amps-python-client-5.3.4.2/src/publishstore.cpp +183 -0
  358. amps-python-client-5.3.4.2/src/raw_wrapper.cpp +765 -0
  359. amps-python-client-5.3.4.2/src/reason.cpp +71 -0
  360. amps-python-client-5.3.4.2/src/recoverypoint.cpp +135 -0
  361. amps-python-client-5.3.4.2/src/recoverypointadapter.cpp +171 -0
  362. amps-python-client-5.3.4.2/src/ringbookmarkstore.cpp +360 -0
  363. amps-python-client-5.3.4.2/src/serverchooser.cpp +245 -0
  364. amps-python-client-5.3.4.2/src/serverchooser_docs.h +41 -0
  365. amps-python-client-5.3.4.2/src/sowrecoverypointadapter.cpp +248 -0
  366. amps-python-client-5.3.4.2/src/store.cpp +62 -0
  367. amps-python-client-5.3.4.2/src/versioninfo.cpp +175 -0
  368. amps-python-client-5.3.4.1/PKG-INFO +0 -112
  369. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
  370. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
  371. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
  372. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
  373. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
  374. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
  375. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
  376. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
  377. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
  378. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
  379. amps-python-client-5.3.4.1/docs/command-reference/doctrees/environment.pickle +0 -0
  380. amps-python-client-5.3.4.1/docs/command-reference/doctrees/index.doctree +0 -0
  381. amps-python-client-5.3.4.1/docs/command-reference/html/.buildinfo +0 -4
  382. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +0 -32
  383. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +0 -27
  384. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/intro.rst.txt +0 -43
  385. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/logon.rst.txt +0 -231
  386. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +0 -1474
  387. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/publishing.rst.txt +0 -25
  388. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +0 -12
  389. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +0 -23
  390. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/removing.rst.txt +0 -6
  391. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/utilities.rst.txt +0 -13
  392. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/index.rst.txt +0 -56
  393. amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css +0 -192
  394. amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css.backup +0 -161
  395. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/ack-messages.html +0 -417
  396. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/content-messages.html +0 -417
  397. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/intro.html +0 -126
  398. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/logon.html +0 -295
  399. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/protocol-reference.html +0 -1190
  400. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/publishing.html +0 -436
  401. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-delimiters.html +0 -173
  402. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-subscribe.html +0 -2123
  403. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/removing.html +0 -299
  404. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/utilities.html +0 -287
  405. amps-python-client-5.3.4.1/docs/command-reference/html/genindex.html +0 -97
  406. amps-python-client-5.3.4.1/docs/command-reference/html/index.html +0 -138
  407. amps-python-client-5.3.4.1/docs/command-reference/html/objects.inv +0 -0
  408. amps-python-client-5.3.4.1/docs/command-reference/html/search.html +0 -107
  409. amps-python-client-5.3.4.1/docs/command-reference/html/searchindex.js +0 -1
  410. amps-python-client-5.3.4.1/docs/html/.buildinfo +0 -4
  411. amps-python-client-5.3.4.1/docs/html/code.html +0 -6503
  412. amps-python-client-5.3.4.1/docs/html/genindex.html +0 -1361
  413. amps-python-client-5.3.4.1/docs/html/index.html +0 -131
  414. amps-python-client-5.3.4.1/docs/html/objects.inv +0 -0
  415. amps-python-client-5.3.4.1/docs/html/py-modindex.html +0 -111
  416. amps-python-client-5.3.4.1/docs/html/search.html +0 -107
  417. amps-python-client-5.3.4.1/docs/html/searchindex.js +0 -1
  418. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
  419. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
  420. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
  421. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
  422. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/deltas.doctree +0 -0
  423. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/error-handling.doctree +0 -0
  424. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/exceptions.doctree +0 -0
  425. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/first-program.doctree +0 -0
  426. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/high-availability.doctree +0 -0
  427. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/installing.doctree +0 -0
  428. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/introduction.doctree +0 -0
  429. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
  430. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
  431. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/queues.doctree +0 -0
  432. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/sow.doctree +0 -0
  433. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
  434. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/utilities.doctree +0 -0
  435. amps-python-client-5.3.4.1/docs/python/doctrees/environment.pickle +0 -0
  436. amps-python-client-5.3.4.1/docs/python/doctrees/index.doctree +0 -0
  437. amps-python-client-5.3.4.1/docs/python/html/.buildinfo +0 -4
  438. amps-python-client-5.3.4.1/docs/python/html/_images/caution.svg +0 -25
  439. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/advanced-topics.rst.txt +0 -398
  440. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +0 -26
  441. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/creating-commands.rst.txt +0 -159
  442. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/deltas.rst.txt +0 -79
  443. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/error-handling.rst.txt +0 -482
  444. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/exceptions.rst.txt +0 -128
  445. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/first-program.rst.txt +0 -142
  446. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/high-availability.rst.txt +0 -876
  447. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/installing.rst.txt +0 -184
  448. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/introduction.rst.txt +0 -50
  449. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +0 -32
  450. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/performance-tips.rst.txt +0 -434
  451. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/queues.rst.txt +0 -282
  452. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/sow.rst.txt +0 -292
  453. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/subscriptions.rst.txt +0 -374
  454. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/utilities.rst.txt +0 -214
  455. amps-python-client-5.3.4.1/docs/python/html/_static/custom.css +0 -192
  456. amps-python-client-5.3.4.1/docs/python/html/_static/custom.css.backup +0 -161
  457. amps-python-client-5.3.4.1/docs/python/html/chapters/advanced-topics.html +0 -447
  458. amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-compiler-list.html +0 -92
  459. amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-feature-table.html +0 -156
  460. amps-python-client-5.3.4.1/docs/python/html/chapters/creating-commands.html +0 -2837
  461. amps-python-client-5.3.4.1/docs/python/html/chapters/deltas.html +0 -169
  462. amps-python-client-5.3.4.1/docs/python/html/chapters/error-handling.html +0 -746
  463. amps-python-client-5.3.4.1/docs/python/html/chapters/exceptions.html +0 -272
  464. amps-python-client-5.3.4.1/docs/python/html/chapters/first-program.html +0 -499
  465. amps-python-client-5.3.4.1/docs/python/html/chapters/high-availability.html +0 -1014
  466. amps-python-client-5.3.4.1/docs/python/html/chapters/installing.html +0 -264
  467. amps-python-client-5.3.4.1/docs/python/html/chapters/introduction.html +0 -245
  468. amps-python-client-5.3.4.1/docs/python/html/chapters/moving-from-python-lite.html +0 -118
  469. amps-python-client-5.3.4.1/docs/python/html/chapters/performance-tips.html +0 -499
  470. amps-python-client-5.3.4.1/docs/python/html/chapters/queues.html +0 -352
  471. amps-python-client-5.3.4.1/docs/python/html/chapters/sow.html +0 -381
  472. amps-python-client-5.3.4.1/docs/python/html/chapters/subscriptions.html +0 -535
  473. amps-python-client-5.3.4.1/docs/python/html/chapters/utilities.html +0 -302
  474. amps-python-client-5.3.4.1/docs/python/html/genindex.html +0 -351
  475. amps-python-client-5.3.4.1/docs/python/html/index.html +0 -380
  476. amps-python-client-5.3.4.1/docs/python/html/objects.inv +0 -0
  477. amps-python-client-5.3.4.1/docs/python/html/search.html +0 -107
  478. amps-python-client-5.3.4.1/docs/python/html/searchindex.js +0 -1
  479. amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
  480. amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
  481. amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/environment.pickle +0 -0
  482. amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/index.doctree +0 -0
  483. amps-python-client-5.3.4.1/docs/python-quickstart/html/.buildinfo +0 -4
  484. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css +0 -192
  485. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css.backup +0 -161
  486. amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/crankitup.html +0 -271
  487. amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/equipment.html +0 -105
  488. amps-python-client-5.3.4.1/docs/python-quickstart/html/genindex.html +0 -97
  489. amps-python-client-5.3.4.1/docs/python-quickstart/html/index.html +0 -382
  490. amps-python-client-5.3.4.1/docs/python-quickstart/html/objects.inv +0 -0
  491. amps-python-client-5.3.4.1/docs/python-quickstart/html/search.html +0 -107
  492. amps-python-client-5.3.4.1/docs/python-quickstart/html/searchindex.js +0 -1
  493. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
  494. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
  495. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
  496. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
  497. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
  498. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
  499. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
  500. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
  501. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
  502. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
  503. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
  504. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
  505. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
  506. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/events.doctree +0 -0
  507. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
  508. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
  509. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
  510. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
  511. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
  512. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
  513. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
  514. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
  515. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
  516. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
  517. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
  518. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
  519. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
  520. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
  521. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
  522. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
  523. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
  524. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
  525. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
  526. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
  527. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
  528. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
  529. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/views.doctree +0 -0
  530. amps-python-client-5.3.4.1/docs/user-guide/doctrees/environment.pickle +0 -0
  531. amps-python-client-5.3.4.1/docs/user-guide/doctrees/index.doctree +0 -0
  532. amps-python-client-5.3.4.1/docs/user-guide/html/.buildinfo +0 -4
  533. amps-python-client-5.3.4.1/docs/user-guide/html/_images/AMPS-Queues-Intro.svg +0 -1330
  534. amps-python-client-5.3.4.1/docs/user-guide/html/_images/GeoRepl.png +0 -0
  535. amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_async_ack.png +0 -0
  536. amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_sync_ack.png +0 -0
  537. amps-python-client-5.3.4.1/docs/user-guide/html/_images/Hot-Hot-Replication.png +0 -0
  538. amps-python-client-5.3.4.1/docs/user-guide/html/_images/MessageOrdering.svg +0 -235
  539. amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF5.png +0 -0
  540. amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF6.png +0 -0
  541. amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF7.png +0 -0
  542. amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF8.png +0 -0
  543. amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub1.svg +0 -1
  544. amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub2.svg +0 -1
  545. amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWAndSubscribeAndReplace.svg +0 -684
  546. amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery1.svg +0 -402
  547. amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery2.svg +0 -505
  548. amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig1.svg +0 -1
  549. amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig2.svg +0 -1
  550. amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig3.svg +0 -1
  551. amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig4.svg +0 -1
  552. amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.png +0 -0
  553. amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.svg +0 -25
  554. amps-python-client-5.3.4.1/docs/user-guide/html/_images/chicago_group.png +0 -0
  555. amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_original_messages.png +0 -0
  556. amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_update_message.png +0 -0
  557. amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.png +0 -0
  558. amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.svg +0 -25
  559. amps-python-client-5.3.4.1/docs/user-guide/html/_images/inline_view_conflation.svg +0 -1
  560. amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_pub.png +0 -0
  561. amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_sub.png +0 -0
  562. amps-python-client-5.3.4.1/docs/user-guide/html/_images/queue_usage_overview.svg +0 -627
  563. amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_hub.png +0 -0
  564. amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_scenario_with_ha.png +0 -0
  565. amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_1.svg +0 -248
  566. amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_2.svg +0 -183
  567. amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_update_sequence.svg +0 -1
  568. amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.png +0 -0
  569. amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.svg +0 -31
  570. amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.png +0 -0
  571. amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.svg +0 -23
  572. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/acks.rst.txt +0 -232
  573. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/actions.rst.txt +0 -111
  574. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +0 -358
  575. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +0 -83
  576. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +0 -11
  577. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +0 -86
  578. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +0 -9
  579. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +0 -111
  580. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +0 -269
  581. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/daemon.rst.txt +0 -232
  582. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/delta.rst.txt +0 -556
  583. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/distribution.rst.txt +0 -186
  584. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +0 -191
  585. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/events.rst.txt +0 -39
  586. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +0 -203
  587. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/glossary.rst.txt +0 -101
  588. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/ha.rst.txt +0 -465
  589. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +0 -23
  590. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/intro.rst.txt +0 -116
  591. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/logging.rst.txt +0 -34
  592. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +0 -1398
  593. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +0 -326
  594. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/oof.rst.txt +0 -312
  595. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/operation.rst.txt +0 -27
  596. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +0 -49
  597. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/queues.rst.txt +0 -1351
  598. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/replication.rst.txt +0 -1228
  599. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/securing.rst.txt +0 -657
  600. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow.rst.txt +0 -57
  601. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +0 -25
  602. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/transports.rst.txt +0 -291
  603. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +0 -517
  604. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/txlog.rst.txt +0 -62
  605. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/usecases.rst.txt +0 -21
  606. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/utilities.rst.txt +0 -62
  607. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/views.rst.txt +0 -175
  608. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/index.rst.txt +0 -110
  609. amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css +0 -192
  610. amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css.backup +0 -161
  611. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/acks.html +0 -289
  612. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/actions.html +0 -3782
  613. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps-statistics.html +0 -439
  614. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_expressions.html +0 -1552
  615. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_functions.html +0 -1626
  616. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/auxiliary_modules.html +0 -2548
  617. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/config-file-shortcuts.html +0 -508
  618. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/conflated_topics.html +0 -328
  619. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/constructing-fields.html +0 -447
  620. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/daemon.html +0 -295
  621. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/delta.html +0 -609
  622. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/distribution.html +0 -246
  623. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/enrichment.html +0 -264
  624. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/events.html +0 -449
  625. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/file_format_versions.html +0 -229
  626. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/glossary.html +0 -215
  627. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/ha.html +0 -978
  628. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/installing_and_starting.html +0 -357
  629. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/intro.html +0 -572
  630. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/logging.html +0 -972
  631. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/messageTypes.html +0 -1280
  632. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/monitoring.html +0 -718
  633. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/oof.html +0 -341
  634. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/operation.html +0 -1515
  635. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/pub_sub.html +0 -934
  636. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/queues.html +0 -1767
  637. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/replication.html +0 -1777
  638. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/securing.html +0 -697
  639. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow.html +0 -1038
  640. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow_queries.html +0 -621
  641. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/spark.html +0 -819
  642. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/transports.html +0 -352
  643. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/troubleshooting.html +0 -530
  644. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/txlog.html +0 -1013
  645. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/usecases.html +0 -288
  646. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/utilities.html +0 -133
  647. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/views.html +0 -1120
  648. amps-python-client-5.3.4.1/docs/user-guide/html/genindex.html +0 -1261
  649. amps-python-client-5.3.4.1/docs/user-guide/html/index.html +0 -163
  650. amps-python-client-5.3.4.1/docs/user-guide/html/objects.inv +0 -0
  651. amps-python-client-5.3.4.1/docs/user-guide/html/search.html +0 -106
  652. amps-python-client-5.3.4.1/docs/user-guide/html/searchindex.js +0 -1
  653. amps-python-client-5.3.4.1/include/ampspy_bookmarkstore.hpp +0 -63
  654. amps-python-client-5.3.4.1/include/ampspy_compat.h +0 -63
  655. amps-python-client-5.3.4.1/include/ampspy_defs.hpp +0 -181
  656. amps-python-client-5.3.4.1/include/ampspy_recoverypointadapter.hpp +0 -52
  657. amps-python-client-5.3.4.1/include/ampspy_shims.hpp +0 -113
  658. amps-python-client-5.3.4.1/include/ampspy_type_object.hpp +0 -242
  659. amps-python-client-5.3.4.1/include/ampspy_types.hpp +0 -1139
  660. amps-python-client-5.3.4.1/include/ampspyver.h +0 -30
  661. amps-python-client-5.3.4.1/index.html +0 -66
  662. amps-python-client-5.3.4.1/samples/AMPSConsolePublisher.py +0 -59
  663. amps-python-client-5.3.4.1/samples/AMPSConsoleSubscriber.py +0 -63
  664. amps-python-client-5.3.4.1/samples/AMPSFIXBuilderPublisher.py +0 -71
  665. amps-python-client-5.3.4.1/samples/AMPSFIXShredderSubscriber.py +0 -69
  666. amps-python-client-5.3.4.1/samples/AMPSNVFIXBuilderPublisher.py +0 -71
  667. amps-python-client-5.3.4.1/samples/AMPSNVFIXShredderSubscriber.py +0 -67
  668. amps-python-client-5.3.4.1/samples/AMPSPublishForReplay.py +0 -81
  669. amps-python-client-5.3.4.1/samples/AMPSQueueConsumer.py +0 -69
  670. amps-python-client-5.3.4.1/samples/AMPSQueuePublisher.py +0 -59
  671. amps-python-client-5.3.4.1/samples/AMPSSOWConsolePublisher.py +0 -67
  672. amps-python-client-5.3.4.1/samples/AMPSSOWConsoleSubscriber.py +0 -77
  673. amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeConsoleSubscriber.py +0 -79
  674. amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeWithOOF.py +0 -108
  675. amps-python-client-5.3.4.1/samples/AMPSSubscribeForReplay.py +0 -128
  676. amps-python-client-5.3.4.1/samples/AMPSUpdateForOOF.py +0 -123
  677. amps-python-client-5.3.4.1/samples/CompositeMessagePublisher.py +0 -84
  678. amps-python-client-5.3.4.1/samples/CompositeMessageSubscriber.py +0 -87
  679. amps-python-client-5.3.4.1/samples/RandomServerChooser.py +0 -41
  680. amps-python-client-5.3.4.1/samples/sample.xml +0 -335
  681. amps-python-client-5.3.4.1/setup.py +0 -209
  682. amps-python-client-5.3.4.1/setup_amps.py +0 -94
  683. amps-python-client-5.3.4.1/src/ampspy_shims.cpp +0 -203
  684. amps-python-client-5.3.4.1/src/ampspy_type_object.cpp +0 -484
  685. amps-python-client-5.3.4.1/src/authenticator.cpp +0 -128
  686. amps-python-client-5.3.4.1/src/bookmarkstore.cpp +0 -238
  687. amps-python-client-5.3.4.1/src/client.cpp +0 -2430
  688. amps-python-client-5.3.4.1/src/client_docs.h +0 -956
  689. amps-python-client-5.3.4.1/src/cmessagehandler.cpp +0 -151
  690. amps-python-client-5.3.4.1/src/command.cpp +0 -164
  691. amps-python-client-5.3.4.1/src/command_docs.h +0 -194
  692. amps-python-client-5.3.4.1/src/compositemessagebuilder.cpp +0 -111
  693. amps-python-client-5.3.4.1/src/compositemessageparser.cpp +0 -146
  694. amps-python-client-5.3.4.1/src/conflatingrecoverypointadapter.cpp +0 -194
  695. amps-python-client-5.3.4.1/src/cpp/include/amps/BlockPublishStore.hpp +0 -2053
  696. amps-python-client-5.3.4.1/src/cpp/include/amps/BlockStore.hpp +0 -677
  697. amps-python-client-5.3.4.1/src/cpp/include/amps/BookmarkStore.hpp +0 -542
  698. amps-python-client-5.3.4.1/src/cpp/include/amps/Buffer.hpp +0 -214
  699. amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageBuilder.hpp +0 -174
  700. amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageParser.hpp +0 -151
  701. amps-python-client-5.3.4.1/src/cpp/include/amps/DefaultServerChooser.hpp +0 -162
  702. amps-python-client-5.3.4.1/src/cpp/include/amps/Field.hpp +0 -719
  703. amps-python-client-5.3.4.1/src/cpp/include/amps/HAClient.hpp +0 -370
  704. amps-python-client-5.3.4.1/src/cpp/include/amps/HAClientImpl.hpp +0 -460
  705. amps-python-client-5.3.4.1/src/cpp/include/amps/HybridPublishStore.hpp +0 -481
  706. amps-python-client-5.3.4.1/src/cpp/include/amps/LoggedBookmarkStore.hpp +0 -1255
  707. amps-python-client-5.3.4.1/src/cpp/include/amps/MMapBookmarkStore.hpp +0 -1283
  708. amps-python-client-5.3.4.1/src/cpp/include/amps/MMapStoreBuffer.hpp +0 -290
  709. amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryBookmarkStore.hpp +0 -1622
  710. amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryPublishStore.hpp +0 -66
  711. amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryStoreBuffer.hpp +0 -244
  712. amps-python-client-5.3.4.1/src/cpp/include/amps/MemorySubscriptionManager.hpp +0 -850
  713. amps-python-client-5.3.4.1/src/cpp/include/amps/Message.hpp +0 -1819
  714. amps-python-client-5.3.4.1/src/cpp/include/amps/MessageRouter.hpp +0 -618
  715. amps-python-client-5.3.4.1/src/cpp/include/amps/PublishStore.hpp +0 -158
  716. amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategy.hpp +0 -106
  717. amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +0 -317
  718. amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPoint.hpp +0 -323
  719. amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPointAdapter.hpp +0 -501
  720. amps-python-client-5.3.4.1/src/cpp/include/amps/RingBookmarkStore.hpp +0 -669
  721. amps-python-client-5.3.4.1/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +0 -490
  722. amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooser.hpp +0 -145
  723. amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooserImpl.hpp +0 -95
  724. amps-python-client-5.3.4.1/src/cpp/include/amps/amps.h +0 -775
  725. amps-python-client-5.3.4.1/src/cpp/include/amps/amps_impl.h +0 -204
  726. amps-python-client-5.3.4.1/src/cpp/include/amps/amps_ssl.h +0 -78
  727. amps-python-client-5.3.4.1/src/cpp/include/amps/ampscrc.hpp +0 -210
  728. amps-python-client-5.3.4.1/src/cpp/include/amps/ampsplusplus.hpp +0 -8817
  729. amps-python-client-5.3.4.1/src/cpp/include/amps/ampsuri.h +0 -84
  730. amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h +0 -41
  731. amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h.in +0 -41
  732. amps-python-client-5.3.4.1/src/cpp/include/amps/constants.hpp +0 -194
  733. amps-python-client-5.3.4.1/src/cpp/include/amps/util.hpp +0 -1692
  734. amps-python-client-5.3.4.1/src/cpp/src/amps_protocol.c +0 -688
  735. amps-python-client-5.3.4.1/src/cpp/src/amps_ssl.c +0 -489
  736. amps-python-client-5.3.4.1/src/cpp/src/atfork.c +0 -446
  737. amps-python-client-5.3.4.1/src/cpp/src/client.c +0 -483
  738. amps-python-client-5.3.4.1/src/cpp/src/message.c +0 -837
  739. amps-python-client-5.3.4.1/src/cpp/src/message_generated.h +0 -611
  740. amps-python-client-5.3.4.1/src/cpp/src/tcp.c +0 -1489
  741. amps-python-client-5.3.4.1/src/cpp/src/tcps.c +0 -1894
  742. amps-python-client-5.3.4.1/src/cpp/src/transports.c +0 -123
  743. amps-python-client-5.3.4.1/src/cpp/src/unix.c +0 -984
  744. amps-python-client-5.3.4.1/src/cpp/src/uri.c +0 -301
  745. amps-python-client-5.3.4.1/src/exponentialdelaystrategy.cpp +0 -137
  746. amps-python-client-5.3.4.1/src/failedwritehandler.cpp +0 -116
  747. amps-python-client-5.3.4.1/src/fixbuilder.cpp +0 -146
  748. amps-python-client-5.3.4.1/src/fixeddelaystrategy.cpp +0 -114
  749. amps-python-client-5.3.4.1/src/fixshredder.cpp +0 -105
  750. amps-python-client-5.3.4.1/src/fixshredder_docs.h +0 -38
  751. amps-python-client-5.3.4.1/src/haclient.cpp +0 -691
  752. amps-python-client-5.3.4.1/src/haclient_docs.h +0 -132
  753. amps-python-client-5.3.4.1/src/hybridpublishstore.cpp +0 -137
  754. amps-python-client-5.3.4.1/src/hybridpublishstore_docs.h +0 -31
  755. amps-python-client-5.3.4.1/src/memorybookmarkstore.cpp +0 -373
  756. amps-python-client-5.3.4.1/src/memorybookmarkstore_docs.h +0 -39
  757. amps-python-client-5.3.4.1/src/memorypublishstore.cpp +0 -160
  758. amps-python-client-5.3.4.1/src/memorypublishstore_docs.h +0 -32
  759. amps-python-client-5.3.4.1/src/message.cpp +0 -765
  760. amps-python-client-5.3.4.1/src/message_docs.h +0 -306
  761. amps-python-client-5.3.4.1/src/messagestream.cpp +0 -623
  762. amps-python-client-5.3.4.1/src/messagestream_docs.h +0 -45
  763. amps-python-client-5.3.4.1/src/mmapbookmarkstore.cpp +0 -422
  764. amps-python-client-5.3.4.1/src/nvfixbuilder.cpp +0 -160
  765. amps-python-client-5.3.4.1/src/nvfixbuilder_docs.h +0 -33
  766. amps-python-client-5.3.4.1/src/nvfixshredder.cpp +0 -99
  767. amps-python-client-5.3.4.1/src/nvfixshredder_docs.h +0 -39
  768. amps-python-client-5.3.4.1/src/publishstore.cpp +0 -183
  769. amps-python-client-5.3.4.1/src/raw_wrapper.cpp +0 -756
  770. amps-python-client-5.3.4.1/src/reason.cpp +0 -71
  771. amps-python-client-5.3.4.1/src/recoverypoint.cpp +0 -135
  772. amps-python-client-5.3.4.1/src/recoverypointadapter.cpp +0 -171
  773. amps-python-client-5.3.4.1/src/ringbookmarkstore.cpp +0 -360
  774. amps-python-client-5.3.4.1/src/serverchooser.cpp +0 -245
  775. amps-python-client-5.3.4.1/src/serverchooser_docs.h +0 -39
  776. amps-python-client-5.3.4.1/src/sowrecoverypointadapter.cpp +0 -248
  777. amps-python-client-5.3.4.1/src/store.cpp +0 -62
  778. amps-python-client-5.3.4.1/src/versioninfo.cpp +0 -175
  779. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/HISTORY +0 -0
  780. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/LICENSE +0 -0
  781. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/README.md +0 -0
  782. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/ajax-loader.gif +0 -0
  783. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/alabaster.css +0 -0
  784. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/basic.css +0 -0
  785. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/comment-bright.png +0 -0
  786. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/comment-close.png +0 -0
  787. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/comment.png +0 -0
  788. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/doctools.js +0 -0
  789. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/down-pressed.png +0 -0
  790. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/down.png +0 -0
  791. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/file.png +0 -0
  792. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/flag_logo.png +0 -0
  793. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/flag_logo.svg +0 -0
  794. {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
  795. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/jquery.js +0 -0
  796. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/minus.png +0 -0
  797. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/plus.png +0 -0
  798. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/pygments.css +0 -0
  799. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/searchtools.js +0 -0
  800. {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
  801. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/underscore.js +0 -0
  802. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/up-pressed.png +0 -0
  803. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/up.png +0 -0
  804. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/command-reference/html/_static/websupport.js +0 -0
  805. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_sources/code.rst.txt +0 -0
  806. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_sources/index.rst.txt +0 -0
  807. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/ajax-loader.gif +0 -0
  808. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/basic.css +0 -0
  809. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/classic.css +0 -0
  810. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/comment-bright.png +0 -0
  811. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/comment-close.png +0 -0
  812. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/comment.png +0 -0
  813. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/default.css +0 -0
  814. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/doctools.js +0 -0
  815. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/down-pressed.png +0 -0
  816. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/down.png +0 -0
  817. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/file.png +0 -0
  818. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/jquery-3.1.0.js +0 -0
  819. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/jquery.js +0 -0
  820. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/minus.png +0 -0
  821. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/plus.png +0 -0
  822. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/pygments.css +0 -0
  823. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/searchtools.js +0 -0
  824. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/sidebar.js +0 -0
  825. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/underscore-1.3.1.js +0 -0
  826. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/underscore.js +0 -0
  827. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/up-pressed.png +0 -0
  828. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/up.png +0 -0
  829. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/html/_static/websupport.js +0 -0
  830. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/caution.png +0 -0
  831. {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
  832. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/connection_string.svg +0 -0
  833. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/important.png +0 -0
  834. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/important.svg +0 -0
  835. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/tip.png +0 -0
  836. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/tip.svg +0 -0
  837. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_images/warning.png +0 -0
  838. {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
  839. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_sources/index.rst.txt +0 -0
  840. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/ajax-loader.gif +0 -0
  841. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/alabaster.css +0 -0
  842. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/basic.css +0 -0
  843. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/comment-bright.png +0 -0
  844. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/comment-close.png +0 -0
  845. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/comment.png +0 -0
  846. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/doctools.js +0 -0
  847. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/down-pressed.png +0 -0
  848. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/down.png +0 -0
  849. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/file.png +0 -0
  850. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/flag_logo.png +0 -0
  851. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/flag_logo.svg +0 -0
  852. {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
  853. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/jquery.js +0 -0
  854. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/minus.png +0 -0
  855. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/plus.png +0 -0
  856. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/pygments.css +0 -0
  857. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/searchtools.js +0 -0
  858. {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
  859. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/underscore.js +0 -0
  860. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/up-pressed.png +0 -0
  861. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/up.png +0 -0
  862. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python/html/_static/websupport.js +0 -0
  863. {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
  864. {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
  865. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_sources/index.rst.txt +0 -0
  866. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/ajax-loader.gif +0 -0
  867. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/alabaster.css +0 -0
  868. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/basic.css +0 -0
  869. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/comment-bright.png +0 -0
  870. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/comment-close.png +0 -0
  871. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/comment.png +0 -0
  872. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/doctools.js +0 -0
  873. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/down-pressed.png +0 -0
  874. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/down.png +0 -0
  875. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/file.png +0 -0
  876. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/flag_logo.png +0 -0
  877. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/flag_logo.svg +0 -0
  878. {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
  879. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/jquery.js +0 -0
  880. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/minus.png +0 -0
  881. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/plus.png +0 -0
  882. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/pygments.css +0 -0
  883. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/searchtools.js +0 -0
  884. {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
  885. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/underscore.js +0 -0
  886. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/up-pressed.png +0 -0
  887. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/up.png +0 -0
  888. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/python-quickstart/html/_static/websupport.js +0 -0
  889. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/resources/custom.css +0 -0
  890. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/resources/flag_logo.svg +0 -0
  891. {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
  892. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/ajax-loader.gif +0 -0
  893. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/alabaster.css +0 -0
  894. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/basic.css +0 -0
  895. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/comment-bright.png +0 -0
  896. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/comment-close.png +0 -0
  897. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/comment.png +0 -0
  898. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/doctools.js +0 -0
  899. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/down-pressed.png +0 -0
  900. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/down.png +0 -0
  901. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/file.png +0 -0
  902. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/flag_logo.png +0 -0
  903. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/flag_logo.svg +0 -0
  904. {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
  905. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/jquery.js +0 -0
  906. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/minus.png +0 -0
  907. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/plus.png +0 -0
  908. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/pygments.css +0 -0
  909. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/searchtools.js +0 -0
  910. {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
  911. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/underscore.js +0 -0
  912. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/up-pressed.png +0 -0
  913. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/up.png +0 -0
  914. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/docs/user-guide/html/_static/websupport.js +0 -0
  915. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/src/cpp/include/amps/amps_generated.h +0 -0
  916. {amps-python-client-5.3.4.1 → amps-python-client-5.3.4.2}/src/cpp/src/amps_protocol_generated.h +0 -0
  917. {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 &#8212; 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&#8217;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">&quot;name&quot;</span><span class="o">:</span><span class="s2">&quot;Gyro&quot;</span><span class="p">,</span> <span class="s2">&quot;job&quot;</span><span class="o">:</span><span class="s2">&quot;kitten&quot;</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">&#39;Gyro&#39;</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">&lt;</span></code>, <code class="docutils literal"><span class="pre">&gt;</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">&lt;Order</span> <span class="na">update=</span><span class="s">&quot;full&quot;</span><span class="nt">&gt;</span>
199
- <span class="nt">&lt;ClientID&gt;</span>12345<span class="nt">&lt;/ClientID&gt;</span>
200
- <span class="nt">&lt;Symbol&gt;</span>IBM<span class="nt">&lt;/Symbol&gt;</span>
201
- <span class="nt">&lt;OrderQty&gt;</span>1000<span class="nt">&lt;/OrderQty&gt;</span>
202
- <span class="nt">&lt;/Order&gt;</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&amp;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">&quot;a&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;b&quot;</span><span class="p">:</span><span class="s2">&quot;47&quot;</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=&lt;SOH&gt;</span></code></p>
303
- <p>JSON: <code class="docutils literal"><span class="pre">{&quot;a&quot;:null}</span></code></p>
304
- <p class="last">XML: <code class="docutils literal"><span class="pre">&lt;a/&gt;</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">{&quot;e&quot;: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 &gt; 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">{&quot;b&quot;:24}</span></code></p>
318
- <p class="last">XML: <code class="docutils literal"><span class="pre">&lt;b&gt;24&lt;/b&gt;</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">{&quot;c&quot;:24.0}</span></code></p>
328
- <p class="last">XML: <code class="docutils literal"><span class="pre">&lt;c&gt;24.0&lt;/c&gt;</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&lt;SOH&gt;</span></code></p>
339
- <p>JSON:
340
- <code class="docutils literal"><span class="pre">{&quot;d&quot;:&quot;Grilled</span> <span class="pre">cheese</span> <span class="pre">sandwich&quot;}</span></code></p>
341
- <p class="last">XML:
342
- <code class="docutils literal"><span class="pre">&lt;d&gt;Grilled</span> <span class="pre">cheese</span> <span class="pre">sandwich&lt;/d&gt;</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">&#39;IBM&#39;</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">&#160;</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">&#160;</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">&#39;restricted&#39;</span><span class="p">)</span> <span class="o">!=</span> <span class="s1">&#39;restricted&#39;</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">&#39;IBM&#39;</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">&#39;MSFT&#39;</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">&#39;rush&#39;</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">&#39;silver&#39;</span><span class="p">,</span> <span class="s1">&#39;gold&#39;</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">&#39;platinum&#39;</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">&lt;</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">&gt;=</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">&gt;</span></code>, <code class="docutils literal"><span class="pre">&gt;=</span></code>, <code class="docutils literal"><span class="pre">&lt;</span></code>,
676
- <code class="docutils literal"><span class="pre">&lt;=</span></code>, <code class="docutils literal"><span class="pre">!=</span></code>, and <code class="docutils literal"><span class="pre">&lt;&gt;</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">&lt;</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">&lt;</span> <span class="pre">'2'</span></code></td>
702
- <td>FALSE, &#8216;2&#8217; 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">&lt;&gt;</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">&lt;</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">&lt;</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">&gt;</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">&gt;=</span> <span class="pre">0</span> <span class="pre">AND</span> <span class="pre">/A</span> <span class="pre">&lt;=</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">&#39;JMB&#39;</span><span class="p">,</span> <span class="s1">&#39;BLH&#39;</span><span class="p">,</span> <span class="s1">&#39;CJB&#39;</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">&#39;Bob&#39;</span><span class="p">,</span> <span class="s1">&#39;Phil&#39;</span><span class="p">,</span> <span class="s1">&#39;Brent&#39;</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">&#39;puppy&#39;</span><span class="p">,</span> <span class="s1">&#39;kitten&#39;</span><span class="p">,</span> <span class="s1">&#39;goldfish&#39;</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">&#39;puppy&#39;</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">&#39;kitten&#39;</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">&#39;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">&#39;(.)</span><span class="se">\1</span><span class="s1">&#39;</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">&gt;</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">&#39;MSFT&#39;</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">&lt;</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&#8217;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">&quot;data&quot;</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">&quot;zebra&quot;</span><span class="p">,</span> <span class="mf">5</span><span class="p">],</span>
941
- <span class="s2">&quot;other&quot;</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">&gt;</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">&gt;</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">&gt;</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">&gt;</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">&quot;zebra&quot;</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">(&quot;zebra&quot;,</span> <span class="pre">&quot;antelope&quot;,</span>
1073
- <span class="pre">&quot;lion&quot;)</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">(&quot;zebra&quot;,</span> <span class="pre">&quot;antelope&quot;,</span> <span class="pre">&quot;lion&quot;)</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">&lt;</span></code> and <code class="docutils literal"><span class="pre">&gt;</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">&quot;^IB.?$&quot;</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">&quot;^90\..*&quot;</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">&lt;</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">&quot;(?i)ˆus$&quot;</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">&quot;TRADE$&quot;</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">&quot;(?i)ˆUS.*TRADE$&quot;</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>&#8216;s</td>
1242
- </tr>
1243
- <tr class="row-odd"><td><em>a</em>?</td>
1244
- <td>Zero or one <em>a</em>&#8216;s</td>
1245
- </tr>
1246
- <tr class="row-even"><td><em>a</em>{<em>m</em>}</td>
1247
- <td>Exactly <em>m a</em>&#8216;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>&#8216;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>&#8216;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 &#8216;r&#8217; or &#8216;R&#8217; 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">&#39;C++&#39;</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">&#39;C\+\+&#39;</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/&#64;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">&quot;order&quot;</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">&#39;restricted&#39;</span> <span class="n">OR</span> <span class="o">/</span><span class="n">notes</span> <span class="n">LIKE</span> <span class="s1">&#39;restricted|limited&#39;</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">&#39;12345&#39;</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">&#39;12345&#39;</span><span class="p">,</span><span class="s1">&#39;23456&#39;</span><span class="p">,</span><span class="s1">&#39;34567&#39;</span><span class="p">,</span><span class="s1">&#39;45678&#39;</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">&#39;12345&#39;</span><span class="p">,</span><span class="s1">&#39;45678&#39;</span><span class="p">,</span><span class="s1">&#39;90909&#39;</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">&#39;12345&#39;</span><span class="p">,</span><span class="s1">&#39;23456&#39;</span><span class="p">,</span><span class="s1">&#39;34567&#39;</span><span class="p">,</span><span class="s1">&#39;45678&#39;</span><span class="p">,</span><span class="s1">&#39;90909&#39;</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">&#39;North&#39;</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">&#39;^North&#39;</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&#8217;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">&quot;id&quot;</span><span class="p">:</span><span class="mi">24</span><span class="p">,</span><span class="s2">&quot;code&quot;</span><span class="p">:</span><span class="s2">&quot;A12347&quot;</span><span class="p">,</span><span class="s2">&quot;notes&quot;</span><span class="p">:</span><span class="s2">&quot;entered on behalf of a sloth&quot;</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&#8217;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&#8217;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
- &copy;2023 60East Technologies, Inc. (version develop).
1541
-
1542
- |
1543
- Powered by <a href="http://sphinx-doc.org/">Sphinx 1.5.3</a>
1544
- &amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.10</a>
1545
-
1546
- </div>
1547
-
1548
-
1549
-
1550
-
1551
- </body>
1552
- </html>