Accessing object from dRuby server


#1

Here is server code:

#!/usr/bin/env ruby

require ‘drb’

location = “druby://localhost:9000”

class Echo
def initialize(msg=nil)
@msg = msg.nil? ? “No message!” : msg
end

def message
    return @msg
end

end

class EchoServer
def initialize
$stdout.puts “EchoServer Started”
end

def echo(msg=nil)
    echo = Echo.new(msg)
    $stdout.puts "Returning echo and its a class of '#{echo.class}'"
    return echo
end

end

begin
server = EchoServer.new
DRb.start_service(location, server)
DRb.thread.join

rescue Interrupt
$stdout.puts “Thank you for using EchoServer”

rescue
raise
end

And Here is my client code:

#!/usr/bin/env ruby

require ‘drb’

location = “druby://localhost:9000”

DRb.start_service(nil, nil)
server = DRbObject.new(nil, location)

begin
echo = server.echo(“Hello dRuby”)
puts echo.class

rescue SystemCallError
$stdout.puts “EchoServer returned SystemCallError”

rescue DRb::DRbConnError
$stdout.puts “EchoServer down … (DRb::DRbConnError)”

rescue Errno::ECONNREFUSED
$stdout.puts “EchoServer down … (Errno::ECONNREFUSED)”

rescue
raise
end

After execute client script, here is my output at server end:

mkhan@mkhan:~$ ruby echoserver.rb
EchoServer Started
Returning echo and its a class of ‘Echo’

and here is the output at client end:
mkhan@mkhan:~/project/CPCServer$ ruby echoclient.rb
DRb::DRbUnknown

I was expecting at client end to see ‘Echo’
What I am doing wrong?
Any help would be greatly appreciated.

Thanks,
Mohammad


#2

nvm… I found the answer from archive… I need to used DRb::UnDumped…
!!

Mohammad