Sipper 1.1.3

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 (326) hide show
  1. data/sipper/README.rb +26 -0
  2. data/sipper/b2bua_controller.rb +163 -0
  3. data/sipper/b2bua_session_mixin.rb +24 -0
  4. data/sipper/base_controller.rb +425 -0
  5. data/sipper/bin/common.rb +42 -0
  6. data/sipper/bin/generate.rb +70 -0
  7. data/sipper/bin/project.rb +44 -0
  8. data/sipper/bin/run.rb +85 -0
  9. data/sipper/bin/run_smoke.rb +8 -0
  10. data/sipper/config/log4r.xml +71 -0
  11. data/sipper/controller_class_loader.rb +29 -0
  12. data/sipper/controller_selector.rb +119 -0
  13. data/sipper/controllers/invite_controller.rb +30 -0
  14. data/sipper/controllers/order.yaml +3 -0
  15. data/sipper/custom_message.rb +4 -0
  16. data/sipper/detached_session.rb +11 -0
  17. data/sipper/docs/manual.txt +1621 -0
  18. data/sipper/generators/README +12 -0
  19. data/sipper/generators/gen_controller.rb +228 -0
  20. data/sipper/generators/gen_project.rb +45 -0
  21. data/sipper/generators/gen_test.rb +72 -0
  22. data/sipper/generators/project_template_dir/Rakefile +56 -0
  23. data/sipper/generators/project_template_dir/config/sipper.cfg +31 -0
  24. data/sipper/generators/project_template_dir/controllers/README.txt +2 -0
  25. data/sipper/generators/project_template_dir/dot_sipper.proj +2 -0
  26. data/sipper/generators/project_template_dir/logs/README.txt +2 -0
  27. data/sipper/generators/project_template_dir/tests/README.txt +2 -0
  28. data/sipper/lib/smc/statemap.rb +194 -0
  29. data/sipper/logs/dialog_info_store +0 -0
  30. data/sipper/logs/r.cmd +6 -0
  31. data/sipper/logs/r.sh +6 -0
  32. data/sipper/media/sipper_media_client.rb +268 -0
  33. data/sipper/media/sipper_media_event.rb +43 -0
  34. data/sipper/media/sipper_media_manager.rb +145 -0
  35. data/sipper/media/sipper_media_proxy.rb +60 -0
  36. data/sipper/media/sipper_offer_answer.rb +285 -0
  37. data/sipper/message.rb +512 -0
  38. data/sipper/modified_pattern_formatter.rb +119 -0
  39. data/sipper/proxy_controller.rb +143 -0
  40. data/sipper/registration.rb +52 -0
  41. data/sipper/request.rb +109 -0
  42. data/sipper/response.rb +123 -0
  43. data/sipper/ruby_ext/module.rb +27 -0
  44. data/sipper/ruby_ext/mutable_class.rb +17 -0
  45. data/sipper/ruby_ext/object.rb +38 -0
  46. data/sipper/ruby_ext/pqueue.rb +190 -0
  47. data/sipper/ruby_ext/snapshot.rb +201 -0
  48. data/sipper/ruby_ext/string.rb +18 -0
  49. data/sipper/ruby_ext/time.rb +9 -0
  50. data/sipper/run/run_sipper1.rb +28 -0
  51. data/sipper/run/run_sipper2.rb +56 -0
  52. data/sipper/sdp/sdp.rb +257 -0
  53. data/sipper/sdp/sdp_generator.rb +131 -0
  54. data/sipper/sdp/sdp_parser.rb +136 -0
  55. data/sipper/session.rb +1952 -0
  56. data/sipper/session_manager.rb +170 -0
  57. data/sipper/session_recorder.rb +190 -0
  58. data/sipper/session_state/DialogState.sm +54 -0
  59. data/sipper/session_state/DialogState_sm.rb +337 -0
  60. data/sipper/session_state/dialog_routes.rb +141 -0
  61. data/sipper/sip_headers/header.rb +632 -0
  62. data/sipper/sip_headers/sipuri.rb +352 -0
  63. data/sipper/sip_logger.rb +65 -0
  64. data/sipper/sip_message_router.rb +231 -0
  65. data/sipper/sip_test_driver_controller.rb +10 -0
  66. data/sipper/sipper.rb +329 -0
  67. data/sipper/sipper_assertions.rb +21 -0
  68. data/sipper/sipper_configurator.rb +376 -0
  69. data/sipper/sipper_http/sipper_http_request_dispatcher.rb +71 -0
  70. data/sipper/sipper_http/sipper_http_response.rb +25 -0
  71. data/sipper/stray_message_manager.rb +40 -0
  72. data/sipper/test_completion_signaling_helper.rb +77 -0
  73. data/sipper/transaction/Ict.sm +59 -0
  74. data/sipper/transaction/Ict_sm.rb +430 -0
  75. data/sipper/transaction/Ist.sm +74 -0
  76. data/sipper/transaction/Ist_sm.rb +460 -0
  77. data/sipper/transaction/Nict.sm +51 -0
  78. data/sipper/transaction/Nict_sm.rb +325 -0
  79. data/sipper/transaction/Nist.sm +59 -0
  80. data/sipper/transaction/Nist_sm.rb +356 -0
  81. data/sipper/transaction/invite_client_transaction.rb +274 -0
  82. data/sipper/transaction/invite_server_transaction.rb +319 -0
  83. data/sipper/transaction/non_invite_client_transaction.rb +230 -0
  84. data/sipper/transaction/non_invite_server_transaction.rb +263 -0
  85. data/sipper/transaction/state_machine_wrapper.rb +58 -0
  86. data/sipper/transaction/transaction.rb +212 -0
  87. data/sipper/transport/base_transport.rb +84 -0
  88. data/sipper/transport/rel_unrel.rb +19 -0
  89. data/sipper/transport/transport_and_route_resolver.rb +67 -0
  90. data/sipper/transport/udp_transport.rb +156 -0
  91. data/sipper/transport_manager.rb +33 -0
  92. data/sipper/udp_session.rb +17 -0
  93. data/sipper/util/command_element.rb +62 -0
  94. data/sipper/util/compact_converter.rb +50 -0
  95. data/sipper/util/counter.rb +26 -0
  96. data/sipper/util/digest/digest_authorizer.rb +204 -0
  97. data/sipper/util/expectation_parser.rb +164 -0
  98. data/sipper/util/locator.rb +31 -0
  99. data/sipper/util/message_fill.rb +58 -0
  100. data/sipper/util/persistence/ps_sipper_map.rb +63 -0
  101. data/sipper/util/persistence/sipper_map.rb +41 -0
  102. data/sipper/util/sipper_util.rb +305 -0
  103. data/sipper/util/timer/sip_timer_helper.rb +26 -0
  104. data/sipper/util/timer/timer_manager.rb +80 -0
  105. data/sipper/util/timer/timer_task.rb +56 -0
  106. data/sipper/util/validations.rb +44 -0
  107. data/sipper/version.rb +10 -0
  108. data/sipper_test/_test_media_uas.rb +79 -0
  109. data/sipper_test/base_test_case.rb +31 -0
  110. data/sipper_test/c_134.txt +7 -0
  111. data/sipper_test/driven_sip_test_case.rb +96 -0
  112. data/sipper_test/gold.txt +10 -0
  113. data/sipper_test/gold_res.txt +8 -0
  114. data/sipper_test/gold_sub.txt +9 -0
  115. data/sipper_test/hello_sipper.au +0 -0
  116. data/sipper_test/in_sipper.au +0 -0
  117. data/sipper_test/nonrr_proxy.rb +17 -0
  118. data/sipper_test/order_tests.yaml +4 -0
  119. data/sipper_test/rake_res.txt +399 -0
  120. data/sipper_test/rr_proxy.rb +17 -0
  121. data/sipper_test/run_test.cmd +94 -0
  122. data/sipper_test/sip_test_case.rb +104 -0
  123. data/sipper_test/test2xx_retransmission.rb +80 -0
  124. data/sipper_test/test2xx_retransmission_with_limit.rb +81 -0
  125. data/sipper_test/test2xx_retransmission_with_nist.rb +91 -0
  126. data/sipper_test/test2xx_retransmission_with_txns.rb +94 -0
  127. data/sipper_test/test_address_header.rb +66 -0
  128. data/sipper_test/test_b2bua1.rb +130 -0
  129. data/sipper_test/test_b2bua2.rb +120 -0
  130. data/sipper_test/test_b2bua3.rb +160 -0
  131. data/sipper_test/test_b2bua4.rb +130 -0
  132. data/sipper_test/test_base_controller.rb +110 -0
  133. data/sipper_test/test_base_transport.rb +37 -0
  134. data/sipper_test/test_cancel.rb +21 -0
  135. data/sipper_test/test_cancel_after2xx.rb +81 -0
  136. data/sipper_test/test_cancel_retransmission.rb +105 -0
  137. data/sipper_test/test_cancel_with481.rb +83 -0
  138. data/sipper_test/test_cancel_with487.rb +70 -0
  139. data/sipper_test/test_cancel_with_ist_without_nist.rb +99 -0
  140. data/sipper_test/test_cancel_with_nist.rb +84 -0
  141. data/sipper_test/test_cancel_without487.rb +77 -0
  142. data/sipper_test/test_command_element.rb +38 -0
  143. data/sipper_test/test_compact_converter.rb +33 -0
  144. data/sipper_test/test_controller_class_loader.rb +37 -0
  145. data/sipper_test/test_controller_selector.rb +53 -0
  146. data/sipper_test/test_controller_using_compact_headers.rb +74 -0
  147. data/sipper_test/test_controller_using_header_order.rb +85 -0
  148. data/sipper_test/test_controller_using_ict.rb +64 -0
  149. data/sipper_test/test_controller_using_ict_with_non_success.rb +72 -0
  150. data/sipper_test/test_controller_using_ict_with_tcbh.rb +24 -0
  151. data/sipper_test/test_controller_using_ict_with_tcbh_no_action.rb +24 -0
  152. data/sipper_test/test_controller_using_ist.rb +70 -0
  153. data/sipper_test/test_controller_using_ist_with_tcbh.rb +24 -0
  154. data/sipper_test/test_controller_using_nict.rb +115 -0
  155. data/sipper_test/test_controller_using_nict_with_tcbh.rb +24 -0
  156. data/sipper_test/test_controller_using_nist.rb +63 -0
  157. data/sipper_test/test_controller_using_pre_existing_rs0.rb +73 -0
  158. data/sipper_test/test_controller_using_pre_existing_rs1.rb +75 -0
  159. data/sipper_test/test_controller_using_pre_existing_rs2.rb +71 -0
  160. data/sipper_test/test_controller_using_route_set.rb +86 -0
  161. data/sipper_test/test_controller_with_sdp.rb +80 -0
  162. data/sipper_test/test_controllers/cancel/order.yaml +2 -0
  163. data/sipper_test/test_controllers/cancel/uac_cancel_controller.rb +35 -0
  164. data/sipper_test/test_controllers/cancel/uas_cancel_controller.rb +25 -0
  165. data/sipper_test/test_controllers/class_loading/ordered/first_ordered_controller.rb +5 -0
  166. data/sipper_test/test_controllers/class_loading/ordered/order.yaml +3 -0
  167. data/sipper_test/test_controllers/class_loading/ordered/recond_ordered_controller.rb +6 -0
  168. data/sipper_test/test_controllers/class_loading/ordered/second_ordered_controller.rb +6 -0
  169. data/sipper_test/test_controllers/class_loading/unordered/first_unordered_controller.rb +7 -0
  170. data/sipper_test/test_controllers/class_loading/unordered/second_unordered_controller.rb +6 -0
  171. data/sipper_test/test_controllers/ctrl_trhandler/lib/transport_filters/my_transport_handler.rb +22 -0
  172. data/sipper_test/test_controllers/ctrl_trhandler/uac_tr_handler_controller.rb +27 -0
  173. data/sipper_test/test_controllers/ctrl_trhandler/uas_tr_handler_controller.rb +21 -0
  174. data/sipper_test/test_controllers/ete/order.yaml +1 -0
  175. data/sipper_test/test_controllers/ete/uac_controller.rb +39 -0
  176. data/sipper_test/test_controllers/ete/uas_controller.rb +34 -0
  177. data/sipper_test/test_controllers/extensions/extension_uac_controller.rb +24 -0
  178. data/sipper_test/test_controllers/extensions/extension_uas_controller.rb +35 -0
  179. data/sipper_test/test_controllers/extensions/lib/sipper_extensions/my_from_extension.rb +16 -0
  180. data/sipper_test/test_controllers/ict_tcbh/lib/transaction_handlers/app_ict_handler.rb +23 -0
  181. data/sipper_test/test_controllers/ict_tcbh/uac_ict_tcbh_controller.rb +27 -0
  182. data/sipper_test/test_controllers/ict_tcbh/uac_ict_tcbh_no_action_controller.rb +28 -0
  183. data/sipper_test/test_controllers/ict_tcbh/uas_ict_tcbh_controller.rb +29 -0
  184. data/sipper_test/test_controllers/ict_tcbh/uas_ict_tcbh_no_action_controller.rb +31 -0
  185. data/sipper_test/test_controllers/ist_tcbh/lib/app_ist_handler.rb +13 -0
  186. data/sipper_test/test_controllers/ist_tcbh/uac_ist_tcbh_controller.rb +22 -0
  187. data/sipper_test/test_controllers/ist_tcbh/uas_ist_tcbh_controller.rb +31 -0
  188. data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/in_order.yaml +2 -0
  189. data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/my_transport_handler1.rb +21 -0
  190. data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/my_transport_handler2.rb +21 -0
  191. data/sipper_test/test_controllers/multi_trhandlers/lib/transport_filters/out_order.yaml +2 -0
  192. data/sipper_test/test_controllers/multi_trhandlers/uac_multi_tr_handler_controller.rb +27 -0
  193. data/sipper_test/test_controllers/multi_trhandlers/uas_multi_tr_handler_controller.rb +29 -0
  194. data/sipper_test/test_controllers/multiple/lib/blank_test.rb +2 -0
  195. data/sipper_test/test_controllers/multiple/uac_info_controller.rb +21 -0
  196. data/sipper_test/test_controllers/multiple/uac_msg_controller.rb +20 -0
  197. data/sipper_test/test_controllers/multiple/uas_info_controller.rb +15 -0
  198. data/sipper_test/test_controllers/multiple/uas_msg_controller.rb +14 -0
  199. data/sipper_test/test_controllers/nict_tcbh/lib/transaction_handlers/app_nict_handler.rb +13 -0
  200. data/sipper_test/test_controllers/nict_tcbh/uac_nict_tcbh_controller.rb +26 -0
  201. data/sipper_test/test_controllers/nict_tcbh/uas_nict_tcbh_controller.rb +20 -0
  202. data/sipper_test/test_controllers/state_machine_based/lib/CreditControl.sm +43 -0
  203. data/sipper_test/test_controllers/state_machine_based/lib/CreditControl_sm.rb +194 -0
  204. data/sipper_test/test_controllers/state_machine_based/order.yaml +1 -0
  205. data/sipper_test/test_controllers/state_machine_based/uac_message_controller.rb +34 -0
  206. data/sipper_test/test_controllers/state_machine_based/uas_message_controller.rb +44 -0
  207. data/sipper_test/test_controllers/stray_message/lib/sipper_extensions/my_stray_handler.rb +9 -0
  208. data/sipper_test/test_controllers/stray_message/stray_uac_controller.rb +24 -0
  209. data/sipper_test/test_controllers/stray_message/stray_uas_controller.rb +31 -0
  210. data/sipper_test/test_controllers/string/order.yaml +1 -0
  211. data/sipper_test/test_controllers/string/uac_controller.rb +29 -0
  212. data/sipper_test/test_controllers/string/uas_controller.rb +22 -0
  213. data/sipper_test/test_controllers/test_controller.rb +24 -0
  214. data/sipper_test/test_detached_session1.rb +78 -0
  215. data/sipper_test/test_dialog_routes.rb +139 -0
  216. data/sipper_test/test_digest_challenge1.rb +89 -0
  217. data/sipper_test/test_digest_challenge2.rb +90 -0
  218. data/sipper_test/test_dynamic_parse.rb +249 -0
  219. data/sipper_test/test_empty_sdp.rb +89 -0
  220. data/sipper_test/test_ete.rb +37 -0
  221. data/sipper_test/test_expectation_parser.rb +76 -0
  222. data/sipper_test/test_extensions.rb +28 -0
  223. data/sipper_test/test_freeze.rb +81 -0
  224. data/sipper_test/test_generated.rb +90 -0
  225. data/sipper_test/test_header_parameters.rb +75 -0
  226. data/sipper_test/test_header_parse.rb +141 -0
  227. data/sipper_test/test_http_client1.rb +84 -0
  228. data/sipper_test/test_http_client2.rb +90 -0
  229. data/sipper_test/test_ict_with_timeout.rb +62 -0
  230. data/sipper_test/test_in_dialog_request.rb +61 -0
  231. data/sipper_test/test_inline_controller.rb +67 -0
  232. data/sipper_test/test_invite_client_transaction.rb +272 -0
  233. data/sipper_test/test_invite_replace.rb +147 -0
  234. data/sipper_test/test_invite_retransmission.rb +90 -0
  235. data/sipper_test/test_invite_server_transaction.rb +208 -0
  236. data/sipper_test/test_lower_cseq.rb +79 -0
  237. data/sipper_test/test_media.rb +52 -0
  238. data/sipper_test/test_message.rb +392 -0
  239. data/sipper_test/test_method_specific_response_handling.rb +81 -0
  240. data/sipper_test/test_multi_homed1.rb +127 -0
  241. data/sipper_test/test_multi_homed2.rb +109 -0
  242. data/sipper_test/test_multi_homed_duplicate.rb +87 -0
  243. data/sipper_test/test_multi_homed_with_detached.rb +88 -0
  244. data/sipper_test/test_multiple.rb +49 -0
  245. data/sipper_test/test_multiple_contacts.rb +89 -0
  246. data/sipper_test/test_non2xx_retransmission_with_ist.rb +87 -0
  247. data/sipper_test/test_non_invite_client_transaction.rb +210 -0
  248. data/sipper_test/test_non_invite_retransmission.rb +91 -0
  249. data/sipper_test/test_non_invite_server_transaction.rb +202 -0
  250. data/sipper_test/test_offer_answer_prack.rb +103 -0
  251. data/sipper_test/test_pickup.rb +258 -0
  252. data/sipper_test/test_prack.rb +105 -0
  253. data/sipper_test/test_prack_store_and_dispatch.rb +101 -0
  254. data/sipper_test/test_prack_timer.rb +105 -0
  255. data/sipper_test/test_ps_sipper_map.rb +56 -0
  256. data/sipper_test/test_re_invite_uas_ongoing_ict.rb +81 -0
  257. data/sipper_test/test_re_invite_uas_ongoing_ist.rb +84 -0
  258. data/sipper_test/test_re_invite_with_ongoing_ict.rb +101 -0
  259. data/sipper_test/test_re_invite_with_ongoing_ist.rb +89 -0
  260. data/sipper_test/test_recorder_swap.rb +157 -0
  261. data/sipper_test/test_refer.rb +121 -0
  262. data/sipper_test/test_registeration_clearing.rb +97 -0
  263. data/sipper_test/test_registrar.rb +109 -0
  264. data/sipper_test/test_registration_controller.rb +73 -0
  265. data/sipper_test/test_registration_timeout.rb +90 -0
  266. data/sipper_test/test_remote_controller.rb +39 -0
  267. data/sipper_test/test_remote_target_update_on2xx.rb +140 -0
  268. data/sipper_test/test_request.rb +106 -0
  269. data/sipper_test/test_response.rb +40 -0
  270. data/sipper_test/test_response_without_to_tag.rb +92 -0
  271. data/sipper_test/test_rport.rb +88 -0
  272. data/sipper_test/test_sdp.rb +91 -0
  273. data/sipper_test/test_sdp_parser.rb +145 -0
  274. data/sipper_test/test_session.rb +276 -0
  275. data/sipper_test/test_session_callback_handler.rb +68 -0
  276. data/sipper_test/test_session_lifetime.rb +66 -0
  277. data/sipper_test/test_session_manager.rb +141 -0
  278. data/sipper_test/test_session_recorder.rb +145 -0
  279. data/sipper_test/test_session_state_user_defined.rb +84 -0
  280. data/sipper_test/test_session_states.rb +91 -0
  281. data/sipper_test/test_simple_dialog_state.rb +86 -0
  282. data/sipper_test/test_simple_re_invite.rb +86 -0
  283. data/sipper_test/test_sip_uri.rb +234 -0
  284. data/sipper_test/test_sipper_util.rb +45 -0
  285. data/sipper_test/test_smc_controller.rb +17 -0
  286. data/sipper_test/test_smoke.rb +80 -0
  287. data/sipper_test/test_stray.rb +28 -0
  288. data/sipper_test/test_stray_inline.rb +89 -0
  289. data/sipper_test/test_stray_res_acked.rb +103 -0
  290. data/sipper_test/test_stray_respond.rb +104 -0
  291. data/sipper_test/test_stray_retry.rb +92 -0
  292. data/sipper_test/test_stray_retry_failure.rb +93 -0
  293. data/sipper_test/test_stray_retry_initial.rb +100 -0
  294. data/sipper_test/test_strict_router_with_angled.rb +84 -0
  295. data/sipper_test/test_string_record.rb +31 -0
  296. data/sipper_test/test_subscribe_notify.rb +141 -0
  297. data/sipper_test/test_subscribe_notify_client_timeout.rb +158 -0
  298. data/sipper_test/test_subscribe_notify_dialog.rb +146 -0
  299. data/sipper_test/test_subscribe_notify_expires.rb +155 -0
  300. data/sipper_test/test_subscribe_notify_multiple_subscription.rb +157 -0
  301. data/sipper_test/test_subscribe_notify_server_timeout.rb +144 -0
  302. data/sipper_test/test_subsequent_unsent.rb +88 -0
  303. data/sipper_test/test_target_refresh_proxy_detached.rb +128 -0
  304. data/sipper_test/test_target_refresh_proxy_udp.rb +130 -0
  305. data/sipper_test/test_target_refresh_rr_proxy_udp.rb +133 -0
  306. data/sipper_test/test_target_refresh_with_new_port.rb +158 -0
  307. data/sipper_test/test_target_refresh_with_proxy1.rb +113 -0
  308. data/sipper_test/test_target_refresh_with_rr_update_proxy.rb +145 -0
  309. data/sipper_test/test_target_refresh_with_update_proxy.rb +144 -0
  310. data/sipper_test/test_target_refresh_with_update_proxy2.rb +139 -0
  311. data/sipper_test/test_timer_manager.rb +71 -0
  312. data/sipper_test/test_timer_task.rb +60 -0
  313. data/sipper_test/test_transport_handler.rb +19 -0
  314. data/sipper_test/test_transport_multi_handler.rb +18 -0
  315. data/sipper_test/test_udp_transport.rb +119 -0
  316. data/sipper_test/test_unparsed.rb +70 -0
  317. data/sipper_test/test_validations.rb +69 -0
  318. data/sipper_test/test_with_rr_proxy.rb +111 -0
  319. data/sipper_test/testmediacontroller.rb +71 -0
  320. data/sipper_test/tracing.rb +23 -0
  321. data/sipper_test/transaction_test_helper.rb +176 -0
  322. data/sipper_test/transport_filters.rb +26 -0
  323. data/sipper_test/ts_sipper.rb +91 -0
  324. data/sipper_test/ts_smoke.rb +3 -0
  325. data/sipper_test/tt.cmd +20 -0
  326. metadata +455 -0
@@ -0,0 +1,74 @@
1
+ // Invite Server Transaction. Section 17.2.1
2
+
3
+ %class Ist
4
+
5
+ %start IstMap::Initial
6
+
7
+ %map IstMap
8
+
9
+ %%
10
+
11
+ Initial
12
+ {
13
+ invite Proceeding { __send_trying(); __consume_msg(true); } //i
14
+ transport_err Terminated { __transport_err(); } // even though not mentioned in RFC
15
+ }
16
+
17
+
18
+
19
+ Proceeding
20
+ {
21
+ provisional(r: resp) nil { __send_provisional_response(r); } //o
22
+ invite nil { __send_last_response(); __consume_msg(false); } //i
23
+ success_final(r: resp) Finished { __send_success_response(r); } //o
24
+ non_success_final(r: resp) Completed { __send_non_success_final_response(r); } //o
25
+ cancel Completed { __create_and_send_487(); __consume_msg(true); } //i
26
+ transport_err Terminated { __transport_err(); }
27
+ }
28
+
29
+
30
+ Completed
31
+ Entry { __start_H(); __start_G(); }
32
+ Exit { __cancel_H(); __cancel_G(); }
33
+ {
34
+ timer_G(t: ltime) nil { __send_last_response(); __reset_G(t); }
35
+ timer_H Terminated { __timeout(); }
36
+ transport_err Terminated { __transport_err(); }
37
+ ack Confirmed { __consume_msg(false); } //i
38
+ invite nil { __send_last_response(); __consume_msg(false); } //i
39
+ cancel nil { __consume_msg(true); } //i
40
+ }
41
+
42
+
43
+
44
+ Confirmed
45
+ Entry { __start_I(); }
46
+ {
47
+ timer_I Terminated { __timeout(); }
48
+ cancel nil { __consume_msg(true); } //i consume to send 200
49
+ ack nil { __consume_msg(false); } //i
50
+ invite nil { __send_last_response(); __consume_msg(false); } //i
51
+ }
52
+
53
+
54
+
55
+ // sipit bug http://bugs.sipit.net/show_bug.cgi?id=769
56
+ // on the same lines as Timer I
57
+ // this state is practically invisible
58
+
59
+ Finished
60
+ Entry { __start_Z(); }
61
+ Exit { }
62
+ {
63
+ invite nil { __consume_msg(false); } //i txn is tu agnostic
64
+ timer_Z Terminated { }
65
+ cancel nil { __consume_msg(true); } //i
66
+ }
67
+
68
+
69
+ Terminated
70
+ Entry { __cleanup(); }
71
+ {
72
+ }
73
+
74
+ %%
@@ -0,0 +1,460 @@
1
+ # DO NOT EDIT.
2
+ # generated by smc (http://smc.sourceforge.net/)
3
+ # from file : Ist.sm
4
+
5
+ require 'statemap'
6
+
7
+ class IstState < Statemap::State
8
+
9
+ def Entry(fsm) end
10
+
11
+ def Exit(fsm) end
12
+
13
+ def ack(fsm)
14
+ Default(fsm)
15
+ end
16
+
17
+ def cancel(fsm)
18
+ Default(fsm)
19
+ end
20
+
21
+ def invite(fsm)
22
+ Default(fsm)
23
+ end
24
+
25
+ def non_success_final(fsm, r)
26
+ Default(fsm)
27
+ end
28
+
29
+ def provisional(fsm, r)
30
+ Default(fsm)
31
+ end
32
+
33
+ def success_final(fsm, r)
34
+ Default(fsm)
35
+ end
36
+
37
+ def timer_G(fsm, t)
38
+ Default(fsm)
39
+ end
40
+
41
+ def timer_H(fsm)
42
+ Default(fsm)
43
+ end
44
+
45
+ def timer_I(fsm)
46
+ Default(fsm)
47
+ end
48
+
49
+ def timer_Z(fsm)
50
+ Default(fsm)
51
+ end
52
+
53
+ def transport_err(fsm)
54
+ Default(fsm)
55
+ end
56
+
57
+ def Default(fsm)
58
+ msg = "\nState: " + fsm.getState.getName +
59
+ "\nTransition: " + fsm.getTransition + "\n"
60
+ raise Statemap::TransitionUndefinedException, msg
61
+ end
62
+
63
+ end
64
+
65
+ class IstMap_Default < IstState
66
+
67
+ end
68
+
69
+ class IstMap_Initial < IstMap_Default
70
+
71
+ def invite(fsm)
72
+ ctxt = fsm.getOwner
73
+ fsm.getState.Exit(fsm)
74
+ fsm.clearState
75
+ begin
76
+ ctxt.__send_trying()
77
+ ctxt.__consume_msg(true)
78
+ ensure
79
+ fsm.setState(IstMap::Proceeding)
80
+ fsm.getState.Entry(fsm)
81
+ end
82
+ end
83
+
84
+ def transport_err(fsm)
85
+ ctxt = fsm.getOwner
86
+ fsm.getState.Exit(fsm)
87
+ fsm.clearState
88
+ begin
89
+ ctxt.__transport_err()
90
+ ensure
91
+ fsm.setState(IstMap::Terminated)
92
+ fsm.getState.Entry(fsm)
93
+ end
94
+ end
95
+
96
+ end
97
+
98
+ class IstMap_Proceeding < IstMap_Default
99
+
100
+ def cancel(fsm)
101
+ ctxt = fsm.getOwner
102
+ fsm.getState.Exit(fsm)
103
+ fsm.clearState
104
+ begin
105
+ ctxt.__create_and_send_487()
106
+ ctxt.__consume_msg(true)
107
+ ensure
108
+ fsm.setState(IstMap::Completed)
109
+ fsm.getState.Entry(fsm)
110
+ end
111
+ end
112
+
113
+ def invite(fsm)
114
+ ctxt = fsm.getOwner
115
+ endState = fsm.getState
116
+ fsm.clearState
117
+ begin
118
+ ctxt.__send_last_response()
119
+ ctxt.__consume_msg(false)
120
+ ensure
121
+ fsm.setState(endState)
122
+ end
123
+ end
124
+
125
+ def non_success_final(fsm, r)
126
+ ctxt = fsm.getOwner
127
+ fsm.getState.Exit(fsm)
128
+ fsm.clearState
129
+ begin
130
+ ctxt.__send_non_success_final_response(r)
131
+ ensure
132
+ fsm.setState(IstMap::Completed)
133
+ fsm.getState.Entry(fsm)
134
+ end
135
+ end
136
+
137
+ def provisional(fsm, r)
138
+ ctxt = fsm.getOwner
139
+ endState = fsm.getState
140
+ fsm.clearState
141
+ begin
142
+ ctxt.__send_provisional_response(r)
143
+ ensure
144
+ fsm.setState(endState)
145
+ end
146
+ end
147
+
148
+ def success_final(fsm, r)
149
+ ctxt = fsm.getOwner
150
+ fsm.getState.Exit(fsm)
151
+ fsm.clearState
152
+ begin
153
+ ctxt.__send_success_response(r)
154
+ ensure
155
+ fsm.setState(IstMap::Finished)
156
+ fsm.getState.Entry(fsm)
157
+ end
158
+ end
159
+
160
+ def transport_err(fsm)
161
+ ctxt = fsm.getOwner
162
+ fsm.getState.Exit(fsm)
163
+ fsm.clearState
164
+ begin
165
+ ctxt.__transport_err()
166
+ ensure
167
+ fsm.setState(IstMap::Terminated)
168
+ fsm.getState.Entry(fsm)
169
+ end
170
+ end
171
+
172
+ end
173
+
174
+ class IstMap_Completed < IstMap_Default
175
+
176
+ def Entry(fsm)
177
+ ctxt = fsm.getOwner
178
+ ctxt.__start_H()
179
+ ctxt.__start_G()
180
+ end
181
+
182
+ def Exit(fsm)
183
+ ctxt = fsm.getOwner
184
+ ctxt.__cancel_H()
185
+ ctxt.__cancel_G()
186
+ end
187
+
188
+ def ack(fsm)
189
+ ctxt = fsm.getOwner
190
+ fsm.getState.Exit(fsm)
191
+ fsm.clearState
192
+ begin
193
+ ctxt.__consume_msg(false)
194
+ ensure
195
+ fsm.setState(IstMap::Confirmed)
196
+ fsm.getState.Entry(fsm)
197
+ end
198
+ end
199
+
200
+ def cancel(fsm)
201
+ ctxt = fsm.getOwner
202
+ endState = fsm.getState
203
+ fsm.clearState
204
+ begin
205
+ ctxt.__consume_msg(true)
206
+ ensure
207
+ fsm.setState(endState)
208
+ end
209
+ end
210
+
211
+ def invite(fsm)
212
+ ctxt = fsm.getOwner
213
+ endState = fsm.getState
214
+ fsm.clearState
215
+ begin
216
+ ctxt.__send_last_response()
217
+ ctxt.__consume_msg(false)
218
+ ensure
219
+ fsm.setState(endState)
220
+ end
221
+ end
222
+
223
+ def timer_G(fsm, t)
224
+ ctxt = fsm.getOwner
225
+ endState = fsm.getState
226
+ fsm.clearState
227
+ begin
228
+ ctxt.__send_last_response()
229
+ ctxt.__reset_G(t)
230
+ ensure
231
+ fsm.setState(endState)
232
+ end
233
+ end
234
+
235
+ def timer_H(fsm)
236
+ ctxt = fsm.getOwner
237
+ fsm.getState.Exit(fsm)
238
+ fsm.clearState
239
+ begin
240
+ ctxt.__timeout()
241
+ ensure
242
+ fsm.setState(IstMap::Terminated)
243
+ fsm.getState.Entry(fsm)
244
+ end
245
+ end
246
+
247
+ def transport_err(fsm)
248
+ ctxt = fsm.getOwner
249
+ fsm.getState.Exit(fsm)
250
+ fsm.clearState
251
+ begin
252
+ ctxt.__transport_err()
253
+ ensure
254
+ fsm.setState(IstMap::Terminated)
255
+ fsm.getState.Entry(fsm)
256
+ end
257
+ end
258
+
259
+ end
260
+
261
+ class IstMap_Confirmed < IstMap_Default
262
+
263
+ def Entry(fsm)
264
+ ctxt = fsm.getOwner
265
+ ctxt.__start_I()
266
+ end
267
+
268
+ def ack(fsm)
269
+ ctxt = fsm.getOwner
270
+ endState = fsm.getState
271
+ fsm.clearState
272
+ begin
273
+ ctxt.__consume_msg(false)
274
+ ensure
275
+ fsm.setState(endState)
276
+ end
277
+ end
278
+
279
+ def cancel(fsm)
280
+ ctxt = fsm.getOwner
281
+ endState = fsm.getState
282
+ fsm.clearState
283
+ begin
284
+ ctxt.__consume_msg(true)
285
+ ensure
286
+ fsm.setState(endState)
287
+ end
288
+ end
289
+
290
+ def invite(fsm)
291
+ ctxt = fsm.getOwner
292
+ endState = fsm.getState
293
+ fsm.clearState
294
+ begin
295
+ ctxt.__send_last_response()
296
+ ctxt.__consume_msg(false)
297
+ ensure
298
+ fsm.setState(endState)
299
+ end
300
+ end
301
+
302
+ def timer_I(fsm)
303
+ ctxt = fsm.getOwner
304
+ fsm.getState.Exit(fsm)
305
+ fsm.clearState
306
+ begin
307
+ ctxt.__timeout()
308
+ ensure
309
+ fsm.setState(IstMap::Terminated)
310
+ fsm.getState.Entry(fsm)
311
+ end
312
+ end
313
+
314
+ end
315
+
316
+ class IstMap_Finished < IstMap_Default
317
+
318
+ def Entry(fsm)
319
+ ctxt = fsm.getOwner
320
+ ctxt.__start_Z()
321
+ end
322
+
323
+ def cancel(fsm)
324
+ ctxt = fsm.getOwner
325
+ endState = fsm.getState
326
+ fsm.clearState
327
+ begin
328
+ ctxt.__consume_msg(true)
329
+ ensure
330
+ fsm.setState(endState)
331
+ end
332
+ end
333
+
334
+ def invite(fsm)
335
+ ctxt = fsm.getOwner
336
+ endState = fsm.getState
337
+ fsm.clearState
338
+ begin
339
+ ctxt.__consume_msg(false)
340
+ ensure
341
+ fsm.setState(endState)
342
+ end
343
+ end
344
+
345
+ def timer_Z(fsm)
346
+ fsm.getState.Exit(fsm)
347
+ fsm.setState(IstMap::Terminated)
348
+ fsm.getState.Entry(fsm)
349
+ end
350
+
351
+ end
352
+
353
+ class IstMap_Terminated < IstMap_Default
354
+
355
+ def Entry(fsm)
356
+ ctxt = fsm.getOwner
357
+ ctxt.__cleanup()
358
+ end
359
+
360
+ end
361
+
362
+ module IstMap
363
+
364
+ Initial = IstMap_Initial::new('IstMap.Initial', 0).freeze
365
+ Proceeding = IstMap_Proceeding::new('IstMap.Proceeding', 1).freeze
366
+ Completed = IstMap_Completed::new('IstMap.Completed', 2).freeze
367
+ Confirmed = IstMap_Confirmed::new('IstMap.Confirmed', 3).freeze
368
+ Finished = IstMap_Finished::new('IstMap.Finished', 4).freeze
369
+ Terminated = IstMap_Terminated::new('IstMap.Terminated', 5).freeze
370
+ Default = IstMap_Default::new('IstMap.Default', -1).freeze
371
+
372
+ end
373
+
374
+ class Ist_sm < Statemap::FSMContext
375
+
376
+ def initialize(owner)
377
+ super()
378
+ @_owner = owner
379
+ setState(IstMap::Initial)
380
+ IstMap::Initial.Entry(self)
381
+ end
382
+
383
+ def ack()
384
+ @_transition = 'ack'
385
+ getState.ack(self)
386
+ @_transition = nil
387
+ end
388
+
389
+ def cancel()
390
+ @_transition = 'cancel'
391
+ getState.cancel(self)
392
+ @_transition = nil
393
+ end
394
+
395
+ def invite()
396
+ @_transition = 'invite'
397
+ getState.invite(self)
398
+ @_transition = nil
399
+ end
400
+
401
+ def non_success_final(*arglist)
402
+ @_transition = 'non_success_final'
403
+ getState.non_success_final(self, *arglist)
404
+ @_transition = nil
405
+ end
406
+
407
+ def provisional(*arglist)
408
+ @_transition = 'provisional'
409
+ getState.provisional(self, *arglist)
410
+ @_transition = nil
411
+ end
412
+
413
+ def success_final(*arglist)
414
+ @_transition = 'success_final'
415
+ getState.success_final(self, *arglist)
416
+ @_transition = nil
417
+ end
418
+
419
+ def timer_G(*arglist)
420
+ @_transition = 'timer_G'
421
+ getState.timer_G(self, *arglist)
422
+ @_transition = nil
423
+ end
424
+
425
+ def timer_H()
426
+ @_transition = 'timer_H'
427
+ getState.timer_H(self)
428
+ @_transition = nil
429
+ end
430
+
431
+ def timer_I()
432
+ @_transition = 'timer_I'
433
+ getState.timer_I(self)
434
+ @_transition = nil
435
+ end
436
+
437
+ def timer_Z()
438
+ @_transition = 'timer_Z'
439
+ getState.timer_Z(self)
440
+ @_transition = nil
441
+ end
442
+
443
+ def transport_err()
444
+ @_transition = 'transport_err'
445
+ getState.transport_err(self)
446
+ @_transition = nil
447
+ end
448
+
449
+ def getState()
450
+ if @_state.nil? then
451
+ raise Statemap::StateUndefinedException
452
+ end
453
+ return @_state
454
+ end
455
+
456
+ def getOwner()
457
+ return @_owner
458
+ end
459
+
460
+ end