2004-02-13 21:28:02 -05:00
|
|
|
=begin
|
|
|
|
distributed Ruby --- chat client
|
2011-05-15 07:55:52 -04:00
|
|
|
Copyright (c) 1999-2000 Masatoshi SEKI
|
2004-02-13 21:28:02 -05:00
|
|
|
=end
|
|
|
|
|
|
|
|
require 'drb/drb'
|
|
|
|
|
|
|
|
class ChatClient
|
2011-05-15 07:55:52 -04:00
|
|
|
include DRbUndumped
|
2004-02-13 21:28:02 -05:00
|
|
|
|
|
|
|
def initialize(name)
|
|
|
|
@name = name
|
|
|
|
@key = nil
|
|
|
|
end
|
|
|
|
attr_reader(:name)
|
|
|
|
attr_accessor(:key)
|
|
|
|
|
|
|
|
def message(there, str)
|
|
|
|
raise 'invalid key' unless @key == there
|
|
|
|
puts str
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if __FILE__ == $0
|
|
|
|
begin
|
|
|
|
there = ARGV.shift
|
|
|
|
name = ARGV.shift
|
|
|
|
raise "usage" unless (there and name)
|
|
|
|
rescue
|
|
|
|
$stderr.puts("usage: #{$0} <server_uri> <your_name>")
|
|
|
|
exit 1
|
|
|
|
end
|
|
|
|
DRb.start_service
|
|
|
|
ro = DRbObject.new(nil, there)
|
|
|
|
|
|
|
|
chat = ChatClient.new(name)
|
|
|
|
entry = ro.add_member(chat)
|
|
|
|
while gets
|
|
|
|
entry.say($_)
|
|
|
|
end
|
|
|
|
end
|