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.
- checksums.yaml +7 -0
- data/lib/sipfsm.rb +24 -30
- 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
|
-
|
29
|
+
st = run(request)
|
29
30
|
|
30
|
-
if fsm_state_responds_to?
|
31
|
+
if fsm_state_responds_to? st, fsmm
|
31
32
|
send(fsmm, request, nil)
|
32
|
-
elsif fsm_state_responds_to?
|
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
|
-
|
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?
|
49
|
+
if fsm_state_responds_to? st, resp_exact
|
49
50
|
send(resp_exact, nil, response)
|
50
51
|
|
51
|
-
elsif fsm_state_responds_to?
|
52
|
+
elsif fsm_state_responds_to? st, resp_group
|
52
53
|
send(resp_group, nil, response)
|
53
54
|
|
54
|
-
elsif fsm_state_responds_to?
|
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
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
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
|
132
|
-
|
133
|
-
|
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_(.*)
|
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
|
-
|
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
|
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.
|
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:
|
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:
|
22
|
-
|
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:
|
28
|
-
none: false
|
29
|
-
prerelease: false
|
34
|
+
version: 0.2.11
|
30
35
|
type: :runtime
|
31
|
-
|
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
|
-
|
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:
|
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:
|
58
|
-
MA==
|
59
|
-
none: false
|
68
|
+
version: '0'
|
60
69
|
requirements: []
|
61
|
-
rubyforge_project:
|
62
|
-
rubygems_version:
|
63
|
-
signing_key:
|
64
|
-
specification_version:
|
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: []
|