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,51 @@
1
+ // Non Invite Client Transaction. Section 17.1.2 and RFC 4320
2
+
3
+ %class Nict
4
+
5
+ %start NictMap::Initial
6
+
7
+ %map NictMap
8
+
9
+ %%
10
+
11
+ Initial
12
+ {
13
+ request Trying { __send_request(); __start_E(); __start_F(); }
14
+ transport_err Terminated { __transport_err(); }
15
+ }
16
+
17
+
18
+ Trying
19
+ {
20
+ timer_E(t: ltime) nil { __send_request(); __reset_E(t); }
21
+ final Completed { __consume_msg(true); } // 200-699
22
+ provisional Proceeding { __consume_msg(true); } // 100-199
23
+ timer_F Terminated { __timeout(); }
24
+ transport_err Terminated { __transport_err(); }
25
+ }
26
+
27
+
28
+ Proceeding
29
+ Exit { __cancel_E(); __cancel_F(); }
30
+ {
31
+ timer_E(t: ltime) nil { __send_request(); __reset_E(); } // default resets to T2
32
+ final Completed { __consume_msg(true); } // 200-699
33
+ provisional nil { __consume_msg(true); }
34
+ timer_F Terminated { __timeout(); }
35
+ transport_err Terminated { __transport_err(); }
36
+ }
37
+
38
+ Completed
39
+ Entry { __start_K(); }
40
+ {
41
+ final nil { __consume_msg(false); } // 200-699 retrans
42
+ timer_K Terminated { }
43
+ }
44
+
45
+
46
+ Terminated
47
+ Entry { __cleanup(); }
48
+ {
49
+ }
50
+
51
+ %%
@@ -0,0 +1,325 @@
1
+ # DO NOT EDIT.
2
+ # generated by smc (http://smc.sourceforge.net/)
3
+ # from file : Nict.sm
4
+
5
+ require 'statemap'
6
+
7
+ class NictState < Statemap::State
8
+
9
+ def Entry(fsm) end
10
+
11
+ def Exit(fsm) end
12
+
13
+ def final(fsm)
14
+ Default(fsm)
15
+ end
16
+
17
+ def provisional(fsm)
18
+ Default(fsm)
19
+ end
20
+
21
+ def request(fsm)
22
+ Default(fsm)
23
+ end
24
+
25
+ def timer_E(fsm, t)
26
+ Default(fsm)
27
+ end
28
+
29
+ def timer_F(fsm)
30
+ Default(fsm)
31
+ end
32
+
33
+ def timer_K(fsm)
34
+ Default(fsm)
35
+ end
36
+
37
+ def transport_err(fsm)
38
+ Default(fsm)
39
+ end
40
+
41
+ def Default(fsm)
42
+ msg = "\nState: " + fsm.getState.getName +
43
+ "\nTransition: " + fsm.getTransition + "\n"
44
+ raise Statemap::TransitionUndefinedException, msg
45
+ end
46
+
47
+ end
48
+
49
+ class NictMap_Default < NictState
50
+
51
+ end
52
+
53
+ class NictMap_Initial < NictMap_Default
54
+
55
+ def request(fsm)
56
+ ctxt = fsm.getOwner
57
+ fsm.getState.Exit(fsm)
58
+ fsm.clearState
59
+ begin
60
+ ctxt.__send_request()
61
+ ctxt.__start_E()
62
+ ctxt.__start_F()
63
+ ensure
64
+ fsm.setState(NictMap::Trying)
65
+ fsm.getState.Entry(fsm)
66
+ end
67
+ end
68
+
69
+ def transport_err(fsm)
70
+ ctxt = fsm.getOwner
71
+ fsm.getState.Exit(fsm)
72
+ fsm.clearState
73
+ begin
74
+ ctxt.__transport_err()
75
+ ensure
76
+ fsm.setState(NictMap::Terminated)
77
+ fsm.getState.Entry(fsm)
78
+ end
79
+ end
80
+
81
+ end
82
+
83
+ class NictMap_Trying < NictMap_Default
84
+
85
+ def final(fsm)
86
+ ctxt = fsm.getOwner
87
+ fsm.getState.Exit(fsm)
88
+ fsm.clearState
89
+ begin
90
+ ctxt.__consume_msg(true)
91
+ ensure
92
+ fsm.setState(NictMap::Completed)
93
+ fsm.getState.Entry(fsm)
94
+ end
95
+ end
96
+
97
+ def provisional(fsm)
98
+ ctxt = fsm.getOwner
99
+ fsm.getState.Exit(fsm)
100
+ fsm.clearState
101
+ begin
102
+ ctxt.__consume_msg(true)
103
+ ensure
104
+ fsm.setState(NictMap::Proceeding)
105
+ fsm.getState.Entry(fsm)
106
+ end
107
+ end
108
+
109
+ def timer_E(fsm, t)
110
+ ctxt = fsm.getOwner
111
+ endState = fsm.getState
112
+ fsm.clearState
113
+ begin
114
+ ctxt.__send_request()
115
+ ctxt.__reset_E(t)
116
+ ensure
117
+ fsm.setState(endState)
118
+ end
119
+ end
120
+
121
+ def timer_F(fsm)
122
+ ctxt = fsm.getOwner
123
+ fsm.getState.Exit(fsm)
124
+ fsm.clearState
125
+ begin
126
+ ctxt.__timeout()
127
+ ensure
128
+ fsm.setState(NictMap::Terminated)
129
+ fsm.getState.Entry(fsm)
130
+ end
131
+ end
132
+
133
+ def transport_err(fsm)
134
+ ctxt = fsm.getOwner
135
+ fsm.getState.Exit(fsm)
136
+ fsm.clearState
137
+ begin
138
+ ctxt.__transport_err()
139
+ ensure
140
+ fsm.setState(NictMap::Terminated)
141
+ fsm.getState.Entry(fsm)
142
+ end
143
+ end
144
+
145
+ end
146
+
147
+ class NictMap_Proceeding < NictMap_Default
148
+
149
+ def Exit(fsm)
150
+ ctxt = fsm.getOwner
151
+ ctxt.__cancel_E()
152
+ ctxt.__cancel_F()
153
+ end
154
+
155
+ def final(fsm)
156
+ ctxt = fsm.getOwner
157
+ fsm.getState.Exit(fsm)
158
+ fsm.clearState
159
+ begin
160
+ ctxt.__consume_msg(true)
161
+ ensure
162
+ fsm.setState(NictMap::Completed)
163
+ fsm.getState.Entry(fsm)
164
+ end
165
+ end
166
+
167
+ def provisional(fsm)
168
+ ctxt = fsm.getOwner
169
+ endState = fsm.getState
170
+ fsm.clearState
171
+ begin
172
+ ctxt.__consume_msg(true)
173
+ ensure
174
+ fsm.setState(endState)
175
+ end
176
+ end
177
+
178
+ def timer_E(fsm, t)
179
+ ctxt = fsm.getOwner
180
+ endState = fsm.getState
181
+ fsm.clearState
182
+ begin
183
+ ctxt.__send_request()
184
+ ctxt.__reset_E()
185
+ ensure
186
+ fsm.setState(endState)
187
+ end
188
+ end
189
+
190
+ def timer_F(fsm)
191
+ ctxt = fsm.getOwner
192
+ fsm.getState.Exit(fsm)
193
+ fsm.clearState
194
+ begin
195
+ ctxt.__timeout()
196
+ ensure
197
+ fsm.setState(NictMap::Terminated)
198
+ fsm.getState.Entry(fsm)
199
+ end
200
+ end
201
+
202
+ def transport_err(fsm)
203
+ ctxt = fsm.getOwner
204
+ fsm.getState.Exit(fsm)
205
+ fsm.clearState
206
+ begin
207
+ ctxt.__transport_err()
208
+ ensure
209
+ fsm.setState(NictMap::Terminated)
210
+ fsm.getState.Entry(fsm)
211
+ end
212
+ end
213
+
214
+ end
215
+
216
+ class NictMap_Completed < NictMap_Default
217
+
218
+ def Entry(fsm)
219
+ ctxt = fsm.getOwner
220
+ ctxt.__start_K()
221
+ end
222
+
223
+ def final(fsm)
224
+ ctxt = fsm.getOwner
225
+ endState = fsm.getState
226
+ fsm.clearState
227
+ begin
228
+ ctxt.__consume_msg(false)
229
+ ensure
230
+ fsm.setState(endState)
231
+ end
232
+ end
233
+
234
+ def timer_K(fsm)
235
+ fsm.getState.Exit(fsm)
236
+ fsm.setState(NictMap::Terminated)
237
+ fsm.getState.Entry(fsm)
238
+ end
239
+
240
+ end
241
+
242
+ class NictMap_Terminated < NictMap_Default
243
+
244
+ def Entry(fsm)
245
+ ctxt = fsm.getOwner
246
+ ctxt.__cleanup()
247
+ end
248
+
249
+ end
250
+
251
+ module NictMap
252
+
253
+ Initial = NictMap_Initial::new('NictMap.Initial', 0).freeze
254
+ Trying = NictMap_Trying::new('NictMap.Trying', 1).freeze
255
+ Proceeding = NictMap_Proceeding::new('NictMap.Proceeding', 2).freeze
256
+ Completed = NictMap_Completed::new('NictMap.Completed', 3).freeze
257
+ Terminated = NictMap_Terminated::new('NictMap.Terminated', 4).freeze
258
+ Default = NictMap_Default::new('NictMap.Default', -1).freeze
259
+
260
+ end
261
+
262
+ class Nict_sm < Statemap::FSMContext
263
+
264
+ def initialize(owner)
265
+ super()
266
+ @_owner = owner
267
+ setState(NictMap::Initial)
268
+ NictMap::Initial.Entry(self)
269
+ end
270
+
271
+ def final()
272
+ @_transition = 'final'
273
+ getState.final(self)
274
+ @_transition = nil
275
+ end
276
+
277
+ def provisional()
278
+ @_transition = 'provisional'
279
+ getState.provisional(self)
280
+ @_transition = nil
281
+ end
282
+
283
+ def request()
284
+ @_transition = 'request'
285
+ getState.request(self)
286
+ @_transition = nil
287
+ end
288
+
289
+ def timer_E(*arglist)
290
+ @_transition = 'timer_E'
291
+ getState.timer_E(self, *arglist)
292
+ @_transition = nil
293
+ end
294
+
295
+ def timer_F()
296
+ @_transition = 'timer_F'
297
+ getState.timer_F(self)
298
+ @_transition = nil
299
+ end
300
+
301
+ def timer_K()
302
+ @_transition = 'timer_K'
303
+ getState.timer_K(self)
304
+ @_transition = nil
305
+ end
306
+
307
+ def transport_err()
308
+ @_transition = 'transport_err'
309
+ getState.transport_err(self)
310
+ @_transition = nil
311
+ end
312
+
313
+ def getState()
314
+ if @_state.nil? then
315
+ raise Statemap::StateUndefinedException
316
+ end
317
+ return @_state
318
+ end
319
+
320
+ def getOwner()
321
+ return @_owner
322
+ end
323
+
324
+ end
325
+
@@ -0,0 +1,59 @@
1
+ // Non Invite Server Transaction. Section 17.2.2
2
+
3
+ %class Nist
4
+
5
+ %start NistMap::Initial
6
+
7
+ %map NistMap
8
+
9
+ %%
10
+ // The two transitions from Initial state for cancel are basically valid if this NIST is for CANCEL.
11
+ // cancel_with_st is called if there is an existing STx that is being canceled and a 200/CANCEL is required
12
+ // to be sent. cancel_with_no_st is called when no STx is found and so a 481/CANCEL is required to be
13
+ // sent.
14
+ Initial
15
+ {
16
+ request Trying { __consume_msg(true); } //i
17
+ cancel_with_st(r: resp) Completed { __send_final_response(r); __consume_msg(true); } //i for sending 2xx
18
+ cancel_with_no_st(r: resp) Completed { __send_final_response(r); __consume_msg(false); } //i for sending 481
19
+ }
20
+
21
+
22
+ Trying
23
+ {
24
+ request nil { __consume_msg(false); } // i
25
+ provisional(r: resp) Proceeding { __send_provisional_response(r); } //o
26
+ final(r: resp) Completed { __send_final_response(r); } //o
27
+ transport_err Terminated { __transport_err(); } // even though not mentioned in RFC
28
+ }
29
+
30
+
31
+
32
+ Proceeding
33
+ {
34
+ provisional(r: resp) nil { __send_provisional_response(r); } //o
35
+ request nil { __send_last_response(); __consume_msg(false); } //i
36
+ final(r: resp) Completed { __send_final_response(r); } //o
37
+ transport_err Terminated { __transport_err(); }
38
+ }
39
+
40
+
41
+ Completed
42
+ Entry { __start_J(); }
43
+ Exit { __cancel_J(); }
44
+ {
45
+ request nil { __send_last_response(); __consume_msg(false); } //i
46
+ cancel_with_st(r: resp) nil { __send_last_response(); __consume_msg(false); } //i for sending 2xx
47
+ cancel_with_no_st(r: resp) nil { __send_last_response(); __consume_msg(false); } //i for sending 481
48
+ final(r: resp) nil { } //o discard
49
+ timer_J Terminated { __timeout(); }
50
+ transport_err Terminated { __transport_err(); }
51
+ }
52
+
53
+
54
+ Terminated
55
+ Entry { __cleanup(); }
56
+ {
57
+ }
58
+
59
+ %%
@@ -0,0 +1,356 @@
1
+ # DO NOT EDIT.
2
+ # generated by smc (http://smc.sourceforge.net/)
3
+ # from file : Nist.sm
4
+
5
+ require 'statemap'
6
+
7
+ class NistState < Statemap::State
8
+
9
+ def Entry(fsm) end
10
+
11
+ def Exit(fsm) end
12
+
13
+ def cancel_with_no_st(fsm, r)
14
+ Default(fsm)
15
+ end
16
+
17
+ def cancel_with_st(fsm, r)
18
+ Default(fsm)
19
+ end
20
+
21
+ def final(fsm, r)
22
+ Default(fsm)
23
+ end
24
+
25
+ def provisional(fsm, r)
26
+ Default(fsm)
27
+ end
28
+
29
+ def request(fsm)
30
+ Default(fsm)
31
+ end
32
+
33
+ def timer_J(fsm)
34
+ Default(fsm)
35
+ end
36
+
37
+ def transport_err(fsm)
38
+ Default(fsm)
39
+ end
40
+
41
+ def Default(fsm)
42
+ msg = "\nState: " + fsm.getState.getName +
43
+ "\nTransition: " + fsm.getTransition + "\n"
44
+ raise Statemap::TransitionUndefinedException, msg
45
+ end
46
+
47
+ end
48
+
49
+ class NistMap_Default < NistState
50
+
51
+ end
52
+
53
+ class NistMap_Initial < NistMap_Default
54
+
55
+ def cancel_with_no_st(fsm, r)
56
+ ctxt = fsm.getOwner
57
+ fsm.getState.Exit(fsm)
58
+ fsm.clearState
59
+ begin
60
+ ctxt.__send_final_response(r)
61
+ ctxt.__consume_msg(false)
62
+ ensure
63
+ fsm.setState(NistMap::Completed)
64
+ fsm.getState.Entry(fsm)
65
+ end
66
+ end
67
+
68
+ def cancel_with_st(fsm, r)
69
+ ctxt = fsm.getOwner
70
+ fsm.getState.Exit(fsm)
71
+ fsm.clearState
72
+ begin
73
+ ctxt.__send_final_response(r)
74
+ ctxt.__consume_msg(true)
75
+ ensure
76
+ fsm.setState(NistMap::Completed)
77
+ fsm.getState.Entry(fsm)
78
+ end
79
+ end
80
+
81
+ def request(fsm)
82
+ ctxt = fsm.getOwner
83
+ fsm.getState.Exit(fsm)
84
+ fsm.clearState
85
+ begin
86
+ ctxt.__consume_msg(true)
87
+ ensure
88
+ fsm.setState(NistMap::Trying)
89
+ fsm.getState.Entry(fsm)
90
+ end
91
+ end
92
+
93
+ end
94
+
95
+ class NistMap_Trying < NistMap_Default
96
+
97
+ def final(fsm, r)
98
+ ctxt = fsm.getOwner
99
+ fsm.getState.Exit(fsm)
100
+ fsm.clearState
101
+ begin
102
+ ctxt.__send_final_response(r)
103
+ ensure
104
+ fsm.setState(NistMap::Completed)
105
+ fsm.getState.Entry(fsm)
106
+ end
107
+ end
108
+
109
+ def provisional(fsm, r)
110
+ ctxt = fsm.getOwner
111
+ fsm.getState.Exit(fsm)
112
+ fsm.clearState
113
+ begin
114
+ ctxt.__send_provisional_response(r)
115
+ ensure
116
+ fsm.setState(NistMap::Proceeding)
117
+ fsm.getState.Entry(fsm)
118
+ end
119
+ end
120
+
121
+ def request(fsm)
122
+ ctxt = fsm.getOwner
123
+ endState = fsm.getState
124
+ fsm.clearState
125
+ begin
126
+ ctxt.__consume_msg(false)
127
+ ensure
128
+ fsm.setState(endState)
129
+ end
130
+ end
131
+
132
+ def transport_err(fsm)
133
+ ctxt = fsm.getOwner
134
+ fsm.getState.Exit(fsm)
135
+ fsm.clearState
136
+ begin
137
+ ctxt.__transport_err()
138
+ ensure
139
+ fsm.setState(NistMap::Terminated)
140
+ fsm.getState.Entry(fsm)
141
+ end
142
+ end
143
+
144
+ end
145
+
146
+ class NistMap_Proceeding < NistMap_Default
147
+
148
+ def final(fsm, r)
149
+ ctxt = fsm.getOwner
150
+ fsm.getState.Exit(fsm)
151
+ fsm.clearState
152
+ begin
153
+ ctxt.__send_final_response(r)
154
+ ensure
155
+ fsm.setState(NistMap::Completed)
156
+ fsm.getState.Entry(fsm)
157
+ end
158
+ end
159
+
160
+ def provisional(fsm, r)
161
+ ctxt = fsm.getOwner
162
+ endState = fsm.getState
163
+ fsm.clearState
164
+ begin
165
+ ctxt.__send_provisional_response(r)
166
+ ensure
167
+ fsm.setState(endState)
168
+ end
169
+ end
170
+
171
+ def request(fsm)
172
+ ctxt = fsm.getOwner
173
+ endState = fsm.getState
174
+ fsm.clearState
175
+ begin
176
+ ctxt.__send_last_response()
177
+ ctxt.__consume_msg(false)
178
+ ensure
179
+ fsm.setState(endState)
180
+ end
181
+ end
182
+
183
+ def transport_err(fsm)
184
+ ctxt = fsm.getOwner
185
+ fsm.getState.Exit(fsm)
186
+ fsm.clearState
187
+ begin
188
+ ctxt.__transport_err()
189
+ ensure
190
+ fsm.setState(NistMap::Terminated)
191
+ fsm.getState.Entry(fsm)
192
+ end
193
+ end
194
+
195
+ end
196
+
197
+ class NistMap_Completed < NistMap_Default
198
+
199
+ def Entry(fsm)
200
+ ctxt = fsm.getOwner
201
+ ctxt.__start_J()
202
+ end
203
+
204
+ def Exit(fsm)
205
+ ctxt = fsm.getOwner
206
+ ctxt.__cancel_J()
207
+ end
208
+
209
+ def cancel_with_no_st(fsm, r)
210
+ ctxt = fsm.getOwner
211
+ endState = fsm.getState
212
+ fsm.clearState
213
+ begin
214
+ ctxt.__send_last_response()
215
+ ctxt.__consume_msg(false)
216
+ ensure
217
+ fsm.setState(endState)
218
+ end
219
+ end
220
+
221
+ def cancel_with_st(fsm, r)
222
+ ctxt = fsm.getOwner
223
+ endState = fsm.getState
224
+ fsm.clearState
225
+ begin
226
+ ctxt.__send_last_response()
227
+ ctxt.__consume_msg(false)
228
+ ensure
229
+ fsm.setState(endState)
230
+ end
231
+ end
232
+
233
+ def final(fsm, r)
234
+ end
235
+
236
+ def request(fsm)
237
+ ctxt = fsm.getOwner
238
+ endState = fsm.getState
239
+ fsm.clearState
240
+ begin
241
+ ctxt.__send_last_response()
242
+ ctxt.__consume_msg(false)
243
+ ensure
244
+ fsm.setState(endState)
245
+ end
246
+ end
247
+
248
+ def timer_J(fsm)
249
+ ctxt = fsm.getOwner
250
+ fsm.getState.Exit(fsm)
251
+ fsm.clearState
252
+ begin
253
+ ctxt.__timeout()
254
+ ensure
255
+ fsm.setState(NistMap::Terminated)
256
+ fsm.getState.Entry(fsm)
257
+ end
258
+ end
259
+
260
+ def transport_err(fsm)
261
+ ctxt = fsm.getOwner
262
+ fsm.getState.Exit(fsm)
263
+ fsm.clearState
264
+ begin
265
+ ctxt.__transport_err()
266
+ ensure
267
+ fsm.setState(NistMap::Terminated)
268
+ fsm.getState.Entry(fsm)
269
+ end
270
+ end
271
+
272
+ end
273
+
274
+ class NistMap_Terminated < NistMap_Default
275
+
276
+ def Entry(fsm)
277
+ ctxt = fsm.getOwner
278
+ ctxt.__cleanup()
279
+ end
280
+
281
+ end
282
+
283
+ module NistMap
284
+
285
+ Initial = NistMap_Initial::new('NistMap.Initial', 0).freeze
286
+ Trying = NistMap_Trying::new('NistMap.Trying', 1).freeze
287
+ Proceeding = NistMap_Proceeding::new('NistMap.Proceeding', 2).freeze
288
+ Completed = NistMap_Completed::new('NistMap.Completed', 3).freeze
289
+ Terminated = NistMap_Terminated::new('NistMap.Terminated', 4).freeze
290
+ Default = NistMap_Default::new('NistMap.Default', -1).freeze
291
+
292
+ end
293
+
294
+ class Nist_sm < Statemap::FSMContext
295
+
296
+ def initialize(owner)
297
+ super()
298
+ @_owner = owner
299
+ setState(NistMap::Initial)
300
+ NistMap::Initial.Entry(self)
301
+ end
302
+
303
+ def cancel_with_no_st(*arglist)
304
+ @_transition = 'cancel_with_no_st'
305
+ getState.cancel_with_no_st(self, *arglist)
306
+ @_transition = nil
307
+ end
308
+
309
+ def cancel_with_st(*arglist)
310
+ @_transition = 'cancel_with_st'
311
+ getState.cancel_with_st(self, *arglist)
312
+ @_transition = nil
313
+ end
314
+
315
+ def final(*arglist)
316
+ @_transition = 'final'
317
+ getState.final(self, *arglist)
318
+ @_transition = nil
319
+ end
320
+
321
+ def provisional(*arglist)
322
+ @_transition = 'provisional'
323
+ getState.provisional(self, *arglist)
324
+ @_transition = nil
325
+ end
326
+
327
+ def request()
328
+ @_transition = 'request'
329
+ getState.request(self)
330
+ @_transition = nil
331
+ end
332
+
333
+ def timer_J()
334
+ @_transition = 'timer_J'
335
+ getState.timer_J(self)
336
+ @_transition = nil
337
+ end
338
+
339
+ def transport_err()
340
+ @_transition = 'transport_err'
341
+ getState.transport_err(self)
342
+ @_transition = nil
343
+ end
344
+
345
+ def getState()
346
+ if @_state.nil? then
347
+ raise Statemap::StateUndefinedException
348
+ end
349
+ return @_state
350
+ end
351
+
352
+ def getOwner()
353
+ return @_owner
354
+ end
355
+
356
+ end