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,756 @@
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
+
26
+ #define PY_SSIZE_T_CLEAN 1
27
+ #include <Python.h>
28
+ #include <amps/ampsplusplus.hpp>
29
+ extern "C" {
30
+ #include <amps/amps_impl.h>
31
+ }
32
+ #include <ampspy_types.hpp>
33
+ #include <ampspy_defs.hpp>
34
+ #include <ampspyver.h>
35
+
36
+
37
+ using namespace AMPS;
38
+
39
+ AMPSDLL PyObject* not_copyable(PyObject* self, PyObject* args)
40
+ {
41
+ PyErr_SetString(PyExc_TypeError, "This type cannot be copied.");
42
+ return NULL;
43
+ }
44
+
45
+ namespace ampspy
46
+ {
47
+ namespace exc
48
+ {
49
+ PyObject* AMPSException;
50
+ PyObject* AlreadyConnected;
51
+ PyObject* AlreadyConnectedException;
52
+ PyObject* AuthenticationError;
53
+ PyObject* AuthenticationException;
54
+ PyObject* BadFilter;
55
+ PyObject* BadFilterException;
56
+ PyObject* BadRegexTopic;
57
+ PyObject* BadRegexTopicException;
58
+ PyObject* BadSowKeyException;
59
+ PyObject* ClientNameInUse;
60
+ PyObject* CommandError;
61
+ PyObject* CommandException;
62
+ PyObject* CommandTimedOut;
63
+ PyObject* CommandTypeError;
64
+ PyObject* ConnectionError;
65
+ PyObject* ConnectionException;
66
+ PyObject* ConnectionRefused;
67
+ PyObject* ConnectionRefusedException;
68
+ PyObject* CorruptedRecord;
69
+ PyObject* Disconnected;
70
+ PyObject* DisconnectedException;
71
+ PyObject* DuplicateLogonException;
72
+ PyObject* InvalidBookmarkException;
73
+ PyObject* InvalidMessageTypeOptions;
74
+ PyObject* InvalidOptionsException;
75
+ PyObject* InvalidOrderByException;
76
+ PyObject* InvalidSubIdException;
77
+ PyObject* InvalidTopicError;
78
+ PyObject* InvalidTopicException;
79
+ PyObject* InvalidTransportOptions;
80
+ PyObject* InvalidTransportOptionsException;
81
+ PyObject* InvalidUriException;
82
+ PyObject* InvalidUriFormat;
83
+ PyObject* LocalStorageError;
84
+ PyObject* LogonRequiredException;
85
+ PyObject* MessageTypeError;
86
+ PyObject* MessageTypeException;
87
+ PyObject* MessageTypeNotFound;
88
+ PyObject* MissingFieldsException;
89
+ PyObject* NameInUseException;
90
+ PyObject* NotEntitledError;
91
+ PyObject* NotEntitledException;
92
+ PyObject* PublishException;
93
+ PyObject* PublishStoreGapException;
94
+ PyObject* RetryOperation;
95
+ PyObject* RetryOperationException;
96
+ PyObject* StoreError;
97
+ PyObject* StoreException;
98
+ PyObject* StreamError;
99
+ PyObject* StreamException;
100
+ PyObject* SubscriptionAlreadyExists;
101
+ PyObject* SubscriptionAlreadyExistsException;
102
+ PyObject* SubidInUseException;
103
+ PyObject* TimedOut;
104
+ PyObject* TimedOutException;
105
+ PyObject* TransportError;
106
+ PyObject* TransportException;
107
+ PyObject* TransportNotFound;
108
+ PyObject* TransportTypeException;
109
+ PyObject* UnknownError;
110
+ PyObject* UnknownException;
111
+
112
+ static const char* AMPSException_doc = \
113
+ "The base exception class for all exceptions in the AMPS Python Client.";
114
+ static const char* AlreadyConnectedException_doc = \
115
+ "The `AlreadyConnectedExcpetion` is raised when a client attempts"
116
+ "multiple connections to an AMPS instance after being successfully"
117
+ "connected.";
118
+ static const char* AlreadyConnected_doc = "deprecated - use :class:`AlreadyConnectedException`";
119
+ static const char* AuthenticationError_doc = "deprecated - use :class:`AuthenticationException`";
120
+ static const char* AuthenticationException_doc = \
121
+ "The `AuthenticationException` is raised when the credentials provided "
122
+ "to the client fail in AMPS authentication.";
123
+
124
+ static const char* BadFilterException_doc = \
125
+ "The `BadFilterException` is raised when a query contains invalid "
126
+ "content or is not used against a valid topic or field.";
127
+ static const char* BadFilter_doc = "deprecated - use :class:`BadFilterException`";
128
+ static const char* BadRegexTopicException_doc = \
129
+ "The `BadRegexTopicException` is raised when a topic query containing a "
130
+ "regular expression is unable to be compiled by the AMPS regular expression "
131
+ "compiler.";
132
+ static const char* BadRegexTopic_doc = "deprecated - use :class:`BadRegexTopicException`";
133
+ static const char* BadSowKeyException_doc = \
134
+ "The `BadSowKeyException` is raised when command uses an invalid sow key";
135
+
136
+ static const char* ClientNameInUse_doc = "deprecated - use :class:`NameInUseException`";
137
+ static const char* CommandError_doc = "deprecated - use :class:`CommandException`";
138
+ static const char* CommandException_doc = \
139
+ "The `CommandException` is raised when a Command is used in an improper "
140
+ "or unrecognized manner.";
141
+ static const char* CommandTimedOut_doc = "deprecated - legacy exception";
142
+ static const char* CommandTypeError_doc = "deprecated - use :class:`CommandException`";
143
+ static const char* ConnectionError_doc = "deprecated - use :class:`ConnectionException`";
144
+ static const char* ConnectionException_doc = \
145
+ "The `ConnectionException` is raised when the client is unable to connect to AMPS.";
146
+ static const char* ConnectionRefusedException_doc =
147
+ "The `ConnectionRefusedException` is raised when the connection to AMPS "
148
+ "is refused due to a socket error.";
149
+ static const char* ConnectionRefused_doc = "deprecated - use :class:`ConnectionRefusedException`";
150
+ static const char* CorruptedRecord_doc = "deprecated - legacy exception";
151
+
152
+ static const char* DisconnectedException_doc = \
153
+ "The `DisconnectedException` is raised when an operation is requested by "
154
+ "the client, but either a connection has yet to be established or the client "
155
+ "was disconnected.";
156
+ static const char* Disconnected_doc = "deprecated - use :class:`DisconnectedException`";
157
+ static const char* DuplicateLogonException_doc = \
158
+ "The `DuplicateLogonException` is raised when a client is trying to logon "
159
+ "after already logging on.";
160
+ static const char* InvalidBookmarkException_doc = \
161
+ "The `InvalidBookmarkException` is raised when a client uses an invalid bookmark.";
162
+ static const char* InvalidMessageTypeOptions_doc = "deprecated - use :class:`MessageTypeException`";
163
+ static const char* InvalidOptionsException_doc = \
164
+ "The `InvalidOptionsException` is raised when a client uses an invalid options.";
165
+ static const char* InvalidOrderByException_doc = \
166
+ "The `InvalidOrderByException` is raised when a client uses an invalid orderby clause.";
167
+ static const char* InvalidSubIdException_doc = \
168
+ "The `InvalidSubIdException` is raised when a client uses an invalid subid.";
169
+ static const char* InvalidTopicError_doc = "deprecated - use :class:`InvalidTopicException`";
170
+ static const char* InvalidTopicException_doc = \
171
+ "The `InvalidTopicException` is raised when a query is performed against "
172
+ "a topic that does not exist.";
173
+
174
+ static const char* InvalidTransportOptionsException_doc = \
175
+ "`InvalidTransportOptionsException` is raised when a :class:`URI` "
176
+ "string contains invalid options for a given transport.";
177
+ static const char* InvalidTransportOptions_doc = "deprecated - use :class:`InvalidTransportOptionsException`";
178
+ static const char* InvalidUriException_doc = \
179
+ "`InvalidUriException` is raised when the format of the :class:`URI`"
180
+ " is invalid.";
181
+ static const char* InvalidUriFormat_doc = "deprecated - use :class:`InvalidUriException`";
182
+
183
+ static const char* LocalStorageError_doc = "deprecated - legacy exception";
184
+ static const char* LogonRequiredException_doc = \
185
+ "The `LogonRequiredException` is raised when a client attempts to execute a "
186
+ "command before calling logon.";
187
+
188
+ static const char* MessageTypeError_doc = "deprecated - use :class:`MessageTypeException`";
189
+ static const char* MessageTypeException_doc = \
190
+ "`MessageTypeException` is raised when the message type requested by the "
191
+ "client is unsupported.";
192
+ static const char* MessageTypeNotFound_doc = "deprecated - use :class:`MessageTypeException`";
193
+ static const char* MissingFieldsException_doc = \
194
+ "The `MissingFieldsException` is raised when a client attempts to execute a "
195
+ "command and required fields are missing.";
196
+
197
+ static const char* NameInUseException_doc = \
198
+ "`NameInUseException` is raised when a client attempts to connect and "
199
+ "uses the same client name as a currently connected client.";
200
+ static const char* NotEntitledError_doc = "deprecated - use :class:`NotEntitledException`";
201
+ static const char* NotEntitledException_doc = \
202
+ "`NotEntitledException` is raised when an authenticated client attempts "
203
+ "to access a resource to which the user has not been granted proper "
204
+ "entitlements.";
205
+ static const char* PublishException_doc = \
206
+ "The `PublishException` is raised when a client attempts to publish an "
207
+ "invalid message or some other error occurs with the message.";
208
+ static const char* PublishStoreGapException_doc = "An exception was thrown by the underlying publish store because the client "
209
+ "is attempting to logon to a server that appears to be missing messages from this "
210
+ "client that are no longer in the publish store.";
211
+
212
+ static const char* RetryOperationException_doc = \
213
+ "`RetryOperationException` is raised when sending of a message has "
214
+ "failed two consecutive attempts. Any send which receives this can assume "
215
+ "that the message was not delivered to AMPS.";
216
+ static const char* RetryOperation_doc = "deprecated - use :class:`RetryOperationException`";
217
+
218
+ static const char* StoreError_doc = "";
219
+ static const char* StoreException_doc = "An exception was thrown by the underlying publish store.";
220
+ static const char* StreamError_doc = "deprecated - use :class:`StreamException`";
221
+ static const char* StreamException_doc = \
222
+ "`StreamException` is raised when an incoming message is improperly formatted.";
223
+ static const char* SubscriptionAlreadyExistsException_doc = \
224
+ "The `SubscriptionAlreadyExistsException` is raised when a subscription "
225
+ "is place which matches a subscription that already exists.";
226
+ static const char* SubscriptionAlreadyExists_doc = "deprecated - use :class:`SubscriptionAlreadyExistsException`";
227
+ static const char* SubidInUseException_doc = \
228
+ "The `SubidInUseException` is raised when a subscription "
229
+ "is place with the same subscription id.";
230
+ static const char* TimedOutException_doc = \
231
+ "The `TimedOutException` is raised when an operation times out.";
232
+ static const char* TimedOut_doc = "deprecated - use :class:`TimedOutException`";
233
+ static const char* TransportError_doc = "deprecated - use :class:`TransportException`";
234
+ static const char* TransportException_doc = \
235
+ "`TransportException` is raised when an AMPS Client transport has an error.";
236
+ static const char* TransportNotFound_doc = "deprecated - use :class:`TransportException`";
237
+ static const char* TransportTypeException_doc = \
238
+ "`TransportTypeException` is raised when an unknown or invalid transport is attempted.";
239
+
240
+ static const char* UnknownError_doc = "deprecated - use :class:`UnknownException`";
241
+ static const char* UnknownException_doc = \
242
+ "The `UnknownException` is raised when the AMPS Python Client is in an "
243
+ "unrecoverable state.";
244
+
245
+
246
+ #if PY_VERSION_HEX < 0x02070000
247
+ /* lifted directly from Python 2.7.5 ... create an exception with docstring */
248
+ PyObject*
249
+ PyErr_NewExceptionWithDoc(char* name, char* doc, PyObject* base, PyObject* dict)
250
+ {
251
+ int result;
252
+ PyObject* ret = NULL;
253
+ PyObject* mydict = NULL; /* points to the dict only if we create it */
254
+ PyObject* docobj;
255
+
256
+ if (dict == NULL)
257
+ {
258
+ dict = mydict = PyDict_New();
259
+ if (dict == NULL)
260
+ {
261
+ return NULL;
262
+ }
263
+ }
264
+
265
+ if (doc != NULL)
266
+ {
267
+ docobj = PyString_FromString(doc);
268
+ if (docobj == NULL)
269
+ {
270
+ goto failure;
271
+ }
272
+ result = PyDict_SetItemString(dict, "__doc__", docobj);
273
+ Py_DECREF(docobj);
274
+ if (result < 0)
275
+ {
276
+ goto failure;
277
+ }
278
+ }
279
+
280
+ ret = PyErr_NewException(name, base, dict);
281
+ failure:
282
+ Py_XDECREF(mydict);
283
+ return ret;
284
+ }
285
+ #endif
286
+
287
+ #define STRINGIFY(x) #x
288
+
289
+ #define STRINGIFYX(x) STRINGIFY(x)
290
+
291
+ void init(PyObject* module)
292
+ {
293
+ const char* version = AMPS_PYTHON_VERSION;
294
+ PyModule_AddStringConstant(module, "VERSION", version);
295
+ AMPSException = PyErr_NewExceptionWithDoc((char*)"AMPS.AMPSException", (char*)AMPSException_doc, NULL, NULL);
296
+ PyModule_AddObject(module, (char*)"AMPSException", AMPSException);
297
+ StoreError = PyErr_NewExceptionWithDoc((char*)"AMPS.StoreError", (char*)StoreError_doc, AMPSException, NULL);
298
+ PyModule_AddObject(module, (char*)"StoreError", StoreError);
299
+ StoreException = PyErr_NewExceptionWithDoc((char*)"AMPS.StoreException", (char*)StoreException_doc, StoreError, NULL);
300
+ PyModule_AddObject(module, (char*)"StoreException", StoreException);
301
+ PublishStoreGapException = PyErr_NewExceptionWithDoc((char*)"AMPS.PublishStoreGapException", (char*)PublishStoreGapException_doc, StoreException, NULL);
302
+ PyModule_AddObject(module, (char*)"PublishStoreGapException", PublishStoreGapException);
303
+ LocalStorageError = PyErr_NewExceptionWithDoc((char*)"AMPS.LocalStorageError", (char*)LocalStorageError_doc, AMPSException, NULL);
304
+ PyModule_AddObject(module, (char*)"LocalStorageError", LocalStorageError);
305
+ CorruptedRecord = PyErr_NewExceptionWithDoc((char*)"AMPS.CorruptedRecord", (char*)CorruptedRecord_doc, LocalStorageError, NULL);
306
+ PyModule_AddObject(module, (char*)"CorruptedRecord", CorruptedRecord);
307
+ ConnectionError = PyErr_NewExceptionWithDoc((char*)"AMPS.ConnectionError", (char*)ConnectionError_doc, AMPSException, NULL);
308
+ PyModule_AddObject(module, (char*)"ConnectionError", ConnectionError);
309
+ ConnectionException = PyErr_NewExceptionWithDoc((char*)"AMPS.ConnectionException", (char*)ConnectionException_doc, ConnectionError, NULL);
310
+ PyModule_AddObject(module, (char*)"ConnectionException", ConnectionException);
311
+ TransportTypeException = PyErr_NewExceptionWithDoc((char*)"AMPS.TransportTypeException", (char*)TransportTypeException_doc, ConnectionException, NULL);
312
+ PyModule_AddObject(module, (char*)"TransportTypeException", TransportTypeException);
313
+ TransportError = PyErr_NewExceptionWithDoc((char*)"AMPS.TransportError", (char*)TransportError_doc, ConnectionException, NULL);
314
+ PyModule_AddObject(module, (char*)"TransportError", TransportError);
315
+ TransportException = PyErr_NewExceptionWithDoc((char*)"AMPS.TransportException", (char*)TransportException_doc, TransportError, NULL);
316
+ PyModule_AddObject(module, (char*)"TransportException", TransportException);
317
+ InvalidTransportOptions = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidTransportOptions", (char*)InvalidTransportOptions_doc, TransportException, NULL);
318
+ PyModule_AddObject(module, (char*)"InvalidTransportOptions", InvalidTransportOptions);
319
+ InvalidTransportOptionsException = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidTransportOptionsException", (char*)InvalidTransportOptionsException_doc, InvalidTransportOptions, NULL);
320
+ PyModule_AddObject(module, (char*)"InvalidTransportOptionsException", InvalidTransportOptionsException);
321
+ TransportNotFound = PyErr_NewExceptionWithDoc((char*)"AMPS.TransportNotFound", (char*)TransportNotFound_doc, TransportException, NULL);
322
+ PyModule_AddObject(module, (char*)"TransportNotFound", TransportNotFound);
323
+ TimedOut = PyErr_NewExceptionWithDoc((char*)"AMPS.TimedOut", (char*)TimedOut_doc, ConnectionException, NULL);
324
+ PyModule_AddObject(module, (char*)"TimedOut", TimedOut);
325
+ TimedOutException = PyErr_NewExceptionWithDoc((char*)"AMPS.TimedOutException", (char*)TimedOutException_doc, TimedOut, NULL);
326
+ PyModule_AddObject(module, (char*)"TimedOutException", TimedOutException);
327
+ StreamError = PyErr_NewExceptionWithDoc((char*)"AMPS.StreamError", (char*)StreamError_doc, ConnectionException, NULL);
328
+ PyModule_AddObject(module, (char*)"StreamError", StreamError);
329
+ StreamException = PyErr_NewExceptionWithDoc((char*)"AMPS.StreamException", (char*)StreamException_doc, StreamError, NULL);
330
+ PyModule_AddObject(module, (char*)"StreamException", StreamException);
331
+ RetryOperation = PyErr_NewExceptionWithDoc((char*)"AMPS.RetryOperation", (char*)RetryOperation_doc, ConnectionException, NULL);
332
+ PyModule_AddObject(module, (char*)"RetryOperation", RetryOperation);
333
+ RetryOperationException = PyErr_NewExceptionWithDoc((char*)"AMPS.RetryOperationException", (char*)RetryOperationException_doc, RetryOperation, NULL);
334
+ PyModule_AddObject(module, (char*)"RetryOperationException", RetryOperationException);
335
+ NotEntitledError = PyErr_NewExceptionWithDoc((char*)"AMPS.NotEntitledError", (char*)NotEntitledError_doc, ConnectionException, NULL);
336
+ PyModule_AddObject(module, (char*)"NotEntitledError", NotEntitledError);
337
+ NotEntitledException = PyErr_NewExceptionWithDoc((char*)"AMPS.NotEntitledException", (char*)NotEntitledException_doc, NotEntitledError, NULL);
338
+ PyModule_AddObject(module, (char*)"NotEntitledException", NotEntitledException);
339
+ MessageTypeError = PyErr_NewExceptionWithDoc((char*)"AMPS.MessageTypeError", (char*)MessageTypeError_doc, ConnectionException, NULL);
340
+ PyModule_AddObject(module, (char*)"MessageTypeError", MessageTypeError);
341
+ MessageTypeException = PyErr_NewExceptionWithDoc((char*)"AMPS.MessageTypeException", (char*)MessageTypeException_doc, MessageTypeError, NULL);
342
+ PyModule_AddObject(module, (char*)"MessageTypeException", MessageTypeException);
343
+ InvalidMessageTypeOptions = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidMessageTypeOptions", (char*)InvalidMessageTypeOptions_doc, MessageTypeException, NULL);
344
+ PyModule_AddObject(module, (char*)"InvalidMessageTypeOptions", InvalidMessageTypeOptions);
345
+ MessageTypeNotFound = PyErr_NewExceptionWithDoc((char*)"AMPS.MessageTypeNotFound", (char*)MessageTypeNotFound_doc, MessageTypeException, NULL);
346
+ PyModule_AddObject(module, (char*)"MessageTypeNotFound", MessageTypeNotFound);
347
+ InvalidUriFormat = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidUriFormat", (char*)InvalidUriFormat_doc, ConnectionException, NULL);
348
+ PyModule_AddObject(module, (char*)"InvalidUriFormat", InvalidUriFormat);
349
+ InvalidUriException = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidUriException", (char*)InvalidUriException_doc, InvalidUriFormat, NULL);
350
+ PyModule_AddObject(module, (char*)"InvalidUriException", InvalidUriException);
351
+ Disconnected = PyErr_NewExceptionWithDoc((char*)"AMPS.Disconnected", (char*)Disconnected_doc, ConnectionException, NULL);
352
+ PyModule_AddObject(module, (char*)"Disconnected", Disconnected);
353
+ DisconnectedException = PyErr_NewExceptionWithDoc((char*)"AMPS.DisconnectedException", (char*)DisconnectedException_doc, Disconnected, NULL);
354
+ PyModule_AddObject(module, (char*)"DisconnectedException", DisconnectedException);
355
+ ClientNameInUse = PyErr_NewExceptionWithDoc((char*)"AMPS.ClientNameInUse", (char*)ClientNameInUse_doc, ConnectionException, NULL);
356
+ PyModule_AddObject(module, (char*)"ClientNameInUse", ClientNameInUse);
357
+ NameInUseException = PyErr_NewExceptionWithDoc((char*)"AMPS.NameInUseException", (char*)NameInUseException_doc, ClientNameInUse, NULL);
358
+ PyModule_AddObject(module, (char*)"NameInUseException", NameInUseException);
359
+ ConnectionRefused = PyErr_NewExceptionWithDoc((char*)"AMPS.ConnectionRefused", (char*)ConnectionRefused_doc, ConnectionException, NULL);
360
+ PyModule_AddObject(module, (char*)"ConnectionRefused", ConnectionRefused);
361
+ ConnectionRefusedException = PyErr_NewExceptionWithDoc((char*)"AMPS.ConnectionRefusedException", (char*)ConnectionRefusedException_doc, ConnectionRefused, NULL);
362
+ PyModule_AddObject(module, (char*)"ConnectionRefusedException", ConnectionRefusedException);
363
+ AuthenticationError = PyErr_NewExceptionWithDoc((char*)"AMPS.AuthenticationError", (char*)AuthenticationError_doc, ConnectionException, NULL);
364
+ PyModule_AddObject(module, (char*)"AuthenticationError", AuthenticationError);
365
+ AuthenticationException = PyErr_NewExceptionWithDoc((char*)"AMPS.AuthenticationException", (char*)AuthenticationException_doc, AuthenticationError, NULL);
366
+ PyModule_AddObject(module, (char*)"AuthenticationException", AuthenticationException);
367
+ AlreadyConnected = PyErr_NewExceptionWithDoc((char*)"AMPS.AlreadyConnected", (char*)AlreadyConnected_doc, ConnectionException, NULL);
368
+ PyModule_AddObject(module, (char*)"AlreadyConnected", AlreadyConnected);
369
+ AlreadyConnectedException = PyErr_NewExceptionWithDoc((char*)"AMPS.AlreadyConnectedException", (char*)AlreadyConnectedException_doc, AlreadyConnected, NULL);
370
+ PyModule_AddObject(module, (char*)"AlreadyConnectedException", AlreadyConnectedException);
371
+ CommandError = PyErr_NewExceptionWithDoc((char*)"AMPS.CommandError", (char*)CommandError_doc, AMPSException, NULL);
372
+ PyModule_AddObject(module, (char*)"CommandError", CommandError);
373
+ CommandException = PyErr_NewExceptionWithDoc((char*)"AMPS.CommandException", (char*)CommandException_doc, CommandError, NULL);
374
+ PyModule_AddObject(module, (char*)"CommandException", CommandException);
375
+ UnknownError = PyErr_NewExceptionWithDoc((char*)"AMPS.UnknownError", (char*)UnknownError_doc, CommandException, NULL);
376
+ PyModule_AddObject(module, (char*)"UnknownError", UnknownError);
377
+ UnknownException = PyErr_NewExceptionWithDoc((char*)"AMPS.UnknownException", (char*)UnknownException_doc, UnknownError, NULL);
378
+ PyModule_AddObject(module, (char*)"UnknownException", UnknownException);
379
+ SubscriptionAlreadyExists = PyErr_NewExceptionWithDoc((char*)"AMPS.SubscriptionAlreadyExists", (char*)SubscriptionAlreadyExists_doc, CommandException, NULL);
380
+ PyModule_AddObject(module, (char*)"SubscriptionAlreadyExists", SubscriptionAlreadyExists);
381
+ SubscriptionAlreadyExistsException = PyErr_NewExceptionWithDoc((char*)"AMPS.SubscriptionAlreadyExistsException", (char*)SubscriptionAlreadyExistsException_doc, SubscriptionAlreadyExists, NULL);
382
+ PyModule_AddObject(module, (char*)"SubscriptionAlreadyExistsException", SubscriptionAlreadyExistsException);
383
+ CommandTypeError = PyErr_NewExceptionWithDoc((char*)"AMPS.CommandTypeError", (char*)CommandTypeError_doc, CommandException, NULL);
384
+ PyModule_AddObject(module, (char*)"CommandTypeError", CommandTypeError);
385
+ CommandTimedOut = PyErr_NewExceptionWithDoc((char*)"AMPS.CommandTimedOut", (char*)CommandTimedOut_doc, CommandException, NULL);
386
+ PyModule_AddObject(module, (char*)"CommandTimedOut", CommandTimedOut);
387
+ InvalidTopicError = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidTopicError", (char*)InvalidTopicError_doc, CommandException, NULL);
388
+ PyModule_AddObject(module, (char*)"InvalidTopicError", InvalidTopicError);
389
+ InvalidTopicException = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidTopicException", (char*)InvalidTopicException_doc, InvalidTopicError, NULL);
390
+ PyModule_AddObject(module, (char*)"InvalidTopicException", InvalidTopicException);
391
+ BadRegexTopic = PyErr_NewExceptionWithDoc((char*)"AMPS.BadRegexTopic", (char*)BadRegexTopic_doc, CommandException, NULL);
392
+ PyModule_AddObject(module, (char*)"BadRegexTopic", BadRegexTopic);
393
+ BadRegexTopicException = PyErr_NewExceptionWithDoc((char*)"AMPS.BadRegexTopicException", (char*)BadRegexTopicException_doc, BadRegexTopic, NULL);
394
+ PyModule_AddObject(module, (char*)"BadRegexTopicException", BadRegexTopicException);
395
+ BadFilter = PyErr_NewExceptionWithDoc((char*)"AMPS.BadFilter", (char*)BadFilter_doc, CommandException, NULL);
396
+ PyModule_AddObject(module, (char*)"BadFilter", BadFilter);
397
+ BadFilterException = PyErr_NewExceptionWithDoc((char*)"AMPS.BadFilterException", (char*)BadFilterException_doc, BadFilter, NULL);
398
+ PyModule_AddObject(module, (char*)"BadFilterException", BadFilterException);
399
+ SubidInUseException = PyErr_NewExceptionWithDoc((char*)"AMPS.SubidInUseException", (char*)SubidInUseException_doc, CommandException, NULL);
400
+ PyModule_AddObject(module, (char*)"SubidInUseException", SubidInUseException);
401
+ BadSowKeyException = PyErr_NewExceptionWithDoc((char*)"AMPS.BadSowKeyException", (char*)BadSowKeyException_doc, CommandException, NULL);
402
+ PyModule_AddObject(module, (char*)"BadSowKeyException", BadSowKeyException);
403
+ DuplicateLogonException = PyErr_NewExceptionWithDoc((char*)"AMPS.DuplicateLogonException", (char*)DuplicateLogonException_doc, CommandException, NULL);
404
+ PyModule_AddObject(module, (char*)"DuplicateLogonException", DuplicateLogonException);
405
+ InvalidBookmarkException = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidBookmarkException", (char*)InvalidBookmarkException_doc, CommandException, NULL);
406
+ PyModule_AddObject(module, (char*)"InvalidBookmarkException", InvalidBookmarkException);
407
+ InvalidOptionsException = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidOptionsException", (char*)InvalidOptionsException_doc, CommandException, NULL);
408
+ PyModule_AddObject(module, (char*)"InvalidOptionsException", InvalidOptionsException);
409
+ InvalidOrderByException = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidOrderByException", (char*)InvalidOrderByException_doc, CommandException, NULL);
410
+ PyModule_AddObject(module, (char*)"InvalidOrderByException", InvalidOrderByException);
411
+ InvalidSubIdException = PyErr_NewExceptionWithDoc((char*)"AMPS.InvalidSubIdException", (char*)InvalidSubIdException_doc, CommandException, NULL);
412
+ PyModule_AddObject(module, (char*)"InvalidSubIdException", InvalidSubIdException);
413
+ LogonRequiredException = PyErr_NewExceptionWithDoc((char*)"AMPS.LogonRequiredException", (char*)LogonRequiredException_doc, CommandException, NULL);
414
+ PyModule_AddObject(module, (char*)"LogonRequiredException", LogonRequiredException);
415
+ MissingFieldsException = PyErr_NewExceptionWithDoc((char*)"AMPS.MissingFieldsException", (char*)MissingFieldsException_doc, CommandException, NULL);
416
+ PyModule_AddObject(module, (char*)"MissingFieldsException", MissingFieldsException);
417
+ PublishException = PyErr_NewExceptionWithDoc((char*)"AMPS.PublishException", (char*)PublishException_doc, CommandException, NULL);
418
+ PyModule_AddObject(module, (char*)"PublishException", PublishException);
419
+
420
+ }
421
+
422
+ std::string getExceptionStr(bool includeExceptionName = false)
423
+ {
424
+ std::string retval;
425
+ PyObject* ptype, *pvalue, *ptraceback;
426
+ PyErr_Fetch(&ptype, &pvalue, &ptraceback);
427
+ Py_XDECREF(ptype);
428
+ Py_XDECREF(ptraceback);
429
+
430
+ if (includeExceptionName && ptype)
431
+ {
432
+ PyObject* exTypeStr = PyObject_Str(ptype);
433
+ retval.append("Unexpected Python error occurred of type ");
434
+ retval.append(shims::type_name((PyTypeObject*)ptype));
435
+ retval.append(": ");
436
+ Py_XDECREF(exTypeStr);
437
+ }
438
+ PyObject* strVal = PyObject_Str(pvalue);
439
+ retval.append(PyString_AsString(strVal));
440
+ Py_XDECREF(strVal);
441
+ Py_XDECREF(pvalue);
442
+ return retval;
443
+ }
444
+ AMPSDLL void throwError()
445
+ {
446
+ PyErr_CheckSignals();
447
+ if (PyErr_Occurred())
448
+ {
449
+ throw PyException();
450
+ }
451
+ }
452
+
453
+ } // namespace ampspy::exc
454
+ AMPSDLL void unhandled_exception()
455
+ {
456
+ // not looking to print anything, but when the exception type
457
+ // is SystemException, "printing" it in this fashion will trigger
458
+ // the interpreter shutdown we're looking for.
459
+ PyErr_PrintEx(0);
460
+ }
461
+ bool _is_signaled = false;
462
+
463
+ bool _ssl_is_initialized = false;
464
+
465
+ AMPSDLL PyObject* ssl_init_internal(const char* dll_name)
466
+ {
467
+ if (_ssl_is_initialized)
468
+ {
469
+ Py_INCREF(Py_None);
470
+ return Py_None;
471
+ }
472
+
473
+ int rc = amps_ssl_init(dll_name);
474
+ #ifndef _WIN32
475
+ if (rc && !dll_name)
476
+ {
477
+ // Try to load the Python ssl module, and see if we can use it.
478
+ PyObject* ssl_module = PyImport_ImportModule("ssl");
479
+ if (!ssl_module)
480
+ {
481
+ PyErr_SetString(ampspy::exc::ConnectionException,
482
+ "No SSL module found or specified.");
483
+ return NULL;
484
+ }
485
+
486
+ // Does it have a "_ssl" attribute?
487
+ PyObject* ssl_internal_module = PyObject_GetAttrString(ssl_module,
488
+ "_ssl");
489
+ Py_DECREF(ssl_module);
490
+ if (!ssl_internal_module)
491
+ {
492
+ PyErr_SetString(ampspy::exc::ConnectionException,
493
+ "No SSL module found or specified.");
494
+ return NULL;
495
+ }
496
+
497
+ // It does, let's get its file name
498
+ PyObject* ssl_internal_filename =
499
+ PyObject_GetAttrString(ssl_internal_module, "__file__");
500
+ Py_DECREF(ssl_internal_module);
501
+ if (!(ssl_internal_filename && PyString_Check(ssl_internal_filename)))
502
+ {
503
+ Py_XDECREF(ssl_internal_filename);
504
+ PyErr_SetString(ampspy::exc::ConnectionException,
505
+ "No SSL module found or specified.");
506
+ return NULL;
507
+ }
508
+ dll_name = PyString_AsString(ssl_internal_filename);
509
+ Py_DECREF(ssl_internal_filename);
510
+ rc = amps_ssl_init(dll_name);
511
+ }
512
+ #endif
513
+ if (rc)
514
+ {
515
+ PyErr_SetString(ampspy::exc::ConnectionException,
516
+ amps_ssl_get_error());
517
+ return NULL;
518
+ }
519
+ _ssl_is_initialized = true;
520
+
521
+ Py_INCREF(Py_None);
522
+ return Py_None;
523
+ }
524
+ PyObject* ssl_init(PyObject* self, PyObject* args)
525
+ {
526
+ const char* dll_name = NULL;
527
+
528
+ if (!PyArg_ParseTuple(args, "|s", &dll_name))
529
+ {
530
+ return NULL;
531
+ }
532
+
533
+ return ssl_init_internal(dll_name);
534
+ }
535
+
536
+ PyObject* ssl_set_verify(PyObject* self, PyObject* args)
537
+ {
538
+ int mode = 0;
539
+ if (!PyArg_ParseTuple(args, "i", &mode))
540
+ {
541
+ return NULL;
542
+ }
543
+
544
+ if (0 == amps_ssl_set_verify(mode ? 1 : 0))
545
+ {
546
+ Py_INCREF(Py_None);
547
+ return Py_None;
548
+ }
549
+
550
+ PyErr_SetString(ampspy::exc::ConnectionException,
551
+ amps_ssl_get_error());
552
+ return NULL;
553
+ }
554
+
555
+ PyObject* ssl_load_verify_locations(PyObject* self, PyObject* args)
556
+ {
557
+ const char* ca_file = 0L, *ca_path = 0L;
558
+ if (!PyArg_ParseTuple(args, "zz", &ca_file, &ca_path))
559
+ {
560
+ return NULL;
561
+ }
562
+
563
+ if (0 == amps_ssl_load_verify_locations(ca_file, ca_path))
564
+ {
565
+ Py_INCREF(Py_None);
566
+ return Py_None;
567
+ }
568
+
569
+ PyErr_SetString(ampspy::exc::ConnectionException,
570
+ amps_ssl_get_error());
571
+ return NULL;
572
+ }
573
+ }// namespace ampspy
574
+
575
+ #ifndef AMPS_MODULE_NAME
576
+ #define AMPS_MODULE_NAME AMPS
577
+ #endif
578
+
579
+ #if PY_MAJOR_VERSION < 3
580
+ #define CONSTRUCT_INIT_FUNC_NAME(MOD) init ## MOD
581
+ #else
582
+ #define CONSTRUCT_INIT_FUNC_NAME(MOD) PyInit_ ## MOD
583
+ #endif
584
+
585
+ #define INIT_FUNC_NAME(MOD) CONSTRUCT_INIT_FUNC_NAME(MOD)
586
+
587
+ // while we're waiting for a lock, check to see if there are any signals outstanding.
588
+ // If so, remember that so we can fail operations on non-main threads.
589
+ void waiting_function(void)
590
+ {
591
+ #ifndef _WIN32
592
+ int cancelState = 0;
593
+ int unusedCancelState = 0;
594
+ pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cancelState);
595
+ #endif
596
+ try
597
+ {
598
+ LOCKGIL;
599
+ if (PyErr_CheckSignals() == -1)
600
+ {
601
+ ampspy::_is_signaled = true;
602
+ }
603
+ }
604
+ catch (...)
605
+ {
606
+ ; // C Function; do not throw from here.
607
+ }
608
+ #ifndef _WIN32
609
+ pthread_setcancelstate(cancelState, &unusedCancelState);
610
+ #endif
611
+ }
612
+
613
+ void remove_route_function(void* vpData_)
614
+ {
615
+ try
616
+ {
617
+ ampspy::client::remove_route(vpData_);
618
+ }
619
+ catch (...)
620
+ {
621
+ ; // C Function; do not throw from here.
622
+ }
623
+ }
624
+
625
+ void* copy_route_function(void* vpData_)
626
+ {
627
+ try
628
+ {
629
+ return ampspy::client::copy_route(vpData_);
630
+ }
631
+ catch (...)
632
+ {
633
+ return NULL; // C Function; do not throw from here.
634
+ }
635
+ }
636
+
637
+ static PyMethodDef AMPSMethods[] =
638
+ {
639
+ {ampspy::shims::g_shimExitFuncName, (PyCFunction)ampspy::shims::_shimExitFunc, METH_NOARGS, ""},
640
+ {
641
+ "ssl_init",
642
+ (PyCFunction)ampspy::ssl_init, METH_VARARGS,
643
+ "Initializes SSL support in the AMPS module.\n\n"
644
+ ":param dllpath: The path to the OpenSSL DLL or shared library to use for\n"
645
+ " SSL functionality."
646
+ },
647
+ {
648
+ "ssl_set_verify",
649
+ (PyCFunction)ampspy::ssl_set_verify, METH_VARARGS,
650
+ "Enables or disables peer certificate validation for SSL connections.\n\n"
651
+ ":param enabled: True to enable, False to disable. Default: False (disabled)."
652
+ },
653
+ {
654
+ "ssl_load_verify_locations",
655
+ (PyCFunction)ampspy::ssl_load_verify_locations, METH_VARARGS,
656
+ "Override default CA certificate locations for AMPS SSL connections.\n\n"
657
+ ":param ca_file: Path to a PEM file containing CA certificates.\n"
658
+ ":param ca_path: Path to a directory containing multiple CA certificates as PEM files.\n\n"
659
+ " See OpenSSL's SSL_CTX_load_verify_locations for more information."
660
+ },
661
+ {NULL, NULL, 0, NULL}
662
+ };
663
+
664
+
665
+ #if PY_MAJOR_VERSION >= 3
666
+ static struct PyModuleDef ampspy_moduledef =
667
+ {
668
+ PyModuleDef_HEAD_INIT,
669
+ STRINGIFYX(AMPS_MODULE_NAME),
670
+ NULL,
671
+ 0,
672
+ AMPSMethods,
673
+ NULL,
674
+ NULL,
675
+ NULL,
676
+ NULL
677
+ };
678
+ #endif
679
+
680
+ PyMODINIT_FUNC
681
+ INIT_FUNC_NAME(AMPS_MODULE_NAME)()
682
+ {
683
+ PyObject* module;
684
+
685
+ #if PY_MAJOR_VERSION >= 3
686
+ module = PyModule_Create(&ampspy_moduledef);
687
+ if (module == NULL)
688
+ {
689
+ return module;
690
+ }
691
+ #else
692
+ PyEval_InitThreads();
693
+ module = Py_InitModule(STRINGIFYX(AMPS_MODULE_NAME), AMPSMethods);
694
+ if (module == NULL)
695
+ {
696
+ return;
697
+ }
698
+ #endif
699
+
700
+ if (!ampspy::shims::init(module))
701
+ {
702
+ // Python error state set wit detailed information; just return none.
703
+ Py_XDECREF(module);
704
+ #if PY_MAJOR_VERSION < 3
705
+ return;
706
+ #else
707
+ return NULL;
708
+ #endif
709
+ }
710
+
711
+ // this is an obscure C++ client library feature that allows code to be run while
712
+ // we're waiting for lock acquisition. We use it to communicate python signal state
713
+ // from the main thread elsewhere.
714
+ amps_set_waiting_function((void*)waiting_function);
715
+ amps_set_remove_route_function((void*)remove_route_function);
716
+ amps_set_copy_route_function((void*)copy_route_function);
717
+ #ifndef _WIN32
718
+ pthread_atfork(&ampspy::client::amps_python_client_atfork_prepare,
719
+ &ampspy::client::amps_python_client_atfork_parent,
720
+ &ampspy::client::amps_python_client_atfork_child);
721
+ #endif
722
+
723
+ ampspy::message::add_types(module);
724
+ ampspy::client::add_types(module);
725
+ ampspy::reason::add_types(module);
726
+ ampspy::store::add_types(module);
727
+ ampspy::fixbuilder::add_types(module);
728
+ ampspy::nvfixbuilder::add_types(module);
729
+ ampspy::authenticator::add_types(module);
730
+ ampspy::serverchooser::add_types(module);
731
+ ampspy::fixshredder::add_types(module);
732
+ ampspy::nvfixshredder::add_types(module);
733
+ ampspy::publishstore::add_types(module);
734
+ ampspy::hybridpublishstore::add_types(module);
735
+ ampspy::memorypublishstore::add_types(module);
736
+ ampspy::memorybookmarkstore::add_types(module);
737
+ ampspy::mmapbookmarkstore::add_types(module);
738
+ ampspy::ringbookmarkstore::add_types(module);
739
+ ampspy::messagestream::add_types(module);
740
+ ampspy::command::add_types(module);
741
+ ampspy::cmessagehandler::add_types(module);
742
+ ampspy::exponentialdelaystrategy::add_types(module);
743
+ ampspy::fixeddelaystrategy::add_types(module);
744
+ ampspy::compositemessagebuilder::add_types(module);
745
+ ampspy::compositemessageparser::add_types(module);
746
+ ampspy::versioninfo::add_types(module);
747
+ ampspy::recoverypoint::add_types(module);
748
+ ampspy::sowrecoverypointadapter::add_types(module);
749
+ ampspy::conflatingrecoverypointadapter::add_types(module);
750
+
751
+ ampspy::exc::init(module);
752
+ ampspy::haclient::add_types(module);
753
+ #if PY_MAJOR_VERSION >= 3
754
+ return module;
755
+ #endif
756
+ }