amps-python-client 5.3.4.1__zip → 5.3.4.3__zip

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