blob: f8ce0ad09b16bf73991fd3486643ca13ad63b1f3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# for ruby-1.8.0
module DRb
class DRbServer
module InvokeMethod18Mixin
def block_yield(x)
block_value = @block.call(*x)
end
def rescue_break(err)
return :break, err.exit_value
end
def perform_with_block
@obj.__send__(@msg_id, *@argv) do |*x|
jump_error = nil
begin
block_value = block_yield(x)
rescue LocalJumpError
jump_error = $!
end
if jump_error
reason, jump_value = rescue_local_jump(jump_error)
case reason
when :retry
retry
when :break
break(jump_value)
else
raise jump_error
end
end
block_value
end
end
end
end
end
|