mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
import from drb-2.0.4b3
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
34cdb70d14
commit
151f1241c6
11 changed files with 1353 additions and 0 deletions
39
lib/drb/invokemethod.rb
Normal file
39
lib/drb/invokemethod.rb
Normal file
|
@ -0,0 +1,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
|
Loading…
Add table
Add a link
Reference in a new issue