ruby_rabbitmq_janus 1.1.12 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|