ruby_rabbitmq_janus 1.1.12 → 1.2.0
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 +4 -4
- data/README.md +127 -0
- data/Rakefile +1 -3
- data/config/default.md +14 -14
- data/config/default.yml +12 -18
- data/config/requests.md +80 -0
- data/config/requests/{channel → peer}/answer.json +1 -1
- data/config/requests/{channel → peer}/offer.json +0 -0
- data/lib/generators/ruby_rabbitmq_janus/install_generator.rb +1 -0
- data/lib/rrj/errors/config.rb +8 -1
- data/lib/rrj/errors/error.rb +18 -5
- data/lib/rrj/errors/janus.rb +4 -2
- data/lib/rrj/errors/janus_message.rb +19 -15
- data/lib/rrj/errors/janus_response.rb +13 -26
- data/lib/rrj/errors/janus_transaction.rb +7 -13
- data/lib/rrj/errors/rabbit.rb +3 -9
- data/lib/rrj/info.rb +1 -1
- data/lib/rrj/init.rb +118 -68
- data/lib/rrj/janus/processus/concurrency.rb +8 -22
- data/lib/rrj/janus/processus/event.rb +13 -15
- data/lib/rrj/janus/processus/keepalive.rb +20 -15
- data/lib/rrj/janus/responses/response.rb +0 -1
- data/lib/rrj/janus/transactions/admin.rb +14 -22
- data/lib/rrj/janus/transactions/handle.rb +19 -33
- data/lib/rrj/janus/transactions/session.rb +13 -6
- data/lib/rrj/janus/transactions/transaction.rb +16 -24
- data/lib/rrj/rabbit/connect.rb +3 -4
- data/lib/rrj/rabbit/propertie.rb +6 -9
- data/lib/rrj/rabbit/publish/admin.rb +1 -1
- data/lib/rrj/rabbit/publish/base_publisher.rb +5 -0
- data/lib/rrj/rabbit/publish/listener.rb +1 -1
- data/lib/rrj/rabbit/publish/non_exclusive.rb +1 -1
- data/lib/rrj/tools/config.rb +44 -18
- data/lib/rrj/tools/log.rb +30 -15
- data/lib/rrj/tools/replaces/admin.rb +1 -3
- data/lib/rrj/tools/replaces/replace.rb +1 -6
- data/lib/rrj/tools/requests.rb +8 -8
- data/lib/rrj/tools/tools.rb +0 -1
- data/lib/ruby_rabbitmq_janus.rb +1 -0
- data/spec/request/admin/request_handle_info_spec.rb +3 -3
- data/spec/request/base/request_attach_spec.rb +7 -10
- data/spec/request/base/request_detach_spec.rb +6 -9
- data/spec/request/peer/request_answer_spec.rb +66 -0
- data/spec/request/peer/request_offer_spec.rb +113 -0
- data/spec/request/peer/request_trickle_spec.rb +9 -11
- data/spec/rrj/rrj_log_spec.rb +1 -6
- data/spec/spec_helper.rb +0 -1
- data/spec/support/examples.rb +6 -9
- data/spec/support/schemas/config/config.json +20 -32
- data/spec/support/schemas/request/peer/answer.json +15 -0
- data/spec/support/schemas/request/peer/offer.json +15 -0
- data/spec/support/schemas/request/peer/trickle.json +4 -12
- metadata +10 -19
- data/config/requests/channel/README.md +0 -29
- data/config/requests/channel/create.json +0 -9
- data/config/requests/channel/describe.json +0 -10
- data/config/requests/channel/destroy.json +0 -10
- data/config/requests/channel/exists.json +0 -10
- data/config/requests/channel/join.json +0 -11
- data/config/requests/channel/leave.json +0 -11
- data/config/requests/channel/list.json +0 -9
- data/config/requests/channel/select.json +0 -11
- data/config/requests/channel/trickle.json +0 -10
- data/config/requests/videocast/join.json +0 -12
- data/config/requests/videocast/leave.json +0 -11
- data/config/ruby-rabbitmq-janus.yml +0 -27
- data/lib/rrj/errors/request.rb +0 -21
- data/lib/rrj/tools/env.rb +0 -22
data/lib/rrj/errors/janus.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# :reek:FeatureEnvy
|
3
2
|
|
4
3
|
module RubyRabbitmqJanus
|
5
4
|
module Errors
|
6
5
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
6
|
+
|
7
7
|
# Define errors to message sending and response to janus
|
8
8
|
class JanusError < RRJError
|
9
|
+
# Initialize a error standard for janus module
|
10
|
+
# @param [String] message Text returning in raise
|
9
11
|
def initialize(message)
|
10
|
-
super "[JANUS]
|
12
|
+
super "[JANUS]#{message}", :fatal
|
11
13
|
end
|
12
14
|
end
|
13
15
|
end
|
@@ -3,42 +3,46 @@
|
|
3
3
|
module RubyRabbitmqJanus
|
4
4
|
module Errors
|
5
5
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
6
|
+
|
6
7
|
# Define an exception for janus message class
|
7
8
|
class JanusMessage < JanusError
|
9
|
+
# Initialize a error for janus message module
|
10
|
+
# @param [String] message Text returning in raise
|
8
11
|
def initialize(message)
|
9
|
-
super "[Message]
|
12
|
+
super "[Message] #{message}"
|
10
13
|
end
|
11
14
|
end
|
12
15
|
|
13
16
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
17
|
+
|
14
18
|
# Define an exception for janus message to_json
|
15
|
-
class JanusMessageJson <
|
19
|
+
class JanusMessageJson < JanusMessage
|
20
|
+
# Initialize a error for janus message in to_json
|
21
|
+
# @param [String] message Text returning in raise
|
16
22
|
def initialize(message)
|
17
|
-
super "
|
23
|
+
super "Error transform to json : #{message}"
|
18
24
|
end
|
19
25
|
end
|
20
26
|
|
21
27
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
28
|
+
|
22
29
|
# Define an exception for janus message to_nice_json
|
23
|
-
class JanusMessagePrettyJson <
|
30
|
+
class JanusMessagePrettyJson < JanusMessage
|
31
|
+
# Initialize a error for janus message in to_nice_json
|
32
|
+
# @param [String] message Text returning in raise
|
24
33
|
def initialize(message)
|
25
|
-
super "
|
34
|
+
super "Error transform to pretty json : #{message}"
|
26
35
|
end
|
27
36
|
end
|
28
37
|
|
29
38
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
30
|
-
# Define an exception for janus message to_hash
|
31
|
-
class JanusMessageHash < JanusError
|
32
|
-
def initialize(message)
|
33
|
-
super "[Message] Error transform to hash : #{message}"
|
34
|
-
end
|
35
|
-
end
|
36
39
|
|
37
|
-
#
|
38
|
-
|
39
|
-
|
40
|
+
# Define an exception for janus message to_hash
|
41
|
+
class JanusMessageHash < JanusMessage
|
42
|
+
# Initialize a error for janus message in to_hash
|
43
|
+
# @param [String] message Text returning in raise
|
40
44
|
def initialize(message)
|
41
|
-
super "
|
45
|
+
super "Error transform to hash : #{message}"
|
42
46
|
end
|
43
47
|
end
|
44
48
|
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
# :reek:FeatureEnvy
|
3
2
|
|
4
3
|
module RubyRabbitmqJanus
|
5
4
|
module Errors
|
6
5
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
6
|
+
#
|
7
7
|
# Define an error primary for response
|
8
8
|
class JanusResponse < JanusError
|
9
|
+
# Initialize a error for janus response module
|
10
|
+
# @param [String] message Text returning in raise
|
9
11
|
def initialize(message)
|
10
12
|
super "[Response] #{message}"
|
11
13
|
end
|
@@ -14,31 +16,18 @@ module RubyRabbitmqJanus
|
|
14
16
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
15
17
|
# Define an error for response initalize
|
16
18
|
class JanusResponseInit < JanusResponse
|
19
|
+
# Initialize a error for janus response module in initializer
|
20
|
+
# @param [String] message Text returning in raise
|
17
21
|
def initialize(message)
|
18
22
|
super "Error create object : #{message}"
|
19
23
|
end
|
20
24
|
end
|
21
25
|
|
22
|
-
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
23
|
-
# Define an error for simple message
|
24
|
-
class JanusResponseSimple < JanusResponse
|
25
|
-
def initialize(message)
|
26
|
-
error = message['error']
|
27
|
-
super "[#{error['code']}] #{error['reason']} -- #{message}"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
32
|
-
# Define an error for plugin
|
33
|
-
class JanusResponsePlugin < JanusResponse
|
34
|
-
def initialize(message)
|
35
|
-
super "[#{message['error_code']}] #{message['error']}"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
26
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
40
27
|
# Define an exception for json
|
41
28
|
class JanusResponseJson < JanusResponse
|
29
|
+
# Initialize a error for janus response module in to_json
|
30
|
+
# @param [String] message Text returning in raise
|
42
31
|
def initialize(message)
|
43
32
|
super \
|
44
33
|
"Error transform to JSON : #{message[0]} -- message : #{message[1]}"
|
@@ -48,6 +37,8 @@ module RubyRabbitmqJanus
|
|
48
37
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
49
38
|
# Define an exception for nice_json
|
50
39
|
class JanusResponsePrettyJson < JanusResponse
|
40
|
+
# Initialize a error for janus response module in to_nice_json
|
41
|
+
# @param [String] message Text returning in raise
|
51
42
|
def initialize(message)
|
52
43
|
super "Error transform to Pretty JSON : #{message}"
|
53
44
|
end
|
@@ -56,23 +47,19 @@ module RubyRabbitmqJanus
|
|
56
47
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
57
48
|
# Define an exception for hash
|
58
49
|
class JanusResponseHash < JanusResponse
|
50
|
+
# Initialize a error for janus response module in to_hash
|
51
|
+
# @param [String] message Text returning in raise
|
59
52
|
def initialize(message)
|
60
53
|
super \
|
61
54
|
"Error transform to Hash : #{message[0]} -- message : #{message[1]}"
|
62
55
|
end
|
63
56
|
end
|
64
57
|
|
65
|
-
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
66
|
-
# Define an error for response plugin
|
67
|
-
class JanusResponsePluginData < JanusResponse
|
68
|
-
def initialize(message)
|
69
|
-
super "Error data response : #{message}"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
58
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
74
59
|
# Define an error for response data
|
75
60
|
class JanusResponseDataId < JanusResponse
|
61
|
+
# Initialize a error for janus response module in data_id
|
62
|
+
# @param [String] message Text returning in raise
|
76
63
|
def initialize(message)
|
77
64
|
super "Error Data : #{message}"
|
78
65
|
end
|
@@ -3,10 +3,10 @@
|
|
3
3
|
module RubyRabbitmqJanus
|
4
4
|
module Errors
|
5
5
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
6
|
-
# Define
|
7
|
-
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
8
|
-
# Define an exception for initaliser transaction
|
6
|
+
# Define an exception for initalizer transaction
|
9
7
|
class JanusTransaction < JanusError
|
8
|
+
# Initialize a error for janus transaction class
|
9
|
+
# @param [String] message Text returning in raise
|
10
10
|
def initialize(message)
|
11
11
|
super "[Transaction] Error initialize : #{message}"
|
12
12
|
end
|
@@ -14,17 +14,11 @@ module RubyRabbitmqJanus
|
|
14
14
|
|
15
15
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
16
16
|
# Define an exception for running_handle
|
17
|
-
class JanusTransactionHandle
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
24
|
-
# Define an exception for sending_message
|
25
|
-
class JanusTransactionPost < JanusError
|
17
|
+
class JanusTransactionHandle < JanusTransaction
|
18
|
+
# Initialize a error for janus transaction handle class
|
19
|
+
# @param [String] message Text returning in raise
|
26
20
|
def initialize(message)
|
27
|
-
super "[
|
21
|
+
super "[Handle] #{message}"
|
28
22
|
end
|
29
23
|
end
|
30
24
|
end
|
data/lib/rrj/errors/rabbit.rb
CHANGED
@@ -2,17 +2,11 @@
|
|
2
2
|
|
3
3
|
module RubyRabbitmqJanus
|
4
4
|
module Errors
|
5
|
-
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
6
|
-
# Define errors with Rabbitmq when request is not sending
|
7
|
-
class RequestNotExecuted < Errors::RRJError
|
8
|
-
def initialize(request)
|
9
|
-
super "Error in request executed : #{request}", :error
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
5
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
14
6
|
# Define errors if connection to rabbitmq is failed
|
15
|
-
class ConnectionRabbitmqFailed <
|
7
|
+
class ConnectionRabbitmqFailed < RRJError
|
8
|
+
# Initialize a error for rabbit module. It's a fatal error
|
9
|
+
# @param [String] message Text returning in raise
|
16
10
|
def initialize(message)
|
17
11
|
super message, :fatal
|
18
12
|
end
|
data/lib/rrj/info.rb
CHANGED
data/lib/rrj/init.rb
CHANGED
@@ -8,24 +8,37 @@ require 'bunny'
|
|
8
8
|
require 'logger'
|
9
9
|
require 'key_path'
|
10
10
|
require 'active_support'
|
11
|
+
require 'erb'
|
11
12
|
|
13
|
+
# Primary module for this gem
|
12
14
|
module RubyRabbitmqJanus
|
13
15
|
# @author VAILLANT Jeremy <jeremy.vaillant@dazzl.tv>
|
16
|
+
|
17
|
+
# # RubyRabbitmqJanus - RRJ
|
18
|
+
#
|
14
19
|
# Initialize RRJ gem and create automatically a session with janus and
|
15
20
|
# sending a keepalive message. The Time To Live is configured in yaml
|
16
|
-
# configuration file
|
17
|
-
#
|
21
|
+
# configuration file `config/default.yml` or if you a customize config in
|
22
|
+
# `config/ruby-rabbitmq-janus.yml`.
|
23
|
+
#
|
18
24
|
# @!attribute [r] session
|
19
|
-
# @return [Fixnum] Return an session number created
|
20
|
-
#
|
21
|
-
#
|
25
|
+
# @return [Fixnum] Return an session number created when this gem is
|
26
|
+
# instanciate. It's janus who creates the number of the session.
|
27
|
+
#
|
28
|
+
# @see file:/config/requests.md For more information to type requests used.
|
29
|
+
# @see file:/config/default.md For more information to config file used.
|
22
30
|
class RRJ
|
23
31
|
attr_reader :session
|
24
32
|
|
25
|
-
#
|
33
|
+
# Return a new instance of RubyRabbitmqJanus.
|
34
|
+
#
|
35
|
+
# @example Create a instance to this gem
|
36
|
+
# @rrj = RubyRabbitmqJanus::RRJ.new
|
37
|
+
# => #<RubyRabbitmqJanus::RRJ:0x007 @session=123, @transaction=nil>
|
26
38
|
def initialize
|
27
|
-
|
28
|
-
|
39
|
+
Tools::Log.instance
|
40
|
+
Tools::Config.instance
|
41
|
+
Tools::Requests.instance
|
29
42
|
|
30
43
|
# Create an session while time opening
|
31
44
|
@session = Janus::Concurrencies::Keepalive.instance.session
|
@@ -34,118 +47,157 @@ module RubyRabbitmqJanus
|
|
34
47
|
@transaction = nil
|
35
48
|
end
|
36
49
|
|
37
|
-
# Send an simple message to janus.
|
50
|
+
# Send an simple message to janus.
|
51
|
+
#
|
38
52
|
# @param [String] type
|
39
53
|
# Given a type to request. JSON request writing in 'config/requests/'
|
40
54
|
# @param [Bollean] exclusive
|
41
55
|
# Use an exclusive queue or not
|
56
|
+
# @param [Hash] options Options update in request
|
57
|
+
#
|
42
58
|
# @example Sending an message info in queue 'to-janus'
|
43
59
|
# RubyRabbitmqJanus::RRJ.new.message_simple('base::info', true)
|
44
60
|
# #=> {}
|
45
61
|
# @example Sending an message info in queue exclusive 'ampq.gen-xxxxx'
|
46
62
|
# RubyRabbitmqJanus::RRJ.new.message_simple('base::info')
|
47
63
|
# #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
|
64
|
+
#
|
48
65
|
# @return [RubyRabbitmqJanus::Janus::Responses::Standard]
|
49
66
|
# Give an object response to janus server
|
50
|
-
|
51
|
-
|
67
|
+
#
|
68
|
+
# @since 1.0.0
|
69
|
+
def message_simple(type = 'base::info', exclusive = false,
|
70
|
+
options = { 'replace' => {}, 'add' => {} })
|
71
|
+
Janus::Transactions::Session.new(@session).connect(exclusive) do
|
52
72
|
Janus::Messages::Standard.new(type, options)
|
53
73
|
end
|
54
74
|
end
|
55
75
|
|
56
76
|
# Send an message simple in current session.
|
77
|
+
#
|
57
78
|
# @param [String] type
|
58
79
|
# Given a type to request. JSON request writing in 'config/requests/'
|
59
80
|
# @param [Hash] options Options update in request
|
60
81
|
# @param [Bollean] exclusive
|
61
82
|
# Use an exclusive queue or not
|
83
|
+
#
|
62
84
|
# @example Sending an message create
|
63
85
|
# RubyRabbitmqJanus::RRJ.new.message_session('base::create')
|
64
|
-
# #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
|
86
|
+
# n#=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
|
87
|
+
#
|
65
88
|
# @return [RubyRabbitmqJanus::Janus::Responses::Standard]
|
66
|
-
#
|
67
|
-
|
68
|
-
|
89
|
+
# Give an object response to janus server
|
90
|
+
#
|
91
|
+
# @since 1.0.0
|
92
|
+
def message_session(type, options = { 'replace' => {}, 'add' => {} },
|
93
|
+
exclusive = true)
|
94
|
+
Janus::Transactions::Session.new(@session).connect(exclusive) do
|
69
95
|
Janus::Messages::Standard.new(type, use_current_session?(options))
|
70
96
|
end
|
71
97
|
rescue => error
|
72
98
|
raise Errors::RRJErrorPost, error
|
73
99
|
end
|
74
100
|
|
75
|
-
# Send a message simple for admin Janus
|
101
|
+
# Send a message simple for admin Janus.
|
102
|
+
# **Is used just for sending a message to Janus Monitor/Admin API**. The
|
103
|
+
# queue is exclusive for not transmitting data to anyone.
|
104
|
+
#
|
76
105
|
# @param [String] type
|
77
|
-
# Given a type to request. JSON request writing in
|
78
|
-
# @param [Hash] options
|
106
|
+
# Given a type to request. JSON request writing in `config/requests/`
|
107
|
+
# @param [Hash] options Fields updating in request sending to janus.
|
108
|
+
# **This hash must imperatively contains the key `replace`**
|
109
|
+
# @option options [Hash] :replace Contains all fields who be replaced in
|
110
|
+
# request sending to janus.
|
111
|
+
# @option options [Hash] :add Contains all fields adding to request.
|
112
|
+
#
|
79
113
|
# @example Sending an message create
|
80
114
|
# RubyRabbitmqJanus::RRJ.new.message_admin('admin::sessions')
|
81
115
|
# #=> {"janus":"success","sessions": [12345, 8786567465465, ...] }
|
116
|
+
#
|
82
117
|
# @return [RubyRabbitmqJanus::Janus::Responses::Standard]
|
83
|
-
#
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
118
|
+
# Give an object response to janus server
|
119
|
+
#
|
120
|
+
# @since 1.0.0
|
121
|
+
def message_admin(type, options = { 'replace' => {}, 'add' => {} })
|
122
|
+
@transaction = Janus::Transactions::Admin.new(@session,
|
123
|
+
true,
|
124
|
+
handle?(options))
|
125
|
+
@transaction.connect { Janus::Messages::Admin.new(type, options) }
|
88
126
|
end
|
89
127
|
|
90
128
|
# Send an message in handle session in current session.
|
129
|
+
#
|
91
130
|
# @param [String] type
|
92
131
|
# Given a type to request. JSON request writing in 'config/requests/'
|
93
|
-
# @param [Hash]
|
94
|
-
#
|
132
|
+
# @param [Hash] options Fields updating in request sending to janus.
|
133
|
+
# **This hash must imperatively contains the key `replace`**
|
134
|
+
# @option options [Hash] :replace Contains all fields who be replaced in
|
135
|
+
# request sending to janus.
|
136
|
+
# @option options [Hash] :add Contains all fields adding to request.
|
137
|
+
#
|
95
138
|
# @example Sending an message create
|
96
139
|
# RubyRabbitmqJanus::RRJ.new.message_session('base::create')
|
97
140
|
# #=> {"janus":"server_info","name":"Janus WebRTC Gateway" ... }
|
141
|
+
#
|
98
142
|
# @return [RubyRabbitmqJanus::Janus::Responses::Standard]
|
99
|
-
#
|
100
|
-
|
101
|
-
|
143
|
+
# Give a object response to janus server
|
144
|
+
#
|
145
|
+
# @since 1.0.0
|
146
|
+
def message_handle(type, options = { 'replace' => {}, 'add' => {} })
|
102
147
|
@transaction.publish_message_handle(type, options)
|
103
148
|
end
|
104
149
|
|
105
150
|
# Define an handle transaction and establish connection with janus
|
151
|
+
#
|
152
|
+
# @param [Bollean] exclusive
|
153
|
+
# Use an exclusive queue or not
|
154
|
+
#
|
155
|
+
# @yield Sending requests to Janus.
|
156
|
+
#
|
157
|
+
# @example Start a transaction with janus with a exclusive queue
|
158
|
+
# @rrj.start_handle(true) do
|
159
|
+
# @rrj.message_handle('peer:trickle')
|
160
|
+
# end
|
161
|
+
#
|
162
|
+
# @see #message_handle
|
163
|
+
#
|
164
|
+
# @since 1.0.0
|
106
165
|
def start_handle(exclusive = false)
|
107
|
-
@transaction = Janus::Transactions::Handle.new(@session)
|
108
|
-
@transaction.
|
166
|
+
@transaction = Janus::Transactions::Handle.new(@session, exclusive)
|
167
|
+
@transaction.connect { yield }
|
109
168
|
rescue => error
|
110
169
|
raise Errors::RRJErrorHandle, error
|
111
170
|
end
|
112
171
|
|
113
|
-
#
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
#
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
# Start an short transaction. Create an handle and send a message to queue.
|
127
|
-
# This queue is not exclusive, so this message is sending in queue
|
128
|
-
# 'to-janus' and a response is return in queue 'from-janus'
|
172
|
+
# Start an short transaction. Create an handle and send one message to
|
173
|
+
# queue. **This queue is not exclusive**, so this message is sending in
|
174
|
+
# queue 'to-janus' and a response is return in queue 'from-janus'.
|
175
|
+
#
|
176
|
+
# @param [String] type
|
177
|
+
# Given a type to request. JSON request writing in 'config/requests/'
|
178
|
+
# @param [Hash] options Fields updating in request sending to janus.
|
179
|
+
# **This hash must imperatively contains the key `replace`**
|
180
|
+
# @option options [Hash] :replace Contains all fields who be replaced in
|
181
|
+
# request sending to janus.
|
182
|
+
# @option options [Hash] :add Contains all fields adding to request.
|
183
|
+
#
|
129
184
|
# @example Send an request trickle
|
130
|
-
#
|
185
|
+
# cdn = {
|
131
186
|
# 'candidate' => {
|
132
187
|
# 'sdpMid' => 'video',
|
133
188
|
# 'sdpMLineIndex' => 1,
|
134
189
|
# 'candidate' => '...'
|
135
190
|
# }
|
136
191
|
# }
|
137
|
-
# RubyRabbitmqJanus::RRJ.new.handle_message_simple('peer::trickle',
|
138
|
-
#
|
139
|
-
#
|
140
|
-
#
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
@transaction
|
146
|
-
@transaction.handle_connect_and_stop(exclusive, handle) do
|
147
|
-
message_handle(type, replace, add)
|
148
|
-
end
|
192
|
+
# RubyRabbitmqJanus::RRJ.new.handle_message_simple('peer::trickle', cdn)
|
193
|
+
# #=> { 'janus' => 'trickle', ..., 'candidate' => { ... } }
|
194
|
+
#
|
195
|
+
# @since 1.0.0
|
196
|
+
def handle_message_simple(type, options = { 'replace' => {}, 'add' => {} })
|
197
|
+
@transaction = Janus::Transactions::Handle.new(@session,
|
198
|
+
false,
|
199
|
+
handle?(options))
|
200
|
+
@transaction.connect { message_handle(type, options) }
|
149
201
|
rescue => error
|
150
202
|
raise Errors::RRJErrorHandle, error
|
151
203
|
end
|
@@ -154,17 +206,15 @@ module RubyRabbitmqJanus
|
|
154
206
|
|
155
207
|
attr_accessor :transaction
|
156
208
|
|
157
|
-
# Start singleton instances
|
158
|
-
def start_instances_tools
|
159
|
-
Tools::Env.instance
|
160
|
-
Tools::Log.instance
|
161
|
-
Tools::Config.instance
|
162
|
-
Tools::Requests.instance
|
163
|
-
end
|
164
|
-
|
165
|
-
# Return a current session if not specified
|
166
209
|
def use_current_session?(option)
|
167
210
|
{ 'session_id' => @session } unless option.key?('session_id')
|
168
211
|
end
|
212
|
+
|
213
|
+
def handle?(options)
|
214
|
+
# if options.key?('replace') && options['replace'].key?('handle_id')
|
215
|
+
# options['replace'].key?('handle_id') ? replace['handle_id'] : 0
|
216
|
+
# end
|
217
|
+
options['replace'].key?('handle_id') ? replace['handle_id'] : 0
|
218
|
+
end
|
169
219
|
end
|
170
220
|
end
|