ruby_rabbitmq_janus 2.0.0 → 2.1.0.pre.128
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -3
- data/Rakefile +98 -0
- data/config/default.md +6 -3
- data/config/default.yml +7 -1
- data/lib/generators/ruby_rabbitmq_janus/install_generator.rb +3 -0
- data/lib/generators/ruby_rabbitmq_janus/migration_generator.rb +30 -0
- data/lib/generators/ruby_rabbitmq_janus/templates/migration.rb +14 -0
- data/lib/rrj/admin.rb +2 -0
- data/lib/rrj/errors/base/admin.rb +24 -0
- data/lib/rrj/errors/base/base.rb +5 -0
- data/lib/rrj/errors/base/init.rb +46 -0
- data/lib/rrj/errors/base/task.rb +32 -0
- data/lib/rrj/errors/error.rb +4 -3
- data/lib/rrj/errors/janus/janus.rb +20 -7
- data/lib/rrj/errors/janus/messages/admin.rb +33 -0
- data/lib/rrj/errors/janus/messages/message.rb +51 -0
- data/lib/rrj/errors/janus/messages/standard.rb +33 -0
- data/lib/rrj/errors/janus/processus/concurency.rb +23 -0
- data/lib/rrj/errors/janus/processus/event.rb +30 -0
- data/lib/rrj/errors/janus/processus/keepalive.rb +33 -0
- data/lib/rrj/errors/janus/responses/admin.rb +39 -0
- data/lib/rrj/errors/janus/responses/event.rb +46 -0
- data/lib/rrj/errors/janus/responses/response.rb +44 -0
- data/lib/rrj/errors/janus/responses/standard.rb +58 -0
- data/lib/rrj/errors/janus/transactions/admin.rb +37 -0
- data/lib/rrj/errors/janus/transactions/handle.rb +52 -0
- data/lib/rrj/errors/janus/transactions/session.rb +38 -0
- data/lib/rrj/errors/janus/transactions/transaction.rb +23 -0
- data/lib/rrj/errors/rabbit/connect.rb +58 -0
- data/lib/rrj/errors/rabbit/propertie.rb +37 -0
- data/lib/rrj/errors/rabbit/publish/admin.rb +30 -0
- data/lib/rrj/errors/rabbit/publish/base_publisher.rb +23 -0
- data/lib/rrj/errors/rabbit/publish/exclusive.rb +31 -0
- data/lib/rrj/errors/rabbit/publish/listener.rb +30 -0
- data/lib/rrj/errors/rabbit/publish/non_exclusive.rb +31 -0
- data/lib/rrj/errors/rabbit/publish/publisher.rb +30 -0
- data/lib/rrj/errors/rabbit/rabbit.rb +14 -23
- data/lib/rrj/errors/tools/gem/cluster.rb +44 -0
- data/lib/rrj/errors/tools/gem/config.rb +89 -0
- data/lib/rrj/errors/tools/gem/log.rb +86 -0
- data/lib/rrj/errors/tools/gem/option.rb +37 -0
- data/lib/rrj/errors/tools/gem/request.rb +23 -0
- data/lib/rrj/errors/tools/replaces/replace.rb +30 -0
- data/lib/rrj/errors/tools/replaces/type.rb +30 -0
- data/lib/rrj/errors/tools/tools.rb +21 -1
- data/lib/rrj/info.rb +1 -1
- data/lib/rrj/init.rb +22 -4
- data/lib/rrj/janus/messages/admin.rb +9 -4
- data/lib/rrj/janus/messages/message.rb +20 -9
- data/lib/rrj/janus/messages/standard.rb +8 -2
- data/lib/rrj/janus/processus/concurrency.rb +2 -0
- data/lib/rrj/janus/processus/event.rb +8 -0
- data/lib/rrj/janus/processus/keepalive.rb +15 -23
- data/lib/rrj/janus/responses/admin.rb +6 -0
- data/lib/rrj/janus/responses/event.rb +8 -0
- data/lib/rrj/janus/responses/response.rb +8 -11
- data/lib/rrj/janus/responses/standard.rb +12 -0
- data/lib/rrj/janus/transactions/admin.rb +6 -0
- data/lib/rrj/janus/transactions/handle.rb +25 -3
- data/lib/rrj/janus/transactions/session.rb +6 -0
- data/lib/rrj/janus/transactions/transaction.rb +3 -9
- data/lib/rrj/models/active_record.rb +14 -0
- data/lib/rrj/models/concerns/janus_instance_concern.rb +47 -0
- data/lib/rrj/models/mongoid.rb +19 -0
- data/lib/rrj/rabbit/connect.rb +12 -8
- data/lib/rrj/rabbit/propertie.rb +23 -6
- data/lib/rrj/rabbit/publish/admin.rb +4 -0
- data/lib/rrj/rabbit/publish/base_publisher.rb +2 -1
- data/lib/rrj/rabbit/publish/exclusive.rb +4 -0
- data/lib/rrj/rabbit/publish/listener.rb +6 -0
- data/lib/rrj/rabbit/publish/non_exclusive.rb +4 -0
- data/lib/rrj/rabbit/publish/publisher.rb +4 -4
- data/lib/rrj/railtie.rb +15 -0
- data/lib/rrj/task.rb +51 -0
- data/lib/rrj/tools/gem/cluster.rb +65 -0
- data/lib/rrj/tools/gem/config.rb +38 -6
- data/lib/rrj/tools/gem/log.rb +24 -4
- data/lib/rrj/tools/gem/option.rb +21 -17
- data/lib/rrj/tools/gem/requests.rb +11 -7
- data/lib/rrj/tools/replaces/replace.rb +4 -0
- data/lib/rrj/tools/replaces/type.rb +4 -0
- data/lib/rrj/tools/tools.rb +1 -0
- data/lib/ruby_rabbitmq_janus.rb +3 -0
- data/lib/tasks/delete_all_instance.rake +12 -0
- data/spec/request/admin/request_handle_info_spec.rb +4 -3
- data/spec/request/admin/request_handles_spec.rb +4 -3
- data/spec/request/peer/request_trickle_spec.rb +1 -1
- data/spec/rrj/rabbit/propertie_spec.rb +37 -2
- data/spec/rrj/tools/gem/rrj_cluster_spec.rb +26 -0
- data/spec/rrj/tools/gem/rrj_config_spec.rb +78 -0
- data/spec/rrj/tools/gem/rrj_log_spec.rb +55 -0
- data/spec/rrj/tools/{replace_admin_spec.rb → replace/replace_admin_spec.rb} +0 -0
- data/spec/rrj/tools/{replace_handle_spec.rb → replace/replace_handle_spec.rb} +0 -0
- data/spec/rrj/tools/{replace_session_spec.rb → replace/replace_session_spec.rb} +0 -0
- data/spec/rrj/tools/{replace_spec.rb → replace/replace_spec.rb} +0 -0
- data/spec/rrj/tools/{type_spec.rb → replace/type_spec.rb} +0 -0
- data/spec/spec_helper.rb +33 -2
- data/spec/support/examples_config.rb +10 -0
- data/spec/support/examples_message.rb +0 -2
- data/spec/support/examples_request.rb +4 -4
- data/spec/support/schemas/config/config.json +4 -2
- data/spec/support/schemas/config/rabbit_options.json +1 -1
- data/spec/support/schemas/config/rabbit_options2.json +13 -0
- data/spec/support/schemas/config/rabbit_options_admin.json +1 -1
- data/spec/support/schemas/config/rabbit_options_admin2.json +13 -0
- metadata +98 -17
- data/lib/rrj/errors/init.rb +0 -69
- data/lib/rrj/errors/janus/janus_message.rb +0 -53
- data/lib/rrj/errors/janus/janus_processus_keepalive.rb +0 -48
- data/lib/rrj/errors/janus/janus_response.rb +0 -89
- data/lib/rrj/errors/janus/janus_transaction.rb +0 -29
- data/lib/rrj/errors/tools/config.rb +0 -43
- data/spec/rrj/rrj_config_spec.rb +0 -67
- data/spec/rrj/rrj_log_spec.rb +0 -16
@@ -12,19 +12,20 @@ module RubyRabbitmqJanus
|
|
12
12
|
#
|
13
13
|
# @see https://ruby-doc.org/stdlib-2.4.0/libdoc/singleton/rdoc/Singleton.html
|
14
14
|
class Keepalive < Concurrency
|
15
|
-
include Singleton
|
16
|
-
|
17
15
|
# Initialize a singleton object for sending keepalive to janus
|
18
|
-
def initialize
|
16
|
+
def initialize(instance)
|
19
17
|
@pub = @session = nil
|
20
|
-
|
18
|
+
@instance = instance
|
19
|
+
super()
|
20
|
+
rescue
|
21
|
+
raise Errors::Janus::Keepalive::Initializer
|
21
22
|
end
|
22
23
|
|
23
24
|
# Give a session Integer created when this gem is intanciate.
|
24
25
|
# Is waiting a thread return a response to message created sending.
|
25
26
|
#
|
26
27
|
# @example Ask session
|
27
|
-
# Keepalive.
|
28
|
+
# Keepalive.session
|
28
29
|
# => 852803383803249
|
29
30
|
#
|
30
31
|
# @return [Fixnum] Identifier to session created by Janus
|
@@ -33,23 +34,15 @@ module RubyRabbitmqJanus
|
|
33
34
|
condition.wait(lock)
|
34
35
|
@session
|
35
36
|
end
|
37
|
+
rescue
|
38
|
+
raise Errors::Janus::Keepalive::Session
|
36
39
|
end
|
37
40
|
|
38
41
|
private
|
39
42
|
|
40
43
|
def transaction_running
|
41
44
|
@session = find_session
|
42
|
-
synchronize
|
43
|
-
create_loop_session
|
44
|
-
rescue => error
|
45
|
-
raise Errors::KeepaliveLoopSession, error
|
46
|
-
end
|
47
|
-
|
48
|
-
def synchronize
|
49
45
|
lock.synchronize { condition.signal }
|
50
|
-
end
|
51
|
-
|
52
|
-
def create_loop_session
|
53
46
|
loop { loop_session(Tools::Config.instance.ttl) }
|
54
47
|
end
|
55
48
|
|
@@ -57,29 +50,28 @@ module RubyRabbitmqJanus
|
|
57
50
|
sleep time_to_live
|
58
51
|
@pub.publish(message_keepalive)
|
59
52
|
Tools::Log.instance.info "Keepalive for #{@session}"
|
60
|
-
rescue => error
|
61
|
-
raise Errors::KeepaliveMessage, error
|
62
53
|
end
|
63
54
|
|
64
55
|
def create_session
|
65
56
|
@pub = Rabbit::Publisher::PublishExclusive.new(rabbit.channel, '')
|
66
|
-
|
67
|
-
|
68
|
-
raise Errors::KeepaliveCreateSession, error
|
57
|
+
msg = Janus::Messages::Standard.new('base::create', param_instance)
|
58
|
+
@pub.publish(msg)
|
69
59
|
end
|
70
60
|
|
71
61
|
def message_keepalive
|
72
62
|
Janus::Messages::Standard.new('base::keepalive', param_session)
|
73
|
-
rescue => error
|
74
|
-
raise Errors::KeepaliveMessage, error
|
75
63
|
end
|
76
64
|
|
77
65
|
def find_session
|
78
66
|
Janus::Responses::Standard.new(create_session).session
|
79
67
|
end
|
80
68
|
|
69
|
+
def param_instance
|
70
|
+
{ 'instance' => @instance }
|
71
|
+
end
|
72
|
+
|
81
73
|
def param_session
|
82
|
-
{ 'session_id' => @session }
|
74
|
+
{ 'session_id' => @session }.merge(param_instance)
|
83
75
|
end
|
84
76
|
end
|
85
77
|
end
|
@@ -10,6 +10,8 @@ module RubyRabbitmqJanus
|
|
10
10
|
# @return [Array] List of sessions
|
11
11
|
def sessions
|
12
12
|
request['sessions']
|
13
|
+
rescue
|
14
|
+
raise Errors::Janus::ResponseAdmin::Sessions
|
13
15
|
end
|
14
16
|
|
15
17
|
# List of handles running in one session in Janus Instance.
|
@@ -17,6 +19,8 @@ module RubyRabbitmqJanus
|
|
17
19
|
# @return [Array] List of handles
|
18
20
|
def handles
|
19
21
|
request['handles']
|
22
|
+
rescue
|
23
|
+
raise Errors::Janus::ResponseAdmin::Handles
|
20
24
|
end
|
21
25
|
|
22
26
|
# Info to session or handle in Janus Instance
|
@@ -24,6 +28,8 @@ module RubyRabbitmqJanus
|
|
24
28
|
# @return [Hash] Information to session/handle
|
25
29
|
def info
|
26
30
|
request['info']
|
31
|
+
rescue
|
32
|
+
raise Errors::Janus::ResponseAdmin::Info
|
27
33
|
end
|
28
34
|
end
|
29
35
|
end
|
@@ -14,6 +14,8 @@ module RubyRabbitmqJanus
|
|
14
14
|
# @return [String] result to request
|
15
15
|
def event
|
16
16
|
request['janus']
|
17
|
+
rescue
|
18
|
+
raise Errors::Janus::ResponseEvent::Event
|
17
19
|
end
|
18
20
|
|
19
21
|
# Read plugindata data
|
@@ -24,6 +26,8 @@ module RubyRabbitmqJanus
|
|
24
26
|
# @return [Hash] body data
|
25
27
|
def data
|
26
28
|
request['plugindata']['data'] if plugin_response?
|
29
|
+
rescue
|
30
|
+
raise Errors::Janus::ResponseEvent::Data
|
27
31
|
end
|
28
32
|
|
29
33
|
# Read jsep data
|
@@ -34,6 +38,8 @@ module RubyRabbitmqJanus
|
|
34
38
|
# @return [Hash] jsep data
|
35
39
|
def jsep
|
36
40
|
request['jsep'] if contains_jsep?
|
41
|
+
rescue
|
42
|
+
raise Errors::Janus::ResponseEvent::Jsep
|
37
43
|
end
|
38
44
|
|
39
45
|
# session_id and handle_id
|
@@ -44,6 +50,8 @@ module RubyRabbitmqJanus
|
|
44
50
|
# @return [Array] Contains session_id and handle_id
|
45
51
|
def keys
|
46
52
|
[request['session_id'], request['sender']]
|
53
|
+
rescue
|
54
|
+
raise Errors::Janus::ResponseEvent::Keys
|
47
55
|
end
|
48
56
|
|
49
57
|
private
|
@@ -18,11 +18,8 @@ module RubyRabbitmqJanus
|
|
18
18
|
# sending by user
|
19
19
|
def initialize(response_janus)
|
20
20
|
@request = response_janus
|
21
|
-
rescue
|
22
|
-
|
23
|
-
raise Errors::JanusResponseInit, error
|
24
|
-
else
|
25
|
-
Tools::Log.instance.debug "Response return : #{to_json}"
|
21
|
+
rescue
|
22
|
+
raise Errors::Janus::Response::Initializer
|
26
23
|
end
|
27
24
|
|
28
25
|
# Return request to json format
|
@@ -30,8 +27,8 @@ module RubyRabbitmqJanus
|
|
30
27
|
# @return [String] Response to JSON format
|
31
28
|
def to_json
|
32
29
|
@request.to_json
|
33
|
-
rescue
|
34
|
-
raise Errors::
|
30
|
+
rescue
|
31
|
+
raise Errors::Janus::Response::ToJson
|
35
32
|
end
|
36
33
|
|
37
34
|
# Return request to json format with nice format
|
@@ -39,8 +36,8 @@ module RubyRabbitmqJanus
|
|
39
36
|
# @return [String] Response to JSON format with indent
|
40
37
|
def to_nice_json
|
41
38
|
JSON.pretty_generate to_hash
|
42
|
-
rescue
|
43
|
-
raise Errors::
|
39
|
+
rescue
|
40
|
+
raise Errors::Janus::Response::ToNiceJson
|
44
41
|
end
|
45
42
|
|
46
43
|
# Return request to hash format
|
@@ -48,8 +45,8 @@ module RubyRabbitmqJanus
|
|
48
45
|
# @return [Hash] Response to Hash foramt
|
49
46
|
def to_hash
|
50
47
|
@request
|
51
|
-
rescue
|
52
|
-
raise Errors::
|
48
|
+
rescue
|
49
|
+
raise Errors::Janus::Response::ToHash
|
53
50
|
end
|
54
51
|
|
55
52
|
private
|
@@ -9,6 +9,8 @@ module RubyRabbitmqJanus
|
|
9
9
|
# Return a integer to session
|
10
10
|
def session
|
11
11
|
data_id
|
12
|
+
rescue
|
13
|
+
raise Errors::Janus::ResponseStandard::Session
|
12
14
|
end
|
13
15
|
|
14
16
|
alias sender session
|
@@ -16,26 +18,36 @@ module RubyRabbitmqJanus
|
|
16
18
|
# Return session used in request
|
17
19
|
def session_id
|
18
20
|
request['session_id']
|
21
|
+
rescue
|
22
|
+
raise Errors::Janus::ResponseStandard::Session_id
|
19
23
|
end
|
20
24
|
|
21
25
|
# Read response for plugin request
|
22
26
|
def plugin
|
23
27
|
request['plugindata']
|
28
|
+
rescue
|
29
|
+
raise Errors::Janus::ResponseStandard::Plugin
|
24
30
|
end
|
25
31
|
|
26
32
|
# Read data response for plugin request
|
27
33
|
def plugin_data
|
28
34
|
plugin['data']
|
35
|
+
rescue
|
36
|
+
raise Errors::Janus::ResponseStandard::PluginData
|
29
37
|
end
|
30
38
|
|
31
39
|
# Read data response for normal request
|
32
40
|
def data
|
33
41
|
request['data']
|
42
|
+
rescue
|
43
|
+
raise Errors::Janus::ResponseStandard::Data
|
34
44
|
end
|
35
45
|
|
36
46
|
# Read SDP response
|
37
47
|
def sdp
|
38
48
|
request['jsep']['sdp']
|
49
|
+
rescue
|
50
|
+
raise Errors::Janus::ResponseStandard::SDP
|
39
51
|
end
|
40
52
|
|
41
53
|
private
|
@@ -9,6 +9,8 @@ module RubyRabbitmqJanus
|
|
9
9
|
class Admin < Session
|
10
10
|
def initialize(session)
|
11
11
|
super(true, session)
|
12
|
+
rescue
|
13
|
+
raise Errors::Janus::TransactionAdmin::Initialize
|
12
14
|
end
|
13
15
|
|
14
16
|
# Begin connection with RabbitMQ
|
@@ -17,6 +19,8 @@ module RubyRabbitmqJanus
|
|
17
19
|
@publisher = Rabbit::Publisher::PublisherAdmin.new(rabbit.channel)
|
18
20
|
yield
|
19
21
|
end
|
22
|
+
rescue
|
23
|
+
raise Errors::Janus::TransactionAdmin::Connect
|
20
24
|
end
|
21
25
|
|
22
26
|
# Write a message in queue in RabbitMQ
|
@@ -24,6 +28,8 @@ module RubyRabbitmqJanus
|
|
24
28
|
msg = Janus::Messages::Admin.new(type, opts.merge(options))
|
25
29
|
response = read_response(publisher.publish(msg))
|
26
30
|
Janus::Responses::Admin.new(response)
|
31
|
+
rescue
|
32
|
+
raise Errors::Janus::TransactionAdmin::PublishMessage
|
27
33
|
end
|
28
34
|
|
29
35
|
private
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# :reek:TooManyStatements
|
4
|
+
|
3
5
|
module RubyRabbitmqJanus
|
4
6
|
module Janus
|
5
7
|
module Transactions
|
@@ -11,10 +13,13 @@ module RubyRabbitmqJanus
|
|
11
13
|
#
|
12
14
|
# @param [Fixnum] session
|
13
15
|
# Use a session identifier for created message
|
14
|
-
def initialize(exclusive, session, handle = 0)
|
16
|
+
def initialize(exclusive, session, handle = 0, instance = 1)
|
15
17
|
super(session)
|
16
18
|
@exclusive = exclusive
|
17
19
|
@handle = handle
|
20
|
+
@instance = instance
|
21
|
+
rescue
|
22
|
+
raise Errors::Janus::TransactionHandle::Initialize
|
18
23
|
end
|
19
24
|
|
20
25
|
# Opening a long transaction with rabbitmq and is ending closing
|
@@ -30,6 +35,8 @@ module RubyRabbitmqJanus
|
|
30
35
|
yield
|
31
36
|
end
|
32
37
|
handle
|
38
|
+
rescue
|
39
|
+
raise Errors::Janus::TransactionHandle::Connect
|
33
40
|
end
|
34
41
|
|
35
42
|
# Publish an message in handle
|
@@ -39,23 +46,38 @@ module RubyRabbitmqJanus
|
|
39
46
|
#
|
40
47
|
# @return [Janus::Responses::Standard] Response to message sending
|
41
48
|
def publish_message(type, options = {})
|
42
|
-
msg = Janus::Messages::Standard.new(type,
|
49
|
+
msg = Janus::Messages::Standard.new(type, options.merge(opts))
|
43
50
|
response = read_response(publisher.publish(msg))
|
44
51
|
Janus::Responses::Standard.new(response)
|
52
|
+
rescue
|
53
|
+
raise Errors::Janus::TransactionHandle::PublishMessage
|
45
54
|
end
|
46
55
|
|
47
56
|
# Send a message detach
|
48
57
|
def detach
|
49
58
|
publisher.publish(Janus::Messages::Standard.new('base::detach', opts))
|
59
|
+
rescue
|
60
|
+
raise Errors::Janus::TransactionHandle::Detach
|
61
|
+
end
|
62
|
+
|
63
|
+
# Send a message detach and disable session for deleting in
|
64
|
+
# Janus Instance
|
65
|
+
def detach_for_deleting
|
66
|
+
detach
|
67
|
+
Models::JanusInstance.disable(opts['session_id'])
|
68
|
+
rescue
|
69
|
+
raise Errors::Janus::TransactionHandle::DetachForDeleting
|
50
70
|
end
|
51
71
|
|
52
72
|
private
|
53
73
|
|
54
74
|
def create_handle
|
55
75
|
Tools::Log.instance.info 'Create an handle'
|
56
|
-
opt = { 'session_id' => session }
|
76
|
+
opt = { 'session_id' => session, 'instance' => @instance }
|
57
77
|
msg = Janus::Messages::Standard.new('base::attach', opt)
|
78
|
+
Tools::Log.instance.info "Send message attach -- #{@handle}"
|
58
79
|
@handle = send_a_message_exclusive { msg }
|
80
|
+
Tools::Log.instance.info "Message attach is sending -- #{@handle}"
|
59
81
|
end
|
60
82
|
|
61
83
|
def send_a_message_exclusive
|
@@ -16,6 +16,8 @@ module RubyRabbitmqJanus
|
|
16
16
|
def initialize(exclusive, session)
|
17
17
|
super(session)
|
18
18
|
@exclusive = exclusive
|
19
|
+
rescue
|
20
|
+
raise Errors::Janus::TransactionSession::Initialize
|
19
21
|
end
|
20
22
|
|
21
23
|
# Opening a short transaction with rabbitmq and close when is ending
|
@@ -26,12 +28,16 @@ module RubyRabbitmqJanus
|
|
26
28
|
choose_queue
|
27
29
|
yield
|
28
30
|
end
|
31
|
+
rescue
|
32
|
+
raise Errors::Janus::TransactionSession::Connect
|
29
33
|
end
|
30
34
|
|
31
35
|
def publish_message(type, options = {})
|
32
36
|
msg = Janus::Messages::Standard.new(type, opts.merge!(options))
|
33
37
|
response = read_response(publisher.publish(msg))
|
34
38
|
Janus::Responses::Standard.new(response)
|
39
|
+
rescue
|
40
|
+
raise Errors::Janus::TransactionSession::PublishMessage
|
35
41
|
end
|
36
42
|
|
37
43
|
private
|
@@ -18,8 +18,8 @@ module RubyRabbitmqJanus
|
|
18
18
|
@rabbit = Rabbit::Connect.new
|
19
19
|
@session = session
|
20
20
|
@publisher = @exclusive = nil
|
21
|
-
rescue
|
22
|
-
raise Errors::
|
21
|
+
rescue
|
22
|
+
raise Errors::Janus::Transaction::Initialize
|
23
23
|
end
|
24
24
|
|
25
25
|
private
|
@@ -47,13 +47,7 @@ module RubyRabbitmqJanus
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def read_response(publish)
|
50
|
-
|
51
|
-
Tools::Log.instance.info '... and read a janus response'
|
52
|
-
publish
|
53
|
-
else
|
54
|
-
Tools::Log.instance.info '... and return an empty response'
|
55
|
-
{}
|
56
|
-
end
|
50
|
+
@exclusive ? publish : {}
|
57
51
|
end
|
58
52
|
end
|
59
53
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyRabbitmqJanus
|
4
|
+
module Models
|
5
|
+
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
6
|
+
#
|
7
|
+
# Store instance information for MongoID database
|
8
|
+
class JanusInstance < ::ActiveRecord::Base
|
9
|
+
include RubyRabbitmqJanus::Models::JanusInstanceConcern
|
10
|
+
|
11
|
+
before_destroy { destroy_before_action }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :reek:UtilityFunction
|
4
|
+
|
5
|
+
module RubyRabbitmqJanus
|
6
|
+
module Models
|
7
|
+
# Add method for JanusInstance model
|
8
|
+
module JanusInstanceConcern
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
# Send an action for destroying a session in Janus Gateway instance
|
12
|
+
def destroy_before_action
|
13
|
+
options = { 'session_id' => session, 'instance' => instance }
|
14
|
+
::RRJ.start_transaction(options) do |transaction|
|
15
|
+
transaction.publish_message('base::destroy', options)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Class methods for JanusInstance model
|
20
|
+
module ClassMethods
|
21
|
+
# Disable an instance
|
22
|
+
def disable(session_id)
|
23
|
+
JanusInstance.find_by(session: session_id).set(enable: false)
|
24
|
+
end
|
25
|
+
|
26
|
+
# Delete all instance disabled
|
27
|
+
def destroys
|
28
|
+
JanusInstance.where(enable: false).delete_all
|
29
|
+
end
|
30
|
+
|
31
|
+
# Search a record by instance number
|
32
|
+
def find_by_instance(instance_search)
|
33
|
+
JanusInstance.find_by(instance: instance_search)
|
34
|
+
rescue
|
35
|
+
false
|
36
|
+
end
|
37
|
+
|
38
|
+
# Search a record by session number
|
39
|
+
def find_by_session(session_search)
|
40
|
+
JanusInstance.find_by(session: session_search)
|
41
|
+
rescue
|
42
|
+
nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|