lib/whatup/server/client.rb in whatup-0.2.3 vs lib/whatup/server/client.rb in whatup-0.2.4
- old
+ new
@@ -2,23 +2,55 @@
module Whatup
module Server
class Client
attr_reader :id, :name
- attr_accessor :socket
+ attr_accessor *%i[socket room]
def initialize id:, name:, socket:
@id = id
@name = name
@socket = socket
+ @room = nil
end
def puts msg
- @socket.puts msg
+ socket.puts msg
end
def gets
- @socket.gets
+ socket.gets
+ end
+
+ def input!
+ loop while (msg = gets).blank?
+ msg.chomp
+ end
+
+ def room?
+ !room.nil?
+ end
+ alias chatting? room?
+
+ def status
+ "#{name}" \
+ "#{chatting? ? " (#{@room.name})" : ''}"
+ end
+
+ def broadcast msg
+ @room.clients.reject { |c| c == self }
+ .each { |c| c.puts "#{name}> #{msg}" }
+ end
+
+ def leave_room!
+ broadcast 'LEFT'
+ room.drop_client! self
+ @room = nil
+ end
+
+ def exit!
+ puts "END\n"
+ Thread.kill Thread.current
end
end
end
end