sipfsm 0.2.0 → 0.2.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 (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/sipfsm.rb +24 -30
  3. metadata +30 -21
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: f144d93f509d24a49a95d3cff6f70e12196af6f2
4
+ data.tar.gz: be57d6f58d3508fc5f92a5abec50b46292e9cdcc
5
+ SHA512:
6
+ metadata.gz: 30fb284b3536325a2ec85417069d8c414d89d052daeac0533c8f30976b87069665bdf240968984cba66d27cb7bfa8b6702815ac5264b6c44cd7ca61e3167166e
7
+ data.tar.gz: ea144ebd378bfb6e2d239d6c36b0d03146afb98f1bb7c77384ceb6f20601b0d72f0cf8405a1a0c8195458fa51c9de555eae1cca5a151bd05efdceb4c4a5bd58a
data/lib/sipfsm.rb CHANGED
@@ -22,14 +22,15 @@ module SipFSMModule
22
22
 
23
23
  # Standard SIP servlet request dispatching
24
24
  # is overriden and modified to call the DSL event methods.
25
+ # However, if fsm not defined or fsm does not respond to the given SIP request, standard dispatching still works.
25
26
  def doRequest(request)
26
27
  m = request.get_method
27
28
  fsmm = "sip#{m}".to_sym
28
- run if !fsm_prepare_state([request, nil])
29
+ st = run(request)
29
30
 
30
- if fsm_state_responds_to? @state, fsmm
31
+ if fsm_state_responds_to? st, fsmm
31
32
  send(fsmm, request, nil)
32
- elsif fsm_state_responds_to? @state, :sipREQUEST_ANY
33
+ elsif fsm_state_responds_to? st, :sipREQUEST_ANY
33
34
  send(:sipREQUEST_ANY, request, nil)
34
35
  else
35
36
  super
@@ -40,18 +41,18 @@ module SipFSMModule
40
41
  # is overriden and modified to call the DSL event methods.
41
42
  def doResponse(response)
42
43
  m = response.get_status.to_s
43
- run if ! fsm_prepare_state([nil, response])
44
+ st = run(response)
44
45
 
45
46
  resp_exact = "sipRESPONSE_#{m}".to_sym
46
47
  resp_group = "sipRESPONSE_#{m[/./].to_s}xx".to_sym
47
48
 
48
- if fsm_state_responds_to? @state, resp_exact
49
+ if fsm_state_responds_to? st, resp_exact
49
50
  send(resp_exact, nil, response)
50
51
 
51
- elsif fsm_state_responds_to? @state, resp_group
52
+ elsif fsm_state_responds_to? st, resp_group
52
53
  send(resp_group, nil, response)
53
54
 
54
- elsif fsm_state_responds_to? @state, :sipRESPONSE_ANY
55
+ elsif fsm_state_responds_to? st, :sipRESPONSE_ANY
55
56
  send(:sipRESPONSE_ANY, nil, response)
56
57
 
57
58
  else
@@ -59,6 +60,7 @@ module SipFSMModule
59
60
  end
60
61
  end
61
62
 
63
+ # CLASS methods ------------------------------------------------------
62
64
  # creates and returns INVITE request
63
65
  def self.create_request(app_session, method, from, to)
64
66
  sip_factory = $servlet_context.get_attribute('javax.servlet.sip.SipFactory')
@@ -109,28 +111,25 @@ module SipFSMModule
109
111
  FSM_STATE_ATTR
110
112
  end
111
113
 
112
- def prepare_state_by_req msg
113
- fsm_prepare_state [msg, nil]
114
- end
115
-
116
114
  private
117
115
  ##### Overriden methods (for FSM) ###########################
118
116
 
119
117
  # Loading and saving application FSM state from application attribute
120
- def fsm_prepare_state msgs
121
- m = msgs[0] || msgs[1]
122
-
123
- @sip_session = m.get_session
124
- @app_session = m.get_application_session
125
- s = @app_session.get_attribute(FSM_STATE_ATTR)
126
- @state = s if s
127
- s
118
+
119
+ def current_state *sip_msg
120
+ sip_msg.flatten!
121
+ m = sip_msg[0] || sip_msg[1]
122
+ application_session(m).get_attribute(FSM_STATE_ATTR)
128
123
  end
129
124
 
125
+ def set_current_state st, *sip_msg
126
+ application_session(sip_msg).set_attribute(FSM_STATE_ATTR, st)
127
+ end
130
128
 
131
- def fsm_save_state request
132
- @app_session.set_attribute(FSM_STATE_ATTR, @state)
133
- @state
129
+ def application_session *sip_msg
130
+ sip_msg.flatten!
131
+ m = sip_msg[0] || sip_msg[1]
132
+ m.get_application_session
134
133
  end
135
134
 
136
135
  ####### Helper methods ###############
@@ -144,7 +143,7 @@ module SipFSMModule
144
143
  def method_missing(name, args)
145
144
  if name.to_s =~ /send_response_(.*)/
146
145
  args[0].create_response($1.to_i).send
147
- elsif name.to_s =~ /is_(.*)_request?/
146
+ elsif name.to_s =~ /is_(.*)\?/
148
147
  args[0].get_method == $1
149
148
  else
150
149
  super
@@ -167,12 +166,7 @@ module SipFSMModule
167
166
 
168
167
  # creates URI java object using SipFactory
169
168
  def create_uri(str_uri)
170
- if @sip_session
171
- sipURI = @sip_session.get_servlet_context.get_attribute('javax.servlet.sip.SipFactory').create_uri('sip:' + str_uri)
172
- sipURI
173
- else
174
- nil
175
- end
169
+ sip_factory.create_uri('sip:' + str_uri)
176
170
  end
177
171
 
178
172
  def get_from_user_address_port(msg)
@@ -221,7 +215,7 @@ module SipFSMModule
221
215
 
222
216
  def is_UNREGISTER?(args)
223
217
  request = args[0]
224
- return false unless is_REGISTER_request?(args)
218
+ return false unless is_REGISTER?(args)
225
219
 
226
220
  exp = request.get_header('Expires')
227
221
  if !exp
metadata CHANGED
@@ -1,34 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sipfsm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.2.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Edin Pjanic
9
8
  - Amer Hasanovic
10
- autorequire:
9
+ autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-03-25 00:00:00.000000000 Z
12
+ date: 2017-04-17 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: simplefsm
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 0.2.3
21
+ type: :runtime
22
+ prerelease: false
17
23
  version_requirements: !ruby/object:Gem::Requirement
18
24
  requirements:
19
25
  - - "~>"
20
26
  - !ruby/object:Gem::Version
21
- version: '0.1'
22
- none: false
27
+ version: 0.2.3
28
+ - !ruby/object:Gem::Dependency
29
+ name: jrubycipango
23
30
  requirement: !ruby/object:Gem::Requirement
24
31
  requirements:
25
32
  - - "~>"
26
33
  - !ruby/object:Gem::Version
27
- version: '0.1'
28
- none: false
29
- prerelease: false
34
+ version: 0.2.11
30
35
  type: :runtime
31
- description: SIP application development in Ruby using SimpleFSM, a simple and lightweight domain specific language (DSL).
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 0.2.11
42
+ description: SIP application development in Ruby using SimpleFSM, a simple and lightweight
43
+ domain specific language (DSL).
32
44
  email:
33
45
  - edin@ictlab.com.ba
34
46
  - amer@ictlab.com.ba
@@ -39,7 +51,8 @@ files:
39
51
  - lib/sipfsm.rb
40
52
  homepage: http://github.com/edictlab/SipFSM
41
53
  licenses: []
42
- post_install_message:
54
+ metadata: {}
55
+ post_install_message:
43
56
  rdoc_options: []
44
57
  require_paths:
45
58
  - lib
@@ -47,20 +60,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
47
60
  requirements:
48
61
  - - ">="
49
62
  - !ruby/object:Gem::Version
50
- version: !binary |-
51
- MA==
52
- none: false
63
+ version: '0'
53
64
  required_rubygems_version: !ruby/object:Gem::Requirement
54
65
  requirements:
55
66
  - - ">="
56
67
  - !ruby/object:Gem::Version
57
- version: !binary |-
58
- MA==
59
- none: false
68
+ version: '0'
60
69
  requirements: []
61
- rubyforge_project:
62
- rubygems_version: 1.8.24
63
- signing_key:
64
- specification_version: 3
70
+ rubyforge_project:
71
+ rubygems_version: 2.5.1
72
+ signing_key:
73
+ specification_version: 4
65
74
  summary: SipFSM - SIP application development in Ruby
66
75
  test_files: []