五十嵐です。
drbを使って、チャット(メッセージ交換?)プログラムを
書いてみたのですが、メソッドが呼ばれたときに、その呼び主を
知りたいと思ったのですが、知ることはできますか?
-- BEGIN chats.rb
require 'drb.rb'
require 'thread'
class ChatServer
def initialize
@mutex = Mutex.new
@members = []
end
def add_member(there)
@mutex.synchronize do
@members.push(there)
end
end
def distribute(str)
@mutex.synchronize do
for m in @members
m << str
end
end
end
end
if __FILE__ == $0
here = "druby://#{`hostname`.chomp}:7640"
puts here
DRb.start_service(here, ChatServer.new)
DRb.thread.join
end
-- END
-- BEGIN chatc.rb
require 'drb.rb'
class ChatClient
def <<(str)
puts str
end
end
if __FILE__ == $0
there = ARGV.shift
unless there
$stderr.puts("usage: #{$0} <server_uri>")
exit 1
end
here = "druby://#{`hostname`.chomp}:7950"
lo = DRbObject.new(ChatClient.new, here)
DRb.start_service(here, lo)
ro = DRbObject.new(nil, there)
ro.add_member(lo)
while gets
ro.distribute($_)
end
end
-- END
--
IKARASHI Akira(ikarashi / d3.dion.ne.jp)