diff options
Diffstat (limited to 'ruby_1_8_5/sample/drb/dchats.rb')
-rw-r--r-- | ruby_1_8_5/sample/drb/dchats.rb | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/ruby_1_8_5/sample/drb/dchats.rb b/ruby_1_8_5/sample/drb/dchats.rb deleted file mode 100644 index 012dfeeebe..0000000000 --- a/ruby_1_8_5/sample/drb/dchats.rb +++ /dev/null @@ -1,70 +0,0 @@ -=begin - distributed Ruby --- chat server - Copyright (c) 1999-2000 Masatoshi SEKI -=end -require 'thread' -require 'drb/drb' - -class ChatEntry - include DRbUndumped - - def initialize(server, there) - @server = server - @there = there - @name = there.name - @key = there.key = Time.now - end - attr :name, true - attr :there - - def say(str) - @server.distribute(@there, str) - end - - def listen(str) - @there.message(@key, str) - end -end - - -class ChatServer - def initialize - @mutex = Mutex.new - @members = {} - end - - def add_member(there) - client = ChatEntry.new(self, there) - @mutex.synchronize do - @members[there] = client - end - client - end - - def distribute(there, str) - name = @members[there].name - msg = "<#{name}> #{str}" - msg2 = ">#{name}< #{str}" - @mutex.synchronize do - for m in @members.keys - begin - if m == there - @members[m].listen(msg2) - else - @members[m].listen(msg) - end - rescue - p $! - @members.delete(m) - end - end - end - end -end - -if __FILE__ == $0 - here = ARGV.shift - DRb.start_service(here, ChatServer.new) - puts DRb.uri - DRb.thread.join -end |