amps-python-client 5.3.4.1__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 (550) hide show
  1. amps-python-client-5.3.4.1/HISTORY +7 -0
  2. amps-python-client-5.3.4.1/LICENSE +157 -0
  3. amps-python-client-5.3.4.1/PKG-INFO +112 -0
  4. amps-python-client-5.3.4.1/README.md +96 -0
  5. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/ack-messages.doctree +0 -0
  6. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/content-messages.doctree +0 -0
  7. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/intro.doctree +0 -0
  8. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/logon.doctree +0 -0
  9. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/protocol-reference.doctree +0 -0
  10. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/publishing.doctree +0 -0
  11. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-delimiters.doctree +0 -0
  12. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/query-subscribe.doctree +0 -0
  13. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/removing.doctree +0 -0
  14. amps-python-client-5.3.4.1/docs/command-reference/doctrees/chapters/utilities.doctree +0 -0
  15. amps-python-client-5.3.4.1/docs/command-reference/doctrees/environment.pickle +0 -0
  16. amps-python-client-5.3.4.1/docs/command-reference/doctrees/index.doctree +0 -0
  17. amps-python-client-5.3.4.1/docs/command-reference/html/.buildinfo +4 -0
  18. amps-python-client-5.3.4.1/docs/command-reference/html/_images/caution.svg +25 -0
  19. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/ack-messages.rst.txt +32 -0
  20. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/content-messages.rst.txt +27 -0
  21. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/intro.rst.txt +43 -0
  22. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/logon.rst.txt +231 -0
  23. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/protocol-reference.rst.txt +1474 -0
  24. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/publishing.rst.txt +25 -0
  25. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-delimiters.rst.txt +12 -0
  26. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/query-subscribe.rst.txt +23 -0
  27. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/removing.rst.txt +6 -0
  28. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/chapters/utilities.rst.txt +13 -0
  29. amps-python-client-5.3.4.1/docs/command-reference/html/_sources/index.rst.txt +56 -0
  30. amps-python-client-5.3.4.1/docs/command-reference/html/_static/ajax-loader.gif +0 -0
  31. amps-python-client-5.3.4.1/docs/command-reference/html/_static/alabaster.css +699 -0
  32. amps-python-client-5.3.4.1/docs/command-reference/html/_static/basic.css +632 -0
  33. amps-python-client-5.3.4.1/docs/command-reference/html/_static/comment-bright.png +0 -0
  34. amps-python-client-5.3.4.1/docs/command-reference/html/_static/comment-close.png +0 -0
  35. amps-python-client-5.3.4.1/docs/command-reference/html/_static/comment.png +0 -0
  36. amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css +192 -0
  37. amps-python-client-5.3.4.1/docs/command-reference/html/_static/custom.css.backup +161 -0
  38. amps-python-client-5.3.4.1/docs/command-reference/html/_static/doctools.js +287 -0
  39. amps-python-client-5.3.4.1/docs/command-reference/html/_static/down-pressed.png +0 -0
  40. amps-python-client-5.3.4.1/docs/command-reference/html/_static/down.png +0 -0
  41. amps-python-client-5.3.4.1/docs/command-reference/html/_static/file.png +0 -0
  42. amps-python-client-5.3.4.1/docs/command-reference/html/_static/flag_logo.png +0 -0
  43. amps-python-client-5.3.4.1/docs/command-reference/html/_static/flag_logo.svg +153 -0
  44. amps-python-client-5.3.4.1/docs/command-reference/html/_static/jquery-3.1.0.js +10074 -0
  45. amps-python-client-5.3.4.1/docs/command-reference/html/_static/jquery.js +4 -0
  46. amps-python-client-5.3.4.1/docs/command-reference/html/_static/minus.png +0 -0
  47. amps-python-client-5.3.4.1/docs/command-reference/html/_static/plus.png +0 -0
  48. amps-python-client-5.3.4.1/docs/command-reference/html/_static/pygments.css +74 -0
  49. amps-python-client-5.3.4.1/docs/command-reference/html/_static/searchtools.js +758 -0
  50. amps-python-client-5.3.4.1/docs/command-reference/html/_static/underscore-1.3.1.js +999 -0
  51. amps-python-client-5.3.4.1/docs/command-reference/html/_static/underscore.js +31 -0
  52. amps-python-client-5.3.4.1/docs/command-reference/html/_static/up-pressed.png +0 -0
  53. amps-python-client-5.3.4.1/docs/command-reference/html/_static/up.png +0 -0
  54. amps-python-client-5.3.4.1/docs/command-reference/html/_static/websupport.js +808 -0
  55. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/ack-messages.html +417 -0
  56. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/content-messages.html +417 -0
  57. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/intro.html +126 -0
  58. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/logon.html +295 -0
  59. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/protocol-reference.html +1190 -0
  60. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/publishing.html +436 -0
  61. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-delimiters.html +173 -0
  62. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/query-subscribe.html +2123 -0
  63. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/removing.html +299 -0
  64. amps-python-client-5.3.4.1/docs/command-reference/html/chapters/utilities.html +287 -0
  65. amps-python-client-5.3.4.1/docs/command-reference/html/genindex.html +97 -0
  66. amps-python-client-5.3.4.1/docs/command-reference/html/index.html +138 -0
  67. amps-python-client-5.3.4.1/docs/command-reference/html/objects.inv +0 -0
  68. amps-python-client-5.3.4.1/docs/command-reference/html/search.html +107 -0
  69. amps-python-client-5.3.4.1/docs/command-reference/html/searchindex.js +1 -0
  70. amps-python-client-5.3.4.1/docs/html/.buildinfo +4 -0
  71. amps-python-client-5.3.4.1/docs/html/_sources/code.rst.txt +6 -0
  72. amps-python-client-5.3.4.1/docs/html/_sources/index.rst.txt +29 -0
  73. amps-python-client-5.3.4.1/docs/html/_static/ajax-loader.gif +0 -0
  74. amps-python-client-5.3.4.1/docs/html/_static/basic.css +632 -0
  75. amps-python-client-5.3.4.1/docs/html/_static/classic.css +261 -0
  76. amps-python-client-5.3.4.1/docs/html/_static/comment-bright.png +0 -0
  77. amps-python-client-5.3.4.1/docs/html/_static/comment-close.png +0 -0
  78. amps-python-client-5.3.4.1/docs/html/_static/comment.png +0 -0
  79. amps-python-client-5.3.4.1/docs/html/_static/default.css +1 -0
  80. amps-python-client-5.3.4.1/docs/html/_static/doctools.js +287 -0
  81. amps-python-client-5.3.4.1/docs/html/_static/down-pressed.png +0 -0
  82. amps-python-client-5.3.4.1/docs/html/_static/down.png +0 -0
  83. amps-python-client-5.3.4.1/docs/html/_static/file.png +0 -0
  84. amps-python-client-5.3.4.1/docs/html/_static/jquery-3.1.0.js +10074 -0
  85. amps-python-client-5.3.4.1/docs/html/_static/jquery.js +4 -0
  86. amps-python-client-5.3.4.1/docs/html/_static/minus.png +0 -0
  87. amps-python-client-5.3.4.1/docs/html/_static/plus.png +0 -0
  88. amps-python-client-5.3.4.1/docs/html/_static/pygments.css +74 -0
  89. amps-python-client-5.3.4.1/docs/html/_static/searchtools.js +758 -0
  90. amps-python-client-5.3.4.1/docs/html/_static/sidebar.js +159 -0
  91. amps-python-client-5.3.4.1/docs/html/_static/underscore-1.3.1.js +999 -0
  92. amps-python-client-5.3.4.1/docs/html/_static/underscore.js +31 -0
  93. amps-python-client-5.3.4.1/docs/html/_static/up-pressed.png +0 -0
  94. amps-python-client-5.3.4.1/docs/html/_static/up.png +0 -0
  95. amps-python-client-5.3.4.1/docs/html/_static/websupport.js +808 -0
  96. amps-python-client-5.3.4.1/docs/html/code.html +6503 -0
  97. amps-python-client-5.3.4.1/docs/html/genindex.html +1361 -0
  98. amps-python-client-5.3.4.1/docs/html/index.html +131 -0
  99. amps-python-client-5.3.4.1/docs/html/objects.inv +0 -0
  100. amps-python-client-5.3.4.1/docs/html/py-modindex.html +111 -0
  101. amps-python-client-5.3.4.1/docs/html/search.html +107 -0
  102. amps-python-client-5.3.4.1/docs/html/searchindex.js +1 -0
  103. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/advanced-topics.doctree +0 -0
  104. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-compiler-list.doctree +0 -0
  105. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/cpp-feature-table.doctree +0 -0
  106. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/creating-commands.doctree +0 -0
  107. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/deltas.doctree +0 -0
  108. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/error-handling.doctree +0 -0
  109. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/exceptions.doctree +0 -0
  110. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/first-program.doctree +0 -0
  111. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/high-availability.doctree +0 -0
  112. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/installing.doctree +0 -0
  113. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/introduction.doctree +0 -0
  114. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/moving-from-python-lite.doctree +0 -0
  115. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/performance-tips.doctree +0 -0
  116. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/queues.doctree +0 -0
  117. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/sow.doctree +0 -0
  118. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/subscriptions.doctree +0 -0
  119. amps-python-client-5.3.4.1/docs/python/doctrees/chapters/utilities.doctree +0 -0
  120. amps-python-client-5.3.4.1/docs/python/doctrees/environment.pickle +0 -0
  121. amps-python-client-5.3.4.1/docs/python/doctrees/index.doctree +0 -0
  122. amps-python-client-5.3.4.1/docs/python/html/.buildinfo +4 -0
  123. amps-python-client-5.3.4.1/docs/python/html/_images/caution.png +0 -0
  124. amps-python-client-5.3.4.1/docs/python/html/_images/caution.svg +25 -0
  125. amps-python-client-5.3.4.1/docs/python/html/_images/connection_string.svg +461 -0
  126. amps-python-client-5.3.4.1/docs/python/html/_images/important.png +0 -0
  127. amps-python-client-5.3.4.1/docs/python/html/_images/important.svg +25 -0
  128. amps-python-client-5.3.4.1/docs/python/html/_images/tip.png +0 -0
  129. amps-python-client-5.3.4.1/docs/python/html/_images/tip.svg +31 -0
  130. amps-python-client-5.3.4.1/docs/python/html/_images/warning.png +0 -0
  131. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/advanced-topics.rst.txt +398 -0
  132. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/cpp-compiler-list.rst.txt +6 -0
  133. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/cpp-feature-table.rst.txt +26 -0
  134. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/creating-commands.rst.txt +159 -0
  135. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/deltas.rst.txt +79 -0
  136. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/error-handling.rst.txt +482 -0
  137. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/exceptions.rst.txt +128 -0
  138. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/first-program.rst.txt +142 -0
  139. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/high-availability.rst.txt +876 -0
  140. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/installing.rst.txt +184 -0
  141. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/introduction.rst.txt +50 -0
  142. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/moving-from-python-lite.rst.txt +32 -0
  143. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/performance-tips.rst.txt +434 -0
  144. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/queues.rst.txt +282 -0
  145. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/sow.rst.txt +292 -0
  146. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/subscriptions.rst.txt +374 -0
  147. amps-python-client-5.3.4.1/docs/python/html/_sources/chapters/utilities.rst.txt +214 -0
  148. amps-python-client-5.3.4.1/docs/python/html/_sources/index.rst.txt +44 -0
  149. amps-python-client-5.3.4.1/docs/python/html/_static/ajax-loader.gif +0 -0
  150. amps-python-client-5.3.4.1/docs/python/html/_static/alabaster.css +699 -0
  151. amps-python-client-5.3.4.1/docs/python/html/_static/basic.css +632 -0
  152. amps-python-client-5.3.4.1/docs/python/html/_static/comment-bright.png +0 -0
  153. amps-python-client-5.3.4.1/docs/python/html/_static/comment-close.png +0 -0
  154. amps-python-client-5.3.4.1/docs/python/html/_static/comment.png +0 -0
  155. amps-python-client-5.3.4.1/docs/python/html/_static/custom.css +192 -0
  156. amps-python-client-5.3.4.1/docs/python/html/_static/custom.css.backup +161 -0
  157. amps-python-client-5.3.4.1/docs/python/html/_static/doctools.js +287 -0
  158. amps-python-client-5.3.4.1/docs/python/html/_static/down-pressed.png +0 -0
  159. amps-python-client-5.3.4.1/docs/python/html/_static/down.png +0 -0
  160. amps-python-client-5.3.4.1/docs/python/html/_static/file.png +0 -0
  161. amps-python-client-5.3.4.1/docs/python/html/_static/flag_logo.png +0 -0
  162. amps-python-client-5.3.4.1/docs/python/html/_static/flag_logo.svg +153 -0
  163. amps-python-client-5.3.4.1/docs/python/html/_static/jquery-3.1.0.js +10074 -0
  164. amps-python-client-5.3.4.1/docs/python/html/_static/jquery.js +4 -0
  165. amps-python-client-5.3.4.1/docs/python/html/_static/minus.png +0 -0
  166. amps-python-client-5.3.4.1/docs/python/html/_static/plus.png +0 -0
  167. amps-python-client-5.3.4.1/docs/python/html/_static/pygments.css +74 -0
  168. amps-python-client-5.3.4.1/docs/python/html/_static/searchtools.js +758 -0
  169. amps-python-client-5.3.4.1/docs/python/html/_static/underscore-1.3.1.js +999 -0
  170. amps-python-client-5.3.4.1/docs/python/html/_static/underscore.js +31 -0
  171. amps-python-client-5.3.4.1/docs/python/html/_static/up-pressed.png +0 -0
  172. amps-python-client-5.3.4.1/docs/python/html/_static/up.png +0 -0
  173. amps-python-client-5.3.4.1/docs/python/html/_static/websupport.js +808 -0
  174. amps-python-client-5.3.4.1/docs/python/html/chapters/advanced-topics.html +447 -0
  175. amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-compiler-list.html +92 -0
  176. amps-python-client-5.3.4.1/docs/python/html/chapters/cpp-feature-table.html +156 -0
  177. amps-python-client-5.3.4.1/docs/python/html/chapters/creating-commands.html +2837 -0
  178. amps-python-client-5.3.4.1/docs/python/html/chapters/deltas.html +169 -0
  179. amps-python-client-5.3.4.1/docs/python/html/chapters/error-handling.html +746 -0
  180. amps-python-client-5.3.4.1/docs/python/html/chapters/exceptions.html +272 -0
  181. amps-python-client-5.3.4.1/docs/python/html/chapters/first-program.html +499 -0
  182. amps-python-client-5.3.4.1/docs/python/html/chapters/high-availability.html +1014 -0
  183. amps-python-client-5.3.4.1/docs/python/html/chapters/installing.html +264 -0
  184. amps-python-client-5.3.4.1/docs/python/html/chapters/introduction.html +245 -0
  185. amps-python-client-5.3.4.1/docs/python/html/chapters/moving-from-python-lite.html +118 -0
  186. amps-python-client-5.3.4.1/docs/python/html/chapters/performance-tips.html +499 -0
  187. amps-python-client-5.3.4.1/docs/python/html/chapters/queues.html +352 -0
  188. amps-python-client-5.3.4.1/docs/python/html/chapters/sow.html +381 -0
  189. amps-python-client-5.3.4.1/docs/python/html/chapters/subscriptions.html +535 -0
  190. amps-python-client-5.3.4.1/docs/python/html/chapters/utilities.html +302 -0
  191. amps-python-client-5.3.4.1/docs/python/html/genindex.html +351 -0
  192. amps-python-client-5.3.4.1/docs/python/html/index.html +380 -0
  193. amps-python-client-5.3.4.1/docs/python/html/objects.inv +0 -0
  194. amps-python-client-5.3.4.1/docs/python/html/search.html +107 -0
  195. amps-python-client-5.3.4.1/docs/python/html/searchindex.js +1 -0
  196. amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/crankitup.doctree +0 -0
  197. amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/chapters/equipment.doctree +0 -0
  198. amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/environment.pickle +0 -0
  199. amps-python-client-5.3.4.1/docs/python-quickstart/doctrees/index.doctree +0 -0
  200. amps-python-client-5.3.4.1/docs/python-quickstart/html/.buildinfo +4 -0
  201. amps-python-client-5.3.4.1/docs/python-quickstart/html/_sources/chapters/crankitup.rst.txt +155 -0
  202. amps-python-client-5.3.4.1/docs/python-quickstart/html/_sources/chapters/equipment.rst.txt +19 -0
  203. amps-python-client-5.3.4.1/docs/python-quickstart/html/_sources/index.rst.txt +20 -0
  204. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/ajax-loader.gif +0 -0
  205. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/alabaster.css +699 -0
  206. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/basic.css +632 -0
  207. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/comment-bright.png +0 -0
  208. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/comment-close.png +0 -0
  209. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/comment.png +0 -0
  210. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css +192 -0
  211. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/custom.css.backup +161 -0
  212. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/doctools.js +287 -0
  213. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/down-pressed.png +0 -0
  214. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/down.png +0 -0
  215. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/file.png +0 -0
  216. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/flag_logo.png +0 -0
  217. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/flag_logo.svg +153 -0
  218. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/jquery-3.1.0.js +10074 -0
  219. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/jquery.js +4 -0
  220. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/minus.png +0 -0
  221. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/plus.png +0 -0
  222. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/pygments.css +74 -0
  223. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/searchtools.js +758 -0
  224. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/underscore-1.3.1.js +999 -0
  225. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/underscore.js +31 -0
  226. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/up-pressed.png +0 -0
  227. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/up.png +0 -0
  228. amps-python-client-5.3.4.1/docs/python-quickstart/html/_static/websupport.js +808 -0
  229. amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/crankitup.html +271 -0
  230. amps-python-client-5.3.4.1/docs/python-quickstart/html/chapters/equipment.html +105 -0
  231. amps-python-client-5.3.4.1/docs/python-quickstart/html/genindex.html +97 -0
  232. amps-python-client-5.3.4.1/docs/python-quickstart/html/index.html +382 -0
  233. amps-python-client-5.3.4.1/docs/python-quickstart/html/objects.inv +0 -0
  234. amps-python-client-5.3.4.1/docs/python-quickstart/html/search.html +107 -0
  235. amps-python-client-5.3.4.1/docs/python-quickstart/html/searchindex.js +1 -0
  236. amps-python-client-5.3.4.1/docs/resources/custom.css +9 -0
  237. amps-python-client-5.3.4.1/docs/resources/flag_logo.svg +153 -0
  238. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/acks.doctree +0 -0
  239. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/actions.doctree +0 -0
  240. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps-statistics.doctree +0 -0
  241. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_expressions.doctree +0 -0
  242. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/amps_functions.doctree +0 -0
  243. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/auxiliary_modules.doctree +0 -0
  244. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/config-file-shortcuts.doctree +0 -0
  245. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/conflated_topics.doctree +0 -0
  246. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/constructing-fields.doctree +0 -0
  247. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/daemon.doctree +0 -0
  248. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/delta.doctree +0 -0
  249. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/distribution.doctree +0 -0
  250. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/enrichment.doctree +0 -0
  251. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/events.doctree +0 -0
  252. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/file_format_versions.doctree +0 -0
  253. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/glossary.doctree +0 -0
  254. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/ha.doctree +0 -0
  255. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/installing_and_starting.doctree +0 -0
  256. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/intro.doctree +0 -0
  257. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/logging.doctree +0 -0
  258. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/messageTypes.doctree +0 -0
  259. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/monitoring.doctree +0 -0
  260. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/oof.doctree +0 -0
  261. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/operation.doctree +0 -0
  262. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/pub_sub.doctree +0 -0
  263. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/queues.doctree +0 -0
  264. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/replication.doctree +0 -0
  265. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/securing.doctree +0 -0
  266. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow.doctree +0 -0
  267. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/sow_queries.doctree +0 -0
  268. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/spark.doctree +0 -0
  269. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/transports.doctree +0 -0
  270. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/troubleshooting.doctree +0 -0
  271. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/txlog.doctree +0 -0
  272. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/usecases.doctree +0 -0
  273. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/utilities.doctree +0 -0
  274. amps-python-client-5.3.4.1/docs/user-guide/doctrees/chapters/views.doctree +0 -0
  275. amps-python-client-5.3.4.1/docs/user-guide/doctrees/environment.pickle +0 -0
  276. amps-python-client-5.3.4.1/docs/user-guide/doctrees/index.doctree +0 -0
  277. amps-python-client-5.3.4.1/docs/user-guide/html/.buildinfo +4 -0
  278. amps-python-client-5.3.4.1/docs/user-guide/html/_images/AMPS-Queues-Intro.svg +1330 -0
  279. amps-python-client-5.3.4.1/docs/user-guide/html/_images/GeoRepl.png +0 -0
  280. amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_async_ack.png +0 -0
  281. amps-python-client-5.3.4.1/docs/user-guide/html/_images/HA_sync_ack.png +0 -0
  282. amps-python-client-5.3.4.1/docs/user-guide/html/_images/Hot-Hot-Replication.png +0 -0
  283. amps-python-client-5.3.4.1/docs/user-guide/html/_images/MessageOrdering.svg +235 -0
  284. amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF5.png +0 -0
  285. amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF6.png +0 -0
  286. amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF7.png +0 -0
  287. amps-python-client-5.3.4.1/docs/user-guide/html/_images/OOF8.png +0 -0
  288. amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub1.svg +1 -0
  289. amps-python-client-5.3.4.1/docs/user-guide/html/_images/PubSub2.svg +1 -0
  290. amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWAndSubscribeAndReplace.svg +684 -0
  291. amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery1.svg +402 -0
  292. amps-python-client-5.3.4.1/docs/user-guide/html/_images/SOWQuery2.svg +505 -0
  293. amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig1.svg +1 -0
  294. amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig2.svg +1 -0
  295. amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig3.svg +1 -0
  296. amps-python-client-5.3.4.1/docs/user-guide/html/_images/UseCaseFig4.svg +1 -0
  297. amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.png +0 -0
  298. amps-python-client-5.3.4.1/docs/user-guide/html/_images/caution.svg +25 -0
  299. amps-python-client-5.3.4.1/docs/user-guide/html/_images/chicago_group.png +0 -0
  300. amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_original_messages.png +0 -0
  301. amps-python-client-5.3.4.1/docs/user-guide/html/_images/delta_update_message.png +0 -0
  302. amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.png +0 -0
  303. amps-python-client-5.3.4.1/docs/user-guide/html/_images/important.svg +25 -0
  304. amps-python-client-5.3.4.1/docs/user-guide/html/_images/inline_view_conflation.svg +1 -0
  305. amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_pub.png +0 -0
  306. amps-python-client-5.3.4.1/docs/user-guide/html/_images/paginated_subs_sub.png +0 -0
  307. amps-python-client-5.3.4.1/docs/user-guide/html/_images/queue_usage_overview.svg +627 -0
  308. amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_hub.png +0 -0
  309. amps-python-client-5.3.4.1/docs/user-guide/html/_images/replication_scenario_with_ha.png +0 -0
  310. amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_1.svg +248 -0
  311. amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_overview_2.svg +183 -0
  312. amps-python-client-5.3.4.1/docs/user-guide/html/_images/sow_update_sequence.svg +1 -0
  313. amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.png +0 -0
  314. amps-python-client-5.3.4.1/docs/user-guide/html/_images/tip.svg +31 -0
  315. amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.png +0 -0
  316. amps-python-client-5.3.4.1/docs/user-guide/html/_images/warning.svg +23 -0
  317. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/acks.rst.txt +232 -0
  318. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/actions.rst.txt +111 -0
  319. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps-statistics.rst.txt +358 -0
  320. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_expressions.rst.txt +83 -0
  321. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/amps_functions.rst.txt +11 -0
  322. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/auxiliary_modules.rst.txt +86 -0
  323. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/config-file-shortcuts.rst.txt +9 -0
  324. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/conflated_topics.rst.txt +111 -0
  325. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/constructing-fields.rst.txt +269 -0
  326. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/daemon.rst.txt +232 -0
  327. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/delta.rst.txt +556 -0
  328. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/distribution.rst.txt +186 -0
  329. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/enrichment.rst.txt +191 -0
  330. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/events.rst.txt +39 -0
  331. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/file_format_versions.rst.txt +203 -0
  332. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/glossary.rst.txt +101 -0
  333. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/ha.rst.txt +465 -0
  334. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/installing_and_starting.rst.txt +23 -0
  335. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/intro.rst.txt +116 -0
  336. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/logging.rst.txt +34 -0
  337. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/messageTypes.rst.txt +1398 -0
  338. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/monitoring.rst.txt +326 -0
  339. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/oof.rst.txt +312 -0
  340. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/operation.rst.txt +27 -0
  341. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/pub_sub.rst.txt +49 -0
  342. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/queues.rst.txt +1351 -0
  343. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/replication.rst.txt +1228 -0
  344. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/securing.rst.txt +657 -0
  345. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow.rst.txt +57 -0
  346. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/sow_queries.rst.txt +25 -0
  347. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/spark.rst.txt +824 -0
  348. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/transports.rst.txt +291 -0
  349. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/troubleshooting.rst.txt +517 -0
  350. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/txlog.rst.txt +62 -0
  351. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/usecases.rst.txt +21 -0
  352. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/utilities.rst.txt +62 -0
  353. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/chapters/views.rst.txt +175 -0
  354. amps-python-client-5.3.4.1/docs/user-guide/html/_sources/index.rst.txt +110 -0
  355. amps-python-client-5.3.4.1/docs/user-guide/html/_static/ajax-loader.gif +0 -0
  356. amps-python-client-5.3.4.1/docs/user-guide/html/_static/alabaster.css +695 -0
  357. amps-python-client-5.3.4.1/docs/user-guide/html/_static/basic.css +632 -0
  358. amps-python-client-5.3.4.1/docs/user-guide/html/_static/comment-bright.png +0 -0
  359. amps-python-client-5.3.4.1/docs/user-guide/html/_static/comment-close.png +0 -0
  360. amps-python-client-5.3.4.1/docs/user-guide/html/_static/comment.png +0 -0
  361. amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css +192 -0
  362. amps-python-client-5.3.4.1/docs/user-guide/html/_static/custom.css.backup +161 -0
  363. amps-python-client-5.3.4.1/docs/user-guide/html/_static/doctools.js +287 -0
  364. amps-python-client-5.3.4.1/docs/user-guide/html/_static/down-pressed.png +0 -0
  365. amps-python-client-5.3.4.1/docs/user-guide/html/_static/down.png +0 -0
  366. amps-python-client-5.3.4.1/docs/user-guide/html/_static/file.png +0 -0
  367. amps-python-client-5.3.4.1/docs/user-guide/html/_static/flag_logo.png +0 -0
  368. amps-python-client-5.3.4.1/docs/user-guide/html/_static/flag_logo.svg +153 -0
  369. amps-python-client-5.3.4.1/docs/user-guide/html/_static/jquery-3.1.0.js +10074 -0
  370. amps-python-client-5.3.4.1/docs/user-guide/html/_static/jquery.js +4 -0
  371. amps-python-client-5.3.4.1/docs/user-guide/html/_static/minus.png +0 -0
  372. amps-python-client-5.3.4.1/docs/user-guide/html/_static/plus.png +0 -0
  373. amps-python-client-5.3.4.1/docs/user-guide/html/_static/pygments.css +74 -0
  374. amps-python-client-5.3.4.1/docs/user-guide/html/_static/searchtools.js +758 -0
  375. amps-python-client-5.3.4.1/docs/user-guide/html/_static/underscore-1.3.1.js +999 -0
  376. amps-python-client-5.3.4.1/docs/user-guide/html/_static/underscore.js +31 -0
  377. amps-python-client-5.3.4.1/docs/user-guide/html/_static/up-pressed.png +0 -0
  378. amps-python-client-5.3.4.1/docs/user-guide/html/_static/up.png +0 -0
  379. amps-python-client-5.3.4.1/docs/user-guide/html/_static/websupport.js +808 -0
  380. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/acks.html +289 -0
  381. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/actions.html +3782 -0
  382. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps-statistics.html +439 -0
  383. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_expressions.html +1552 -0
  384. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/amps_functions.html +1626 -0
  385. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/auxiliary_modules.html +2548 -0
  386. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/config-file-shortcuts.html +508 -0
  387. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/conflated_topics.html +328 -0
  388. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/constructing-fields.html +447 -0
  389. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/daemon.html +295 -0
  390. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/delta.html +609 -0
  391. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/distribution.html +246 -0
  392. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/enrichment.html +264 -0
  393. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/events.html +449 -0
  394. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/file_format_versions.html +229 -0
  395. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/glossary.html +215 -0
  396. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/ha.html +978 -0
  397. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/installing_and_starting.html +357 -0
  398. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/intro.html +572 -0
  399. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/logging.html +972 -0
  400. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/messageTypes.html +1280 -0
  401. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/monitoring.html +718 -0
  402. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/oof.html +341 -0
  403. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/operation.html +1515 -0
  404. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/pub_sub.html +934 -0
  405. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/queues.html +1767 -0
  406. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/replication.html +1777 -0
  407. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/securing.html +697 -0
  408. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow.html +1038 -0
  409. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/sow_queries.html +621 -0
  410. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/spark.html +819 -0
  411. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/transports.html +352 -0
  412. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/troubleshooting.html +530 -0
  413. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/txlog.html +1013 -0
  414. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/usecases.html +288 -0
  415. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/utilities.html +133 -0
  416. amps-python-client-5.3.4.1/docs/user-guide/html/chapters/views.html +1120 -0
  417. amps-python-client-5.3.4.1/docs/user-guide/html/genindex.html +1261 -0
  418. amps-python-client-5.3.4.1/docs/user-guide/html/index.html +163 -0
  419. amps-python-client-5.3.4.1/docs/user-guide/html/objects.inv +0 -0
  420. amps-python-client-5.3.4.1/docs/user-guide/html/search.html +106 -0
  421. amps-python-client-5.3.4.1/docs/user-guide/html/searchindex.js +1 -0
  422. amps-python-client-5.3.4.1/include/ampspy_bookmarkstore.hpp +63 -0
  423. amps-python-client-5.3.4.1/include/ampspy_compat.h +63 -0
  424. amps-python-client-5.3.4.1/include/ampspy_defs.hpp +181 -0
  425. amps-python-client-5.3.4.1/include/ampspy_recoverypointadapter.hpp +52 -0
  426. amps-python-client-5.3.4.1/include/ampspy_shims.hpp +113 -0
  427. amps-python-client-5.3.4.1/include/ampspy_type_object.hpp +242 -0
  428. amps-python-client-5.3.4.1/include/ampspy_types.hpp +1139 -0
  429. amps-python-client-5.3.4.1/include/ampspyver.h +30 -0
  430. amps-python-client-5.3.4.1/index.html +66 -0
  431. amps-python-client-5.3.4.1/samples/AMPSConsolePublisher.py +59 -0
  432. amps-python-client-5.3.4.1/samples/AMPSConsoleSubscriber.py +63 -0
  433. amps-python-client-5.3.4.1/samples/AMPSFIXBuilderPublisher.py +71 -0
  434. amps-python-client-5.3.4.1/samples/AMPSFIXShredderSubscriber.py +69 -0
  435. amps-python-client-5.3.4.1/samples/AMPSNVFIXBuilderPublisher.py +71 -0
  436. amps-python-client-5.3.4.1/samples/AMPSNVFIXShredderSubscriber.py +67 -0
  437. amps-python-client-5.3.4.1/samples/AMPSPublishForReplay.py +81 -0
  438. amps-python-client-5.3.4.1/samples/AMPSQueueConsumer.py +69 -0
  439. amps-python-client-5.3.4.1/samples/AMPSQueuePublisher.py +59 -0
  440. amps-python-client-5.3.4.1/samples/AMPSSOWConsolePublisher.py +67 -0
  441. amps-python-client-5.3.4.1/samples/AMPSSOWConsoleSubscriber.py +77 -0
  442. amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeConsoleSubscriber.py +79 -0
  443. amps-python-client-5.3.4.1/samples/AMPSSOWandSubscribeWithOOF.py +108 -0
  444. amps-python-client-5.3.4.1/samples/AMPSSubscribeForReplay.py +128 -0
  445. amps-python-client-5.3.4.1/samples/AMPSUpdateForOOF.py +123 -0
  446. amps-python-client-5.3.4.1/samples/CompositeMessagePublisher.py +84 -0
  447. amps-python-client-5.3.4.1/samples/CompositeMessageSubscriber.py +87 -0
  448. amps-python-client-5.3.4.1/samples/RandomServerChooser.py +41 -0
  449. amps-python-client-5.3.4.1/samples/sample.xml +335 -0
  450. amps-python-client-5.3.4.1/setup.py +209 -0
  451. amps-python-client-5.3.4.1/setup_amps.py +94 -0
  452. amps-python-client-5.3.4.1/src/ampspy_shims.cpp +203 -0
  453. amps-python-client-5.3.4.1/src/ampspy_type_object.cpp +484 -0
  454. amps-python-client-5.3.4.1/src/authenticator.cpp +128 -0
  455. amps-python-client-5.3.4.1/src/bookmarkstore.cpp +238 -0
  456. amps-python-client-5.3.4.1/src/client.cpp +2430 -0
  457. amps-python-client-5.3.4.1/src/client_docs.h +956 -0
  458. amps-python-client-5.3.4.1/src/cmessagehandler.cpp +151 -0
  459. amps-python-client-5.3.4.1/src/command.cpp +164 -0
  460. amps-python-client-5.3.4.1/src/command_docs.h +194 -0
  461. amps-python-client-5.3.4.1/src/compositemessagebuilder.cpp +111 -0
  462. amps-python-client-5.3.4.1/src/compositemessageparser.cpp +146 -0
  463. amps-python-client-5.3.4.1/src/conflatingrecoverypointadapter.cpp +194 -0
  464. amps-python-client-5.3.4.1/src/cpp/include/amps/BlockPublishStore.hpp +2053 -0
  465. amps-python-client-5.3.4.1/src/cpp/include/amps/BlockStore.hpp +677 -0
  466. amps-python-client-5.3.4.1/src/cpp/include/amps/BookmarkStore.hpp +542 -0
  467. amps-python-client-5.3.4.1/src/cpp/include/amps/Buffer.hpp +214 -0
  468. amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageBuilder.hpp +174 -0
  469. amps-python-client-5.3.4.1/src/cpp/include/amps/CompositeMessageParser.hpp +151 -0
  470. amps-python-client-5.3.4.1/src/cpp/include/amps/DefaultServerChooser.hpp +162 -0
  471. amps-python-client-5.3.4.1/src/cpp/include/amps/Field.hpp +719 -0
  472. amps-python-client-5.3.4.1/src/cpp/include/amps/HAClient.hpp +370 -0
  473. amps-python-client-5.3.4.1/src/cpp/include/amps/HAClientImpl.hpp +460 -0
  474. amps-python-client-5.3.4.1/src/cpp/include/amps/HybridPublishStore.hpp +481 -0
  475. amps-python-client-5.3.4.1/src/cpp/include/amps/LoggedBookmarkStore.hpp +1255 -0
  476. amps-python-client-5.3.4.1/src/cpp/include/amps/MMapBookmarkStore.hpp +1283 -0
  477. amps-python-client-5.3.4.1/src/cpp/include/amps/MMapStoreBuffer.hpp +290 -0
  478. amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryBookmarkStore.hpp +1622 -0
  479. amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryPublishStore.hpp +66 -0
  480. amps-python-client-5.3.4.1/src/cpp/include/amps/MemoryStoreBuffer.hpp +244 -0
  481. amps-python-client-5.3.4.1/src/cpp/include/amps/MemorySubscriptionManager.hpp +850 -0
  482. amps-python-client-5.3.4.1/src/cpp/include/amps/Message.hpp +1819 -0
  483. amps-python-client-5.3.4.1/src/cpp/include/amps/MessageRouter.hpp +618 -0
  484. amps-python-client-5.3.4.1/src/cpp/include/amps/PublishStore.hpp +158 -0
  485. amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategy.hpp +106 -0
  486. amps-python-client-5.3.4.1/src/cpp/include/amps/ReconnectDelayStrategyImpl.hpp +317 -0
  487. amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPoint.hpp +323 -0
  488. amps-python-client-5.3.4.1/src/cpp/include/amps/RecoveryPointAdapter.hpp +501 -0
  489. amps-python-client-5.3.4.1/src/cpp/include/amps/RingBookmarkStore.hpp +669 -0
  490. amps-python-client-5.3.4.1/src/cpp/include/amps/SOWRecoveryPointAdapter.hpp +490 -0
  491. amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooser.hpp +145 -0
  492. amps-python-client-5.3.4.1/src/cpp/include/amps/ServerChooserImpl.hpp +95 -0
  493. amps-python-client-5.3.4.1/src/cpp/include/amps/amps.h +775 -0
  494. amps-python-client-5.3.4.1/src/cpp/include/amps/amps_generated.h +46 -0
  495. amps-python-client-5.3.4.1/src/cpp/include/amps/amps_impl.h +204 -0
  496. amps-python-client-5.3.4.1/src/cpp/include/amps/amps_ssl.h +78 -0
  497. amps-python-client-5.3.4.1/src/cpp/include/amps/ampscrc.hpp +210 -0
  498. amps-python-client-5.3.4.1/src/cpp/include/amps/ampsplusplus.hpp +8817 -0
  499. amps-python-client-5.3.4.1/src/cpp/include/amps/ampsuri.h +84 -0
  500. amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h +41 -0
  501. amps-python-client-5.3.4.1/src/cpp/include/amps/ampsver.h.in +41 -0
  502. amps-python-client-5.3.4.1/src/cpp/include/amps/constants.hpp +194 -0
  503. amps-python-client-5.3.4.1/src/cpp/include/amps/util.hpp +1692 -0
  504. amps-python-client-5.3.4.1/src/cpp/src/amps_protocol.c +688 -0
  505. amps-python-client-5.3.4.1/src/cpp/src/amps_protocol_generated.h +80 -0
  506. amps-python-client-5.3.4.1/src/cpp/src/amps_ssl.c +489 -0
  507. amps-python-client-5.3.4.1/src/cpp/src/atfork.c +446 -0
  508. amps-python-client-5.3.4.1/src/cpp/src/client.c +483 -0
  509. amps-python-client-5.3.4.1/src/cpp/src/makefile +92 -0
  510. amps-python-client-5.3.4.1/src/cpp/src/message.c +837 -0
  511. amps-python-client-5.3.4.1/src/cpp/src/message_generated.h +611 -0
  512. amps-python-client-5.3.4.1/src/cpp/src/tcp.c +1489 -0
  513. amps-python-client-5.3.4.1/src/cpp/src/tcps.c +1894 -0
  514. amps-python-client-5.3.4.1/src/cpp/src/transports.c +123 -0
  515. amps-python-client-5.3.4.1/src/cpp/src/unix.c +984 -0
  516. amps-python-client-5.3.4.1/src/cpp/src/uri.c +301 -0
  517. amps-python-client-5.3.4.1/src/exponentialdelaystrategy.cpp +137 -0
  518. amps-python-client-5.3.4.1/src/failedwritehandler.cpp +116 -0
  519. amps-python-client-5.3.4.1/src/fixbuilder.cpp +146 -0
  520. amps-python-client-5.3.4.1/src/fixeddelaystrategy.cpp +114 -0
  521. amps-python-client-5.3.4.1/src/fixshredder.cpp +105 -0
  522. amps-python-client-5.3.4.1/src/fixshredder_docs.h +38 -0
  523. amps-python-client-5.3.4.1/src/haclient.cpp +691 -0
  524. amps-python-client-5.3.4.1/src/haclient_docs.h +132 -0
  525. amps-python-client-5.3.4.1/src/hybridpublishstore.cpp +137 -0
  526. amps-python-client-5.3.4.1/src/hybridpublishstore_docs.h +31 -0
  527. amps-python-client-5.3.4.1/src/memorybookmarkstore.cpp +373 -0
  528. amps-python-client-5.3.4.1/src/memorybookmarkstore_docs.h +39 -0
  529. amps-python-client-5.3.4.1/src/memorypublishstore.cpp +160 -0
  530. amps-python-client-5.3.4.1/src/memorypublishstore_docs.h +32 -0
  531. amps-python-client-5.3.4.1/src/message.cpp +765 -0
  532. amps-python-client-5.3.4.1/src/message_docs.h +306 -0
  533. amps-python-client-5.3.4.1/src/messagestream.cpp +623 -0
  534. amps-python-client-5.3.4.1/src/messagestream_docs.h +45 -0
  535. amps-python-client-5.3.4.1/src/mmapbookmarkstore.cpp +422 -0
  536. amps-python-client-5.3.4.1/src/nvfixbuilder.cpp +160 -0
  537. amps-python-client-5.3.4.1/src/nvfixbuilder_docs.h +33 -0
  538. amps-python-client-5.3.4.1/src/nvfixshredder.cpp +99 -0
  539. amps-python-client-5.3.4.1/src/nvfixshredder_docs.h +39 -0
  540. amps-python-client-5.3.4.1/src/publishstore.cpp +183 -0
  541. amps-python-client-5.3.4.1/src/raw_wrapper.cpp +756 -0
  542. amps-python-client-5.3.4.1/src/reason.cpp +71 -0
  543. amps-python-client-5.3.4.1/src/recoverypoint.cpp +135 -0
  544. amps-python-client-5.3.4.1/src/recoverypointadapter.cpp +171 -0
  545. amps-python-client-5.3.4.1/src/ringbookmarkstore.cpp +360 -0
  546. amps-python-client-5.3.4.1/src/serverchooser.cpp +245 -0
  547. amps-python-client-5.3.4.1/src/serverchooser_docs.h +39 -0
  548. amps-python-client-5.3.4.1/src/sowrecoverypointadapter.cpp +248 -0
  549. amps-python-client-5.3.4.1/src/store.cpp +62 -0
  550. amps-python-client-5.3.4.1/src/versioninfo.cpp +175 -0
@@ -0,0 +1,1139 @@
1
+ ////////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // Copyright (c) 2010-2023 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 __AMPSPY_TYPES_HPP
26
+ #define __AMPSPY_TYPES_HPP
27
+
28
+ #include <ampspy_shims.hpp>
29
+ #include <amps/util.hpp>
30
+ #include <amps/ampsplusplus.hpp>
31
+ #include <amps/CompositeMessageBuilder.hpp>
32
+ #include <amps/CompositeMessageParser.hpp>
33
+ #include <amps/DefaultServerChooser.hpp>
34
+ #include <amps/MMapBookmarkStore.hpp>
35
+ #include <amps/MemoryPublishStore.hpp>
36
+ #include <amps/PublishStore.hpp>
37
+ #include <amps/ReconnectDelayStrategy.hpp>
38
+ #include <amps/RecoveryPoint.hpp>
39
+ #include <amps/RecoveryPointAdapter.hpp>
40
+ #include <amps/RingBookmarkStore.hpp>
41
+ #include <amps/SOWRecoveryPointAdapter.hpp>
42
+ #include <ampspy_type_object.hpp>
43
+
44
+ #include <deque>
45
+ #include <memory>
46
+ #include <vector>
47
+
48
+ // It's a little strange to define _PyThreadState_Current for >= 3.5,
49
+ // since that is still the name of a global in python (albeit with static
50
+ // linkage). Instead we make the equivalent python 3 function available in 2.x.
51
+ #if PY_VERSION_HEX < 0x03000000 && !defined(_PyThreadState_UncheckedGet)
52
+ #define _PyThreadState_UncheckedGet() _PyThreadState_Current
53
+ #elif PY_VERSION_HEX < 0x03050000 && !defined(_PyThreadState_UncheckedGet)
54
+ #define _PyThreadState_UncheckedGet() ((PyThreadState*)_Py_atomic_load_relaxed(&_PyThreadState_Current))
55
+ #endif
56
+
57
+ #if __cplusplus >= 201100L || _MSC_VER >= 1900
58
+ #include <atomic>
59
+ #define AMPSPY_ATOMIC(x) std::atomic<x>
60
+ #define AMPSPY_IEX_GET(x, y) std::atomic_exchange(x, y)
61
+ #else
62
+ #define AMPSPY_ATOMIC(x) x volatile
63
+ #ifdef _WIN64
64
+ #define AMPSPY_IEX_GET(ptr,value) _InterlockedExchange64((LONG64*)(ptr), (LONG64)(value))
65
+ #elif defined(_WIN32 )
66
+ #define AMPSPY_IEX_GET(ptr,value) _InterlockedExchange((long*)(ptr), (LONG)(value))
67
+ #else
68
+ #define AMPSPY_IEX_GET(ptr, value) __sync_lock_test_and_set(ptr, value)
69
+ #endif
70
+ #endif
71
+
72
+ class ampspy_shutdown_exception : public std::runtime_error
73
+ {
74
+ public:
75
+ ampspy_shutdown_exception(void)
76
+ : std::runtime_error("The python interpreter is shutting down.")
77
+ {;}
78
+ };
79
+
80
+ class AMPSDLL LockGIL
81
+ {
82
+ PyGILState_STATE state;
83
+ public:
84
+ // due to bugs.python.org/issue1856, we can't safely Ensure while the interpreter is shutting down.
85
+ // we have an at-exit handler registered that sets this flag, which should exit any thread
86
+ // about to attempt to call back into python from here, while the main thread finishes up.
87
+ LockGIL()
88
+ {
89
+ if (ampspy::shims::Py_IsFinalizing())
90
+ {
91
+ throw ampspy_shutdown_exception();
92
+ }
93
+ state = PyGILState_Ensure();
94
+ }
95
+ ~LockGIL()
96
+ {
97
+ if (ampspy::shims::PyThreadState_UncheckedGet() == PyGILState_GetThisThreadState())
98
+ {
99
+ PyGILState_Release(state);
100
+ }
101
+ else
102
+ {
103
+ // We're here because we think we are the current thread and own
104
+ // the GIL, and yet _PyThreadState_Current says we're not the
105
+ // current thread. Calling Release here will abort(). This
106
+ // seems to happen after the shutdown sequence has initiated,
107
+ // inside threads other than the interpreter thread.
108
+ ;
109
+ }
110
+ }
111
+ };
112
+
113
+ #define LOCKGIL LockGIL _lock_;
114
+ class AMPSDLL UnlockGIL
115
+ {
116
+ PyThreadState* state;
117
+ public:
118
+ UnlockGIL()
119
+ {
120
+ state = PyEval_SaveThread();
121
+ }
122
+ ~UnlockGIL()
123
+ {
124
+ if (state)
125
+ {
126
+ PyEval_RestoreThread(state);
127
+ }
128
+ }
129
+ void restore()
130
+ {
131
+ PyEval_RestoreThread(state);
132
+ state = NULL;
133
+ }
134
+ };
135
+
136
+ template<class Object = PyObject>
137
+ class AMPSDLL AMPSPyReference
138
+ {
139
+ Object* _self;
140
+ public:
141
+
142
+ AMPSPyReference(Object* self_) : _self(self_)
143
+ {
144
+ }
145
+
146
+ ~AMPSPyReference()
147
+ {
148
+ Py_XDECREF((PyObject*)_self);
149
+ }
150
+ operator Object* ()
151
+ {
152
+ return _self;
153
+ }
154
+ Object* operator*(void)
155
+ {
156
+ return _self;
157
+ }
158
+ Object* operator->(void)
159
+ {
160
+ return _self;
161
+ }
162
+
163
+ bool isNull(void) const
164
+ {
165
+ return _self == NULL;
166
+ }
167
+ PyObject* asPyObject(void)
168
+ {
169
+ return (PyObject*)_self;
170
+ }
171
+
172
+ PyObject* release(void)
173
+ {
174
+ PyObject* self = (PyObject*)_self;
175
+ _self = NULL;
176
+ return self;
177
+ }
178
+ };
179
+
180
+
181
+
182
+ #define UNLOCKGIL UnlockGIL _lock_;
183
+
184
+ //
185
+ // Defines an AMPSException subclass that wraps a Python exception/value/traceback.
186
+ // Keeps references to the fetched error and clears the error state. Can restore self
187
+ // to the python error state, or just the value can be extracted and borrowed. Takes
188
+ // care of removing references when it's all done, or if it is used to restore the
189
+ // error state.
190
+ class PyException : public AMPS::AMPSException
191
+ {
192
+ PyObject* _type, *_value, *_traceback;
193
+ void operator=(const PyException& rhs);
194
+ public:
195
+ PyException(const PyException& rhs):
196
+ AMPS::AMPSException(rhs.what(), AMPS_E_OK),
197
+ _type(rhs._type),
198
+ _value(rhs._value),
199
+ _traceback(rhs._traceback)
200
+ {
201
+ Py_XINCREF(_type);
202
+ Py_XINCREF(_value);
203
+ Py_XINCREF(_traceback);
204
+ }
205
+
206
+ // this error message is seen when the exception is examined from C++ land,
207
+ // including in the "reason" entry in the dictionary passed to ServerChooser's
208
+ // report_failure.
209
+ PyException() : AMPS::AMPSException("a python exception occurred.", AMPS_E_OK)
210
+ {
211
+ _type = NULL;
212
+ _value = NULL;
213
+ _traceback = NULL;
214
+ PyErr_Fetch(&_type, &_value, &_traceback);
215
+ PyErr_NormalizeException(&_type, &_value, &_traceback);
216
+
217
+ // attempt to create a textual description of the error, and set our own "what" to it
218
+ std::string text;
219
+ if (_type)
220
+ {
221
+ PyObject* typeName = PyObject_GetAttrString(_type, "__name__");
222
+ if (typeName)
223
+ {
224
+ #if PY_MAJOR_VERSION >= 3
225
+ text.append(ampspy::shims::PyUnicode_AsUTF8(typeName));
226
+ #else
227
+ text.append(PyString_AsString(typeName));
228
+ #endif
229
+ text.append(": ");
230
+ Py_DECREF(typeName); // -V1067
231
+ }
232
+ }
233
+ if (_value)
234
+ {
235
+ PyObject* strVal = PyObject_Str(_value);
236
+ #if PY_MAJOR_VERSION >= 3
237
+ if (strVal)
238
+ {
239
+ text.append(ampspy::shims::PyUnicode_AsUTF8(strVal));
240
+ }
241
+ #else
242
+ if (strVal)
243
+ {
244
+ text.append(PyString_AsString(strVal));
245
+ }
246
+ #endif
247
+ Py_XDECREF(strVal); // -V1067
248
+ }
249
+
250
+ // re-set our message if we've got something useful
251
+ if (!text.empty())
252
+ {
253
+ *((AMPS::AMPSException*)this) = AMPS::AMPSException(text, AMPS_E_OK);
254
+ }
255
+ }
256
+
257
+ void restore()
258
+ {
259
+ if (_type)
260
+ {
261
+ PyErr_Restore(_type, _value, _traceback);
262
+ _type = _value = _traceback = NULL;
263
+ }
264
+ }
265
+
266
+ PyObject* value() const
267
+ {
268
+ return _value;
269
+ }
270
+ PyObject* traceback() const
271
+ {
272
+ return _traceback;
273
+ }
274
+
275
+ ~PyException() throw()
276
+ {
277
+ try
278
+ {
279
+ LockGIL lock;
280
+ Py_XDECREF(_type);
281
+ Py_XDECREF(_value);
282
+ Py_XDECREF(_traceback);
283
+ }
284
+ catch (...)
285
+ {
286
+ // ignore exception from locking the GIL.
287
+ // We are shutting down and have been caught without a running interpreter.
288
+ // We can no longer safely remove references from the type/value/traceback.
289
+ }
290
+ }
291
+ };
292
+
293
+ #define AMPS_EX_TRAN(x,y) \
294
+ catch(const x & in_ex) \
295
+ {\
296
+ if(ampspy::_is_signaled == true) \
297
+ {\
298
+ PyErr_SetNone(PyExc_KeyboardInterrupt);\
299
+ ampspy::_is_signaled = false; \
300
+ } else {\
301
+ PyErr_SetString(exc::y, in_ex.what());\
302
+ }\
303
+ return NULL;\
304
+ }
305
+
306
+ #define DISPATCH_EXCEPTION \
307
+ catch(PyException & ex) \
308
+ {\
309
+ ex.restore();\
310
+ return NULL;\
311
+ }\
312
+ AMPS_EX_TRAN(BadSowKeyException, BadSowKeyException)\
313
+ AMPS_EX_TRAN(DuplicateLogonException, DuplicateLogonException)\
314
+ AMPS_EX_TRAN(InvalidBookmarkException, InvalidBookmarkException)\
315
+ AMPS_EX_TRAN(InvalidOptionsException, InvalidOptionsException)\
316
+ AMPS_EX_TRAN(InvalidOrderByException, InvalidOrderByException)\
317
+ AMPS_EX_TRAN(InvalidSubIdException, InvalidSubIdException)\
318
+ AMPS_EX_TRAN(LogonRequiredException, LogonRequiredException)\
319
+ AMPS_EX_TRAN(MissingFieldsException, MissingFieldsException)\
320
+ AMPS_EX_TRAN(PublishException, PublishException)\
321
+ AMPS_EX_TRAN(UsageException, AMPSException) \
322
+ AMPS_EX_TRAN(PublishStoreGapException, AMPSException) \
323
+ AMPS_EX_TRAN(StoreException, AMPSException) \
324
+ AMPS_EX_TRAN(DisconnectedException, DisconnectedException)\
325
+ AMPS_EX_TRAN(AlreadyConnectedException, AlreadyConnectedException)\
326
+ AMPS_EX_TRAN(RetryOperationException, RetryOperationException)\
327
+ AMPS_EX_TRAN(AuthenticationException, AuthenticationException)\
328
+ AMPS_EX_TRAN(NotEntitledException, NotEntitledException)\
329
+ AMPS_EX_TRAN(TimedOutException, TimedOutException)\
330
+ AMPS_EX_TRAN(ConnectionRefusedException, ConnectionRefusedException)\
331
+ AMPS_EX_TRAN(InvalidURIException, InvalidUriException)\
332
+ AMPS_EX_TRAN(TransportTypeException, TransportTypeException)\
333
+ AMPS_EX_TRAN(BadFilterException, BadFilterException)\
334
+ AMPS_EX_TRAN(BadRegexTopicException, BadRegexTopicException)\
335
+ AMPS_EX_TRAN(InvalidTopicException, InvalidTopicException)\
336
+ AMPS_EX_TRAN(NameInUseException, NameInUseException)\
337
+ AMPS_EX_TRAN(SubscriptionAlreadyExistsException, SubscriptionAlreadyExistsException)\
338
+ AMPS_EX_TRAN(SubidInUseException, SubidInUseException)\
339
+ AMPS_EX_TRAN(UnknownException, UnknownException)\
340
+ AMPS_EX_TRAN(CommandException, CommandException)\
341
+ AMPS_EX_TRAN(ConnectionException, ConnectionException)\
342
+ AMPS_EX_TRAN(AMPSException, AMPSException)\
343
+ catch (const std::exception& ex)\
344
+ {\
345
+ if(ampspy::_is_signaled == true) \
346
+ {\
347
+ PyErr_SetNone(PyExc_KeyboardInterrupt);\
348
+ ampspy::_is_signaled = false; \
349
+ } else \
350
+ PyErr_SetString(PyExc_RuntimeError, ex.what());\
351
+ return NULL;\
352
+ } catch(...)\
353
+ {\
354
+ if(ampspy::_is_signaled == true) \
355
+ {\
356
+ PyErr_SetNone(PyExc_KeyboardInterrupt);\
357
+ ampspy::_is_signaled = false; \
358
+ } else \
359
+ PyErr_SetString(PyExc_RuntimeError, "An unknown error has occured.");\
360
+ return NULL;\
361
+ }
362
+
363
+ #define AMPS_EX_TRAN_NO_RETURN(x,y) \
364
+ catch(const x & in_ex) \
365
+ {\
366
+ if(ampspy::_is_signaled == true) \
367
+ {\
368
+ PyErr_SetNone(PyExc_KeyboardInterrupt);\
369
+ ampspy::_is_signaled = false; \
370
+ } else \
371
+ PyErr_SetString(exc::y, in_ex.what());\
372
+ }
373
+
374
+ #define DISPATCH_EXCEPTION_NO_RETURN \
375
+ catch(PyException & ex) \
376
+ {\
377
+ ex.restore();\
378
+ }\
379
+ AMPS_EX_TRAN_NO_RETURN(BadSowKeyException, BadSowKeyException)\
380
+ AMPS_EX_TRAN_NO_RETURN(DuplicateLogonException, DuplicateLogonException)\
381
+ AMPS_EX_TRAN_NO_RETURN(InvalidBookmarkException, InvalidBookmarkException)\
382
+ AMPS_EX_TRAN_NO_RETURN(InvalidOptionsException, InvalidOptionsException)\
383
+ AMPS_EX_TRAN_NO_RETURN(InvalidOrderByException, InvalidOrderByException)\
384
+ AMPS_EX_TRAN_NO_RETURN(InvalidSubIdException, InvalidSubIdException)\
385
+ AMPS_EX_TRAN_NO_RETURN(LogonRequiredException, LogonRequiredException)\
386
+ AMPS_EX_TRAN_NO_RETURN(MissingFieldsException, MissingFieldsException)\
387
+ AMPS_EX_TRAN_NO_RETURN(PublishException, PublishException)\
388
+ AMPS_EX_TRAN_NO_RETURN(UsageException, AMPSException) \
389
+ AMPS_EX_TRAN_NO_RETURN(PublishStoreGapException, AMPSException) \
390
+ AMPS_EX_TRAN_NO_RETURN(StoreException, AMPSException) \
391
+ AMPS_EX_TRAN_NO_RETURN(DisconnectedException, DisconnectedException)\
392
+ AMPS_EX_TRAN_NO_RETURN(AlreadyConnectedException, AlreadyConnectedException)\
393
+ AMPS_EX_TRAN_NO_RETURN(RetryOperationException, RetryOperationException)\
394
+ AMPS_EX_TRAN_NO_RETURN(AuthenticationException, AuthenticationException)\
395
+ AMPS_EX_TRAN_NO_RETURN(NotEntitledException, NotEntitledException)\
396
+ AMPS_EX_TRAN_NO_RETURN(TimedOutException, TimedOutException)\
397
+ AMPS_EX_TRAN_NO_RETURN(ConnectionRefusedException, ConnectionRefusedException)\
398
+ AMPS_EX_TRAN_NO_RETURN(InvalidURIException, InvalidUriException)\
399
+ AMPS_EX_TRAN_NO_RETURN(TransportTypeException, TransportTypeException)\
400
+ AMPS_EX_TRAN_NO_RETURN(BadFilterException, BadFilterException)\
401
+ AMPS_EX_TRAN_NO_RETURN(BadRegexTopicException, BadRegexTopicException)\
402
+ AMPS_EX_TRAN_NO_RETURN(InvalidTopicException, InvalidTopicException)\
403
+ AMPS_EX_TRAN_NO_RETURN(NameInUseException, NameInUseException)\
404
+ AMPS_EX_TRAN_NO_RETURN(SubscriptionAlreadyExistsException, SubscriptionAlreadyExistsException)\
405
+ AMPS_EX_TRAN_NO_RETURN(SubidInUseException, SubidInUseException)\
406
+ AMPS_EX_TRAN_NO_RETURN(UnknownException, UnknownException)\
407
+ AMPS_EX_TRAN_NO_RETURN(CommandException, CommandException)\
408
+ AMPS_EX_TRAN_NO_RETURN(ConnectionException, ConnectionException)\
409
+ AMPS_EX_TRAN_NO_RETURN(AMPSException, AMPSException)\
410
+ catch (const std::exception& ex)\
411
+ {\
412
+ if(ampspy::_is_signaled == true) \
413
+ {\
414
+ PyErr_SetNone(PyExc_KeyboardInterrupt);\
415
+ ampspy::_is_signaled = false; \
416
+ } else \
417
+ PyErr_SetString(PyExc_RuntimeError, ex.what());\
418
+ } catch(...)\
419
+ {\
420
+ if(ampspy::_is_signaled == true) \
421
+ {\
422
+ PyErr_SetNone(PyExc_KeyboardInterrupt);\
423
+ ampspy::_is_signaled = false; \
424
+ } else \
425
+ PyErr_SetString(PyExc_RuntimeError, "An unknown error has occured.");\
426
+ }
427
+
428
+ namespace ampspy
429
+ {
430
+ // used to initiate an exit process after a callback has requested it.
431
+ AMPSDLL void unhandled_exception();
432
+
433
+ namespace exc
434
+ {
435
+ extern PyObject* AMPSException;
436
+ extern PyObject* CommandException;
437
+ extern PyObject* CommandTypeError;
438
+ extern PyObject* TimedOutException;
439
+ extern PyObject* BadFilterException;
440
+ extern PyObject* BadFilter;
441
+ extern PyObject* BadRegexTopicException;
442
+ extern PyObject* BadRegexTopic;
443
+ extern PyObject* InvalidTopicException;
444
+ extern PyObject* InvalidTopicError;
445
+ extern PyObject* SubidInUseException;
446
+ extern PyObject* SubscriptionAlreadyExistsException;
447
+ extern PyObject* SubscriptionAlreadyExists;
448
+ extern PyObject* UnknownException;
449
+ extern PyObject* UnknownError;
450
+ extern PyObject* ConnectionException;
451
+ extern PyObject* AlreadyConnectedException;
452
+ extern PyObject* AlreadyConnected;
453
+ extern PyObject* AuthenticationException;
454
+ extern PyObject* AuthenticationError;
455
+ extern PyObject* ConnectionRefusedException;
456
+ extern PyObject* ConnectionRefused;
457
+ extern PyObject* DisconnectedException;
458
+ extern PyObject* Disconnected;
459
+ extern PyObject* InvalidUriException;
460
+ extern PyObject* InvalidUriFormat;
461
+ extern PyObject* MessageTypeError;
462
+ extern PyObject* MessageTypeException;
463
+ extern PyObject* MessageTypeNotFound;
464
+ extern PyObject* InvalidMessageTypeOptions;
465
+ extern PyObject* NameInUseException;
466
+ extern PyObject* ClientNameInUse;
467
+ extern PyObject* NotEntitledException;
468
+ extern PyObject* NotEntitledError;
469
+ extern PyObject* RetryOperationException;
470
+ extern PyObject* RetryOperation;
471
+ extern PyObject* StreamException;
472
+ extern PyObject* StreamError;
473
+ extern PyObject* TransportException;
474
+ extern PyObject* TransportError;
475
+ extern PyObject* InvalidTransportOptionsException;
476
+ extern PyObject* InvalidTransportOptions;
477
+ extern PyObject* TransportTypeException;
478
+ extern PyObject* TransportNotFound;
479
+ extern PyObject* BadSowKeyException;
480
+ extern PyObject* DuplicateLogonException;
481
+ extern PyObject* InvalidBookmarkException;
482
+ extern PyObject* InvalidOptionsException;
483
+ extern PyObject* InvalidOrderByException;
484
+ extern PyObject* InvalidSubIdException;
485
+ extern PyObject* LogonRequiredException;
486
+ extern PyObject* MissingFieldsException;
487
+ extern PyObject* PublishException;
488
+
489
+ AMPSDLL void throwError();
490
+ }
491
+
492
+ class PyExceptionListener : public AMPS::ExceptionListener
493
+ {
494
+ volatile PyObject* _callable;
495
+ public:
496
+
497
+ void exceptionThrown(const std::exception& ex) const
498
+ {
499
+ LOCKGIL;
500
+ if (!_callable)
501
+ {
502
+ return;
503
+ }
504
+ PyObject* ctor_args = Py_BuildValue("(s)", ex.what());
505
+ if (ctor_args == NULL)
506
+ {
507
+ ampspy::unhandled_exception();
508
+ }
509
+ PyObject* exception = NULL;
510
+ PyObject* traceback = NULL;
511
+ #if defined(_CPPRTTI) || defined(__GXX_RTTI)
512
+ // IF we have RTTI on, we can check if the exception has a python
513
+ // exception buried in it, and just pass that thing in, instead
514
+ // of manufacturing an AMPSException object.
515
+ // Without RTTI, the python exception listener will always see an
516
+ // AMPSException.
517
+ const PyException* pyException = dynamic_cast<const PyException*>(&ex);
518
+
519
+ if ( pyException != NULL )
520
+ {
521
+ exception = pyException->value();
522
+ Py_XINCREF(exception);
523
+ traceback = pyException->traceback();
524
+ Py_XINCREF(traceback);
525
+ }
526
+ #endif
527
+ if (exception == NULL)
528
+ {
529
+ exception = PyObject_CallObject(ampspy::exc::AMPSException, ctor_args);
530
+ }
531
+ if (exception == NULL)
532
+ {
533
+ ampspy::unhandled_exception();
534
+ }
535
+ if (traceback == NULL)
536
+ {
537
+ traceback = Py_None;
538
+ Py_XINCREF(traceback);
539
+ }
540
+ PyObject* exception_tuple = Py_BuildValue("(OO)", exception, traceback);
541
+ if (exception_tuple == NULL)
542
+ {
543
+ ampspy::unhandled_exception();
544
+ }
545
+ PyObject* retval = PyObject_Call((PyObject*)_callable, exception_tuple, (PyObject*)NULL);
546
+ if (retval == NULL)
547
+ {
548
+ PyErr_Clear();
549
+ // try it without the traceback
550
+ Py_XDECREF(exception_tuple);
551
+ exception_tuple = Py_BuildValue("(O)", exception);
552
+ retval = PyObject_Call((PyObject*)_callable, exception_tuple, (PyObject*)NULL);
553
+ if (retval == NULL)
554
+ {
555
+ ampspy::unhandled_exception();
556
+ }
557
+ }
558
+ Py_XDECREF(retval);
559
+ Py_XDECREF(exception_tuple);
560
+ Py_XDECREF(exception);
561
+ Py_XDECREF(ctor_args);
562
+ Py_XDECREF(traceback);
563
+ }
564
+ PyExceptionListener() : _callable(NULL) {;}
565
+ PyExceptionListener(PyObject* callable)
566
+ : _callable(callable)
567
+ {
568
+ LOCKGIL;
569
+ Py_INCREF(callable);
570
+ }
571
+ ~PyExceptionListener()
572
+ {
573
+ try
574
+ {
575
+ LOCKGIL;
576
+ Py_XDECREF(_callable);
577
+ }
578
+ catch (...)
579
+ {
580
+ // Shutdown can throw locking the GIL
581
+ }
582
+ }
583
+ void set(PyObject* callable)
584
+ {
585
+ try
586
+ {
587
+ LOCKGIL;
588
+ Py_XDECREF(_callable);
589
+ Py_XINCREF(callable);
590
+ }
591
+ catch (...)
592
+ {
593
+ // Shutdown can throw locking the GIL
594
+ }
595
+ _callable = callable;
596
+ }
597
+ volatile PyObject* callable(void)
598
+ {
599
+ return _callable;
600
+ }
601
+ };
602
+
603
+ class PyAuthenticator;
604
+
605
+ namespace message
606
+ {
607
+ struct AMPSDLL obj
608
+ {
609
+ PyObject_HEAD
610
+ AMPS::Message* pMessage;
611
+ bool isOwned;
612
+ };
613
+ namespace options
614
+ {
615
+ struct AMPSDLL obj
616
+ {
617
+ PyObject_HEAD
618
+ AMPS::Message::Options* pOptions;
619
+ };
620
+ } //namespace options
621
+
622
+ AMPSDLL_EXTERN ampspy::ampspy_type_object message_type;
623
+ void add_types(PyObject* module_);
624
+ AMPSDLL PyObject* toPythonMessage(AMPS::Message& message_);
625
+ AMPSDLL void setCppMessage(obj* pMessage_, const AMPS::Message& message_);
626
+ } // namespace message
627
+
628
+ namespace cmessagehandler
629
+ {
630
+ struct AMPSDLL obj
631
+ {
632
+ PyObject_HEAD
633
+ PyObject* function;
634
+ PyObject* userdata;
635
+ };
636
+ AMPSDLL AMPS::MessageHandler getMessageHandler(PyObject* obj);
637
+ AMPSDLL bool isCHandler(PyObject* obj);
638
+ void add_types(PyObject*);
639
+ }
640
+ namespace client
641
+ {
642
+ struct AMPSDLL callback_info;
643
+ class TransportFilter;
644
+ typedef std::list<callback_info*> callback_infos;
645
+ typedef std::map<PyObject*, AMPS::ConnectionStateListener*> connection_state_listeners;
646
+ typedef std::vector<void*> message_stream_list;
647
+ struct obj
648
+ {
649
+ PyObject_HEAD
650
+ PyObject* weakreflist;
651
+ AMPSPY_ATOMIC(AMPS::Client*) pClient;
652
+ PyObject* disconnectHandler;
653
+ std::shared_ptr<AMPS::ExceptionListener> exceptionHandler;
654
+ AMPSPY_ATOMIC(callback_infos*) callbackInfos;
655
+ message::obj* message;
656
+ PyObject* message_args;
657
+ AMPSPY_ATOMIC(connection_state_listeners*) connectionStateListeners;
658
+ TransportFilter* transportFilter;
659
+ PyObject* threadCreatedCallback;
660
+ };
661
+ namespace connection_state_listener
662
+ {
663
+ struct AMPSDLL obj
664
+ {
665
+ PyObject_HEAD
666
+ };
667
+ } // namespace connection_state_listener
668
+ AMPSDLL_EXTERN ampspy_type_object client_type;
669
+ void add_types(PyObject* module_);
670
+ void _initializeInternals(obj*);
671
+ AMPSDLL void* copy_route(void*);
672
+ AMPSDLL void remove_route(void*);
673
+ AMPSDLL void destructor(PyObject*);
674
+ AMPSDLL void clear_callback_infos(void*);
675
+ AMPSDLL void amps_python_client_atfork_prepare();
676
+ AMPSDLL void amps_python_client_atfork_child();
677
+ AMPSDLL void amps_python_client_atfork_parent();
678
+ }
679
+ namespace reason
680
+ {
681
+ struct AMPSDLL obj
682
+ {
683
+ PyObject_HEAD
684
+ };
685
+ AMPSDLL_EXTERN ampspy::ampspy_type_object reason_type;
686
+ void add_types(PyObject* module_);
687
+ }
688
+ namespace store
689
+ {
690
+ struct AMPSDLL obj
691
+ {
692
+ PyObject_HEAD
693
+ };
694
+ void add_types(PyObject* module_);
695
+ }
696
+ namespace fixbuilder
697
+ {
698
+ struct AMPSDLL obj
699
+ {
700
+ PyObject_HEAD
701
+ AMPS::FIXBuilder* pFIXBuilder;
702
+ };
703
+ void add_types(PyObject* module_);
704
+ }
705
+ namespace nvfixbuilder
706
+ {
707
+ struct AMPSDLL obj
708
+ {
709
+ PyObject_HEAD
710
+ AMPS::NVFIXBuilder* pNVFIXBuilder;
711
+ };
712
+ void add_types(PyObject* module_);
713
+ }
714
+
715
+ namespace authenticator
716
+ {
717
+ struct AMPSDLL obj
718
+ {
719
+ PyObject_HEAD;
720
+ };
721
+ void add_types(PyObject* module_);
722
+ }
723
+
724
+ namespace serverchooser
725
+ {
726
+ struct AMPSDLL obj
727
+ {
728
+ PyObject_HEAD
729
+ AMPS::DefaultServerChooser* impl;
730
+ };
731
+ void add_types(PyObject* module_);
732
+ }
733
+
734
+ namespace fixshredder
735
+ {
736
+ struct AMPSDLL obj
737
+ {
738
+ PyObject_HEAD
739
+ char fs;
740
+ };
741
+ void add_types(PyObject* module_);
742
+ }
743
+
744
+ namespace nvfixshredder
745
+ {
746
+ struct AMPSDLL obj
747
+ {
748
+ PyObject_HEAD
749
+ char fs;
750
+ };
751
+ void add_types(PyObject* module_);
752
+ }
753
+ namespace haclient
754
+ {
755
+ struct AMPSDLL obj
756
+ {
757
+ client::obj _client;
758
+ PyObject* _pyServerChooser;
759
+ PyObject* _pyDelayStrategy;
760
+ };
761
+ AMPSDLL_EXTERN ampspy_type_object haclient_type;
762
+ void add_types(PyObject* module_);
763
+ }
764
+ namespace messagestream
765
+ {
766
+ struct obj;
767
+ AMPSDLL void messageCallback(const AMPS::Message& message, void* void_self);
768
+ class CustomConnectionStateListener : public AMPS::ConnectionStateListener
769
+ {
770
+ obj* _self;
771
+ public:
772
+ CustomConnectionStateListener(obj* self_ = NULL) : _self(self_) {}
773
+ void connectionStateChanged(AMPS::ConnectionStateListener::State state_);
774
+ };
775
+ struct MessageStreamImpl;
776
+ struct obj
777
+ {
778
+ PyObject_HEAD
779
+ AMPSPY_ATOMIC(MessageStreamImpl*) _pImpl;
780
+ PyObject* _pPythonClient;
781
+ AMPS::Client _client;
782
+
783
+ void internalInit(PyObject*, AMPS::Client*, bool, bool, bool);
784
+
785
+ AMPS::MessageHandler messageHandler();
786
+
787
+ const std::string& commandId(void) const;
788
+ std::string& commandId(void);
789
+ const std::string& queryId(void) const;
790
+ std::string& queryId(void);
791
+ const std::string& subId(void) const;
792
+ std::string& subId(void);
793
+ void setAcksOnly(unsigned);
794
+ };
795
+ AMPSDLL_EXTERN ampspy::ampspy_type_object messagestream_type;
796
+ AMPSDLL void discardImpl(void*);
797
+ void add_types(PyObject*);
798
+ }
799
+ namespace command
800
+ {
801
+ struct obj
802
+ {
803
+ PyObject_HEAD
804
+ AMPS::Command command;
805
+ };
806
+ AMPSDLL_EXTERN ampspy_type_object command_type;
807
+ void add_types(PyObject*);
808
+ }
809
+ namespace memorybookmarkstore
810
+ {
811
+ struct AMPSDLL obj
812
+ {
813
+ PyObject_HEAD;
814
+ AMPS::BookmarkStore* impl;
815
+ PyObject* resizeHandler;
816
+ PyObject* pAdapter;
817
+ };
818
+ AMPSDLL_EXTERN ampspy_type_object memorybookmarkstore_type;
819
+ void add_types(PyObject*);
820
+ }
821
+ namespace memorypublishstore
822
+ {
823
+ struct AMPSDLL obj
824
+ {
825
+ PyObject_HEAD;
826
+ AMPS::Store* impl;
827
+ PyObject* resizeHandler;
828
+ };
829
+ AMPSDLL_EXTERN ampspy_type_object memorypublishstore_type;
830
+ void add_types(PyObject*);
831
+ }
832
+ namespace hybridpublishstore
833
+ {
834
+ struct AMPSDLL obj
835
+ {
836
+ PyObject_HEAD;
837
+ AMPS::Store* impl;
838
+ PyObject* resizeHandler;
839
+ };
840
+ AMPSDLL_EXTERN ampspy_type_object hybridpublishstore_type;
841
+ void add_types(PyObject*);
842
+ }
843
+ namespace publishstore
844
+ {
845
+ struct AMPSDLL obj
846
+ {
847
+ PyObject_HEAD;
848
+ AMPS::PublishStore* impl;
849
+ PyObject* resizeHandler;
850
+ };
851
+ AMPSDLL_EXTERN ampspy_type_object publishstore_type;
852
+ void add_types(PyObject*);
853
+ }
854
+ namespace mmapbookmarkstore
855
+ {
856
+ struct AMPSDLL obj
857
+ {
858
+ PyObject_HEAD;
859
+ AMPS::BookmarkStore* impl;
860
+ PyObject* resizeHandler;
861
+ PyObject* pAdapter;
862
+ };
863
+ AMPSDLL_EXTERN ampspy_type_object mmapbookmarkstore_type;
864
+ void add_types(PyObject*);
865
+ }
866
+ namespace ringbookmarkstore
867
+ {
868
+ struct AMPSDLL obj
869
+ {
870
+ PyObject_HEAD;
871
+ AMPS::BookmarkStore* impl;
872
+ PyObject* resizeHandler;
873
+ };
874
+ AMPSDLL_EXTERN ampspy_type_object ringbookmarkstore_type;
875
+ void add_types(PyObject*);
876
+ }
877
+
878
+
879
+ namespace exponentialdelaystrategy
880
+ {
881
+ struct obj
882
+ {
883
+ PyObject_HEAD;
884
+ AMPS::ReconnectDelayStrategy impl;
885
+ };
886
+ AMPSDLL_EXTERN ampspy_type_object type;
887
+ void add_types(PyObject*);
888
+ }
889
+
890
+ namespace fixeddelaystrategy
891
+ {
892
+ struct obj
893
+ {
894
+ PyObject_HEAD;
895
+ AMPS::ReconnectDelayStrategy impl;
896
+ };
897
+ AMPSDLL_EXTERN ampspy_type_object type;
898
+ void add_types(PyObject*);
899
+ }
900
+
901
+ namespace compositemessagebuilder
902
+ {
903
+ struct AMPSDLL obj
904
+ {
905
+ PyObject_HEAD;
906
+ AMPS::CompositeMessageBuilder* pCompositeMessageBuilder;
907
+ };
908
+ void add_types(PyObject* module_);
909
+ }
910
+
911
+ namespace compositemessageparser
912
+ {
913
+ struct AMPSDLL obj
914
+ {
915
+ PyObject_HEAD;
916
+ AMPS::CompositeMessageParser* pCompositeMessageParser;
917
+ std::string* pLastParsed;
918
+ };
919
+ void add_types(PyObject* module_);
920
+ }
921
+
922
+ namespace versioninfo
923
+ {
924
+ struct AMPSDLL obj
925
+ {
926
+ PyObject_HEAD;
927
+ AMPS::VersionInfo* pVersionInfo;
928
+ };
929
+ AMPSDLL_EXTERN ampspy_type_object versioninfo_type;
930
+ void add_types(PyObject*);
931
+ }
932
+
933
+ namespace recoverypoint
934
+ {
935
+ struct AMPSDLL obj
936
+ {
937
+ PyObject_HEAD;
938
+ char* subId;
939
+ char* bookmark;
940
+ };
941
+ AMPSDLL_EXTERN ampspy::ampspy_type_object type;
942
+ void add_types(PyObject*);
943
+ }
944
+
945
+ namespace sowrecoverypointadapter
946
+ {
947
+ struct obj
948
+ {
949
+ PyObject_HEAD;
950
+ std::shared_ptr<AMPS::SOWRecoveryPointAdapter> pImpl;
951
+ AMPS::RecoveryPointAdapter adapter;
952
+ std::shared_ptr<AMPS::ExceptionListener> exceptionListener;
953
+ };
954
+ AMPSDLL_EXTERN ampspy::ampspy_type_object type;
955
+ void add_types(PyObject*);
956
+ }
957
+
958
+ namespace conflatingrecoverypointadapter
959
+ {
960
+ struct obj
961
+ {
962
+ PyObject_HEAD;
963
+ AMPS::ConflatingRecoveryPointAdapter* pImpl;
964
+ AMPS::RecoveryPointAdapter adapter;
965
+ };
966
+ AMPSDLL_EXTERN ampspy::ampspy_type_object type;
967
+ void add_types(PyObject*);
968
+ }
969
+
970
+ class PyAuthenticator : public AMPS::DefaultAuthenticator
971
+ {
972
+ PyObject* _self;
973
+ public:
974
+
975
+ // No reference to the authenticator is taken; caller is responsible
976
+ // for ensuring authenticator still exists for lifetime of this bridge.
977
+ PyAuthenticator(PyObject* self) : _self(self) {}
978
+ void setPythonAuthenticator(PyObject* new_)
979
+ {
980
+ _self = new_;
981
+ }
982
+ PyObject* getPythonAuthenticator(void)
983
+ {
984
+ return _self;
985
+ }
986
+
987
+ // Allows the authenticator to return a Unicode in Py 3.x,
988
+ // a bytes-like object, a string, None, or any object that
989
+ // has a __str__ method defined.
990
+ std::string extractReturnedPassword(PyObject* pyObject_)
991
+ {
992
+ assert(pyObject_);
993
+ #if PY_MAJOR_VERSION >= 3
994
+ if (PyUnicode_Check(pyObject_))
995
+ {
996
+ const char* data = shims::PyUnicode_AsUTF8(pyObject_);
997
+ exc::throwError();
998
+ if (data)
999
+ {
1000
+ return std::string(data);
1001
+ }
1002
+ }
1003
+ #endif
1004
+ if (PyBytes_Check(pyObject_))
1005
+ {
1006
+ const char* data = PyBytes_AsString(pyObject_);
1007
+ exc::throwError();
1008
+ if (data)
1009
+ {
1010
+ return std::string(data);
1011
+ }
1012
+ }
1013
+ else if (pyObject_ == Py_None)
1014
+ {
1015
+ return "";
1016
+ }
1017
+ else
1018
+ {
1019
+ PyObject* pyStringRep = PyObject_Str(pyObject_);
1020
+ if (pyStringRep)
1021
+ {
1022
+ const char* bytes = NULL;
1023
+ #if PY_MAJOR_VERSION >= 3
1024
+ bytes = shims::PyUnicode_AsUTF8(pyStringRep);
1025
+ #else
1026
+ bytes = PyString_AsString(pyStringRep);
1027
+ #endif
1028
+ std::string retVal(bytes);
1029
+ if (bytes)
1030
+ {
1031
+ retVal = bytes;
1032
+ }
1033
+ Py_DECREF(pyStringRep);
1034
+ exc::throwError();
1035
+ if (!retVal.empty())
1036
+ {
1037
+ return retVal;
1038
+ }
1039
+ }
1040
+ }
1041
+
1042
+ throw AMPS::AMPSException("Unknown return type returned by authenticator.", AMPS_E_OK);
1043
+ }
1044
+
1045
+ virtual std::string authenticate(const std::string& userName_, const std::string& password_)
1046
+ {
1047
+ LOCKGIL;
1048
+ PyObject* p = PyObject_CallMethod((PyObject*)_self, (char*)"authenticate", (char*)"(ss)", userName_.c_str(), password_.c_str());
1049
+ if (p == NULL && PyErr_ExceptionMatches(PyExc_SystemExit))
1050
+ {
1051
+ ampspy::unhandled_exception();
1052
+ }
1053
+ exc::throwError();
1054
+ if (!p)
1055
+ {
1056
+ return password_;
1057
+ }
1058
+
1059
+ std::string returnValue = extractReturnedPassword(p);
1060
+ Py_DECREF(p);
1061
+
1062
+ return returnValue;
1063
+ }
1064
+ ///
1065
+ virtual std::string retry(const std::string& userName_, const std::string& password_)
1066
+ {
1067
+ LOCKGIL;
1068
+ PyObject* p = PyObject_CallMethod((PyObject*)_self, (char*)"retry", (char*)"(ss)", userName_.c_str(), password_.c_str());
1069
+ if (p == NULL && PyErr_ExceptionMatches(PyExc_SystemExit))
1070
+ {
1071
+ ampspy::unhandled_exception();
1072
+ }
1073
+ exc::throwError();
1074
+ if (!p)
1075
+ {
1076
+ return password_;
1077
+ }
1078
+ std::string returnValue = extractReturnedPassword(p);
1079
+ Py_DECREF(p);
1080
+
1081
+ return returnValue;
1082
+ }
1083
+ virtual void completed(const std::string& userName_, const std::string& password_, const std::string& reason_)
1084
+ {
1085
+ LOCKGIL;
1086
+ PyObject* p = PyObject_CallMethod((PyObject*)_self, (char*)"completed", (char*)"(sss)", userName_.c_str(), password_.c_str(), reason_.c_str());
1087
+ if (p == NULL && PyErr_ExceptionMatches(PyExc_SystemExit))
1088
+ {
1089
+ ampspy::unhandled_exception();
1090
+ }
1091
+ exc::throwError();
1092
+ Py_XDECREF(p);
1093
+ }
1094
+ };
1095
+
1096
+ class server_chooser_wrapper : public AMPS::ServerChooserImpl
1097
+ {
1098
+ PyObject* _self;
1099
+ PyAuthenticator _authBridge;
1100
+ public:
1101
+ server_chooser_wrapper(PyObject* self_);
1102
+ ~server_chooser_wrapper();
1103
+ virtual std::string getCurrentURI();
1104
+ virtual AMPS::Authenticator& getCurrentAuthenticator();
1105
+ virtual void reportFailure(const AMPS::AMPSException& exception_,
1106
+ const AMPS::ConnectionInfo& info_);
1107
+ virtual std::string getError();
1108
+ virtual void reportSuccess(const AMPS::ConnectionInfo& info_);
1109
+ virtual void add(const std::string& uri_);
1110
+ virtual void remove(const std::string& uri_);
1111
+ private:
1112
+ static void setPyExceptionState(const AMPS::AMPSException&);
1113
+ };
1114
+
1115
+ class PyFailedWriteHandler : public AMPS::FailedWriteHandler
1116
+ {
1117
+ PyObject* _self;
1118
+ bool _newStyle;
1119
+ ampspy::message::obj* _message;
1120
+ PyFailedWriteHandler(const PyFailedWriteHandler&); // not implemented
1121
+ void operator=(const PyFailedWriteHandler&); // not implemented
1122
+ public:
1123
+ PyFailedWriteHandler(PyObject* self_);
1124
+ ~PyFailedWriteHandler();
1125
+ virtual void failedWrite(const AMPS::Message& message_,
1126
+ const char* reason_, size_t reasonLength_);
1127
+ };
1128
+
1129
+ }
1130
+
1131
+ // Used to add dummy __copy__ and __deepcopy__ methods to a type, so as
1132
+ // to make it not copyable.
1133
+ AMPSDLL PyObject* not_copyable(PyObject* self, PyObject* args);
1134
+ #define NOT_COPYABLE \
1135
+ { "__copy__", (PyCFunction)&::not_copyable, METH_VARARGS, "not supported."}, \
1136
+ { "__deepcopy__", (PyCFunction)&::not_copyable, METH_VARARGS, "not supported."}
1137
+
1138
+ #endif // __AMPSPY_TYPES_HPP
1139
+