amps-python-client 5.3.4.1__zip → 5.3.4.2__zip

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