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
drbrain 90e69dfdaf * lib/drb/drb.rb: Improved documentation by adding or hiding methods.
* lib/drb/eq.rb:  ditto.
* lib/drb/extserv.rb:  ditto.
* lib/drb/gw.rb:  ditto.
* lib/drb/invokemethod.rb:  ditto.
* lib/drb/observer.rb:  ditto.
* lib/drb/ssl.rb:  ditto.
* lib/drb/timeridconv.rb:  ditto.
* lib/drb/unix.rb:  ditto.

* sample/drb/gw_cu.rb:  Fixed bug in DRb gateway sample.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38937 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-25 03:25:39 +00:00

34 lines
746 B
Ruby

# for ruby-1.8.0
module DRb
class DRbServer
module InvokeMethod18Mixin # :nodoc: all
def block_yield(x)
if x.size == 1 && x[0].class == Array
x[0] = DRbArray.new(x[0])
end
@block.call(*x)
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
case jump_error.reason
when :break
break(jump_error.exit_value)
else
raise jump_error
end
end
block_value
end
end
end
end
end