1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/lib/drb/invokemethod.rb
seki 151f1241c6 import from drb-2.0.4b3
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-06-18 15:45:12 +00:00

39 lines
827 B
Ruby

# 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