method
perform
v2_6_3 -
Show latest stable
- Class:
DRb::DRbServer::InvokeMethod
perform()public
No documentation available.
# File lib/drb/drb.rb, line 1565
def perform
@result = nil
@succ = false
setup_message
if $SAFE < @safe_level
info = Thread.current['DRb']
if @block
@result = Thread.new do
Thread.current['DRb'] = info
prev_safe_level = $SAFE
$SAFE = @safe_level
perform_with_block
ensure
$SAFE = prev_safe_level
end.value
else
@result = Thread.new do
Thread.current['DRb'] = info
prev_safe_level = $SAFE
$SAFE = @safe_level
perform_without_block
ensure
$SAFE = prev_safe_level
end.value
end
else
if @block
@result = perform_with_block
else
@result = perform_without_block
end
end
@succ = true
if @msg_id == :to_ary && @result.class == Array
@result = DRbArray.new(@result)
end
return @succ, @result
rescue StandardError, ScriptError, Interrupt
@result = $!
return @succ, @result
end