class ScreenServer
Public Class Methods
new(port)
click to toggle source
# File lib/server/screen_server.rb, line 8 def initialize port @port = port @sockets = [] end
Public Instance Methods
listen()
click to toggle source
# File lib/server/screen_server.rb, line 13 def listen Thread.new do Socket.tcp_server_loop @port, ®ister end end
register()
click to toggle source
# File lib/server/screen_server.rb, line 19 def register ->(socket, client_info) { socket.sync = true @sockets << socket } end
write(update)
click to toggle source
screen_server.async.write
# File lib/server/screen_server.rb, line 27 def write update @sockets.each { |s| safe_write(s, update) } end
Private Instance Methods
disconnect(socket)
click to toggle source
# File lib/server/screen_server.rb, line 37 def disconnect(socket) disconnect_message socket @sockets.delete socket return false end
disconnect_message(socket)
click to toggle source
# File lib/server/screen_server.rb, line 44 def disconnect_message(socket) socket_info = Socket.unpack_sockaddr_in(socket.local_address) puts "A screen client disconnected: #{socket_info}" end
safe_write(socket, update)
click to toggle source
# File lib/server/screen_server.rb, line 31 def safe_write(socket, update) socket.write update rescue Errno::EPIPE; disconnect(socket) end