Class: DRb::DRbServer::InvokeMethod

Inherits:
Object
  • Object
show all
Includes:
InvokeMethod16Mixin, InvokeMethod18Mixin
Defined in:
lib/drb/drb.rb,
lib/drb/drb.rb,
lib/drb/drb.rb

Overview

:nodoc:

Instance Method Summary collapse

Constructor Details

#initialize(drb_server, client) ⇒ InvokeMethod

Returns a new instance of InvokeMethod.



1492
1493
1494
1495
1496
# File 'lib/drb/drb.rb', line 1492

def initialize(drb_server, client)
	@drb_server = drb_server
  @safe_level = drb_server.safe_level
	@client = client
end

Instance Method Details

#performObject



1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
# File 'lib/drb/drb.rb', line 1498

def perform
	@result = nil
	@succ = false
	setup_message

  if $SAFE < @safe_level
    info = Thread.current['DRb']
    if @block
      @result = Thread.new {
        Thread.current['DRb'] = info
        $SAFE = @safe_level
        perform_with_block
      }.value
    else
      @result = Thread.new { 
        Thread.current['DRb'] = info
        $SAFE = @safe_level
        perform_without_block
      }.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