sipfsm 0.2.0 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
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: []