brb 0.2.1 → 0.2.2
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.
- data/CHANGELOG.rdoc +4 -0
- data/examples/simple_client.rb +1 -1
- data/examples/simple_core.rb +1 -1
- data/lib/brb/request.rb +0 -4
- data/lib/brb/service.rb +6 -6
- data/lib/brb/tunnel.rb +12 -5
- data/lib/brb/tunnel/shared.rb +1 -3
- data/spec/spec_helper.rb +2 -2
- metadata +6 -5
data/CHANGELOG.rdoc
CHANGED
data/examples/simple_client.rb
CHANGED
@@ -5,7 +5,7 @@ host = 'localhost'
|
|
5
5
|
|
6
6
|
# Connecting to the core server, retrieving its interface object : core
|
7
7
|
# We do not want to expose an object, so the first parameter is nil
|
8
|
-
core = BrB::Tunnel.create(nil, "brb://#{host}:#{port}", :
|
8
|
+
core = BrB::Tunnel.create(nil, "brb://#{host}:#{port}", :verbose => true)
|
9
9
|
|
10
10
|
# Calling 10 times an non blocking method on the distant core server
|
11
11
|
10.times do
|
data/examples/simple_core.rb
CHANGED
@@ -24,5 +24,5 @@ port = 5555
|
|
24
24
|
host = 'localhost'
|
25
25
|
|
26
26
|
puts " > Starting the core on brb://#{host}:#{port}"
|
27
|
-
BrB::Service.start_service(:object => ExposedCoreObject.new, :
|
27
|
+
BrB::Service.start_service(:object => ExposedCoreObject.new, :verbose => true, :host => host, :port => port)
|
28
28
|
EM.reactor_thread.join
|
data/lib/brb/request.rb
CHANGED
@@ -27,7 +27,6 @@ module BrB
|
|
27
27
|
begin
|
28
28
|
r = recv(block, Thread.current[:brb_nb_out])
|
29
29
|
rescue Exception => e
|
30
|
-
#@object.log_error(e, "Error sending out request #{meth}(#{args.inspect})")
|
31
30
|
raise e
|
32
31
|
ensure
|
33
32
|
#TimeMonitor.instance.remove_thread!
|
@@ -52,7 +51,6 @@ module BrB
|
|
52
51
|
idrequest = args.pop
|
53
52
|
thread = args.pop
|
54
53
|
begin
|
55
|
-
#TimeMonitor.instance.watch_thread!(25)
|
56
54
|
r = ((args.size > 0) ? @object.send(m, *args) : @object.send(m))
|
57
55
|
brb_send([:r, r, thread, idrequest])
|
58
56
|
rescue Exception => e
|
@@ -60,8 +58,6 @@ module BrB
|
|
60
58
|
tputs e.to_s
|
61
59
|
tputs e.backtrace.join("\n")
|
62
60
|
#raise e
|
63
|
-
ensure
|
64
|
-
#TimeMonitor.instance.remove_thread!
|
65
61
|
end
|
66
62
|
else
|
67
63
|
|
data/lib/brb/service.rb
CHANGED
@@ -6,13 +6,13 @@ module BrB
|
|
6
6
|
class Service
|
7
7
|
@@uri = nil
|
8
8
|
@@em_signature = nil
|
9
|
-
@@
|
9
|
+
@@verbose = false
|
10
10
|
|
11
11
|
class << self
|
12
12
|
|
13
13
|
private
|
14
14
|
def tputs(s)
|
15
|
-
puts s if
|
15
|
+
puts s if @@verbose
|
16
16
|
end
|
17
17
|
|
18
18
|
public
|
@@ -22,10 +22,10 @@ module BrB
|
|
22
22
|
def start_service(opts = {}, &block)
|
23
23
|
return if @@em_signature
|
24
24
|
|
25
|
-
@@
|
26
|
-
|
27
|
-
addr = "brb://#{opts[:host] || 'localhost'}:#{opts[:port] || 6200}"
|
28
|
-
|
25
|
+
@@verbose = opts[:verbose]
|
26
|
+
|
27
|
+
addr = opts[:uri] || "brb://#{opts[:host] || 'localhost'}:#{opts[:port] || 6200}"
|
28
|
+
|
29
29
|
tputs " [BrB] Start service on #{addr} ..."
|
30
30
|
@@uri, @@em_signature = BrB::Protocol::open_server(addr, BrB::Tunnel::Handler, opts.merge(:block => block))
|
31
31
|
tputs " [BrB] Service started on #{@@uri}"
|
data/lib/brb/tunnel.rb
CHANGED
@@ -6,6 +6,9 @@ require File.join(File.dirname(__FILE__), 'tunnel', 'shared.rb')
|
|
6
6
|
module BrB
|
7
7
|
module Tunnel
|
8
8
|
|
9
|
+
# Create a BrB Tunnel by connecting to a distant BrB service
|
10
|
+
# Pass a block if you want to get register and unregister events
|
11
|
+
# The first parameter object is the object you want to expose in the BrB tunnel
|
9
12
|
def self.create(object, uri = nil, opts = {}, &block)
|
10
13
|
BrB::Protocol.open(uri, BrB::Tunnel::Handler, opts.merge(:object => object, :block => block))
|
11
14
|
end
|
@@ -20,20 +23,19 @@ module BrB
|
|
20
23
|
def initialize(opts = {})
|
21
24
|
super
|
22
25
|
@object = opts[:object]
|
23
|
-
@
|
24
|
-
@timeout_rcv_value = opts[:timeout] || 30
|
26
|
+
@verbose = opts[:verbose]
|
27
|
+
@timeout_rcv_value = opts[:timeout] || 30 # Currently not implemented due to the lack of performance of ruby Timeout
|
25
28
|
@close_after_timeout = opts[:close_after_timeout] || false
|
26
29
|
@uri = opts[:uri]
|
27
|
-
@closed = nil
|
28
30
|
@replock = Mutex.new
|
29
31
|
@responses = {}
|
30
32
|
@block = opts[:block]
|
31
|
-
@mu = Mutex.new
|
32
33
|
|
33
34
|
@queue = Queue.new
|
34
35
|
@buffer = ''
|
35
36
|
end
|
36
37
|
|
38
|
+
# EventMachine Callback, called after connection has been initialized
|
37
39
|
def post_init
|
38
40
|
tputs " [BrB] Tunnel initialized on #{@uri}"
|
39
41
|
@active = true
|
@@ -49,6 +51,8 @@ module BrB
|
|
49
51
|
super
|
50
52
|
end
|
51
53
|
|
54
|
+
# EventMachine unbind event
|
55
|
+
# The connection has been closed
|
52
56
|
def unbind
|
53
57
|
tputs ' [BrB] Tunnel service closed'
|
54
58
|
@active = false
|
@@ -59,18 +63,21 @@ module BrB
|
|
59
63
|
end
|
60
64
|
end
|
61
65
|
|
66
|
+
# Stop the service
|
62
67
|
def stop_service
|
63
|
-
tputs ' [BrB]
|
68
|
+
tputs ' [BrB] Stopping Tunnel service...'
|
64
69
|
@active = false
|
65
70
|
EM.schedule do
|
66
71
|
close_connection
|
67
72
|
end
|
68
73
|
end
|
69
74
|
|
75
|
+
# Return true if the tunnel is currently active
|
70
76
|
def active?
|
71
77
|
@active
|
72
78
|
end
|
73
79
|
|
80
|
+
# When no method is found on tunnel interface, create an brb out request
|
74
81
|
def method_missing(meth, *args)
|
75
82
|
return nil if !@active
|
76
83
|
new_brb_out_request(meth, *args)
|
data/lib/brb/tunnel/shared.rb
CHANGED
@@ -4,7 +4,7 @@ module BrB
|
|
4
4
|
module Tunnel
|
5
5
|
module Shared
|
6
6
|
def tputs(s)
|
7
|
-
puts s if
|
7
|
+
puts s if @verbose
|
8
8
|
end
|
9
9
|
|
10
10
|
def make_proxy(r)
|
@@ -88,14 +88,12 @@ module BrB
|
|
88
88
|
if rep[1] == nb_out # On check ke c'est bien la réponse que l'on attend
|
89
89
|
return rep[0]
|
90
90
|
end
|
91
|
-
#Error.create(:backtrace => "Error in Brb receiving in thread #{Thread.current}. Try to get #{nb_out} request id, but get #{rep[1]}", :type => 'BrBRecvBadId', :url => "#{@object.class}-#{@uri}")
|
92
91
|
if rep[1] > nb_out
|
93
92
|
return nil
|
94
93
|
end
|
95
94
|
end
|
96
95
|
rescue Exception => e
|
97
96
|
if @close_after_timeout == true
|
98
|
-
#Error.create(:backtrace => "Error in Rcv in thread #{Thread.current}. Try to get #{nb_out} => Stop service #{e.class.to_s}\n\n#{e.backtrace.join("\n")}", :type => e.to_s, :url => "#{@object.class}-#{@uri}")
|
99
97
|
stop_service
|
100
98
|
sleep 1
|
101
99
|
raise e
|
data/spec/spec_helper.rb
CHANGED
@@ -6,11 +6,11 @@ Thread.abort_on_exception = true
|
|
6
6
|
require File.dirname(__FILE__) + '/../init.rb'
|
7
7
|
|
8
8
|
def open_service(object, host = 'localhost', port = 6200)
|
9
|
-
BrB::Service.start_service(:object => object, :
|
9
|
+
BrB::Service.start_service(:object => object, :verbose => false, :host => host, :port => port)
|
10
10
|
end
|
11
11
|
|
12
12
|
def connect_to_the_service(object_exposed, uri, &block)
|
13
|
-
BrB::Tunnel.create(object_exposed, uri, :
|
13
|
+
BrB::Tunnel.create(object_exposed, uri, :verbose => false, &block)
|
14
14
|
end
|
15
15
|
|
16
16
|
class BrBTest
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 2
|
9
|
+
version: 0.2.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Guillaume Luccisano
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-21 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -22,11 +22,12 @@ dependencies:
|
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
segments:
|
28
28
|
- 0
|
29
|
-
|
29
|
+
- 12
|
30
|
+
version: "0.12"
|
30
31
|
type: :runtime
|
31
32
|
version_requirements: *id001
|
32
33
|
description: BrB is a simple, fully transparent and extremely fast interface for doing simple distributed ruby and message passing
|