Class: KineticRuby::ClientProvider
- Inherits:
-
Object
- Object
- KineticRuby::ClientProvider
- Defined in:
- lib/kinetic_server.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#accept ⇒ Object
Returns a Client upon connection, nil upon failure.
-
#initialize(host, port, logger) ⇒ ClientProvider
constructor
A new instance of ClientProvider.
- #shutdown ⇒ Object
Constructor Details
#initialize(host, port, logger) ⇒ ClientProvider
Returns a new instance of ClientProvider.
72 73 74 75 76 77 |
# File 'lib/kinetic_server.rb', line 72 def initialize(host, port, logger) @host = host @port = port @logger = logger @server = nil end |
Class Method Details
.each_client(host, port, logger) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/kinetic_server.rb', line 107 def self.each_client(host, port, logger) raise "No block supplied!" unless block_given? logger.log "Listening for clients..." # Service clients, one at a time (for now at least) begin Socket.tcp_server_loop(host, port) do |socket, addr| logger.log "New client connected on socket #{socket.inspect}" client = Client.new(socket, addr, logger) raise "Failed to connect to client!" unless client logger.log "Connected to #{client.address}" begin # Execute the supplied block with the connected client yield(client, logger) logger.log "Done servicing client #{client.address}" ensure logger.log "Closing client socket..." # Make sure the client gets closed, since tcp_server_loop does NOT! client.close logger.log "Client socket shutdown!" end logger.log "Done with client #{client.address}" end rescue Exception => e logger.log_exception(e, 'EXCEPTION during listen!') end logger.log "Done listening for clients!" end |
Instance Method Details
#accept ⇒ Object
Returns a Client upon connection, nil upon failure
81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/kinetic_server.rb', line 81 def accept client = nil @server ||= TCPServer.new(@host, @port) begin client = Client.new(@server.accept) rescue Exception => e @logger.log_exception(e, 'EXCEPTION during accept!') end @logger.log 'Client dropped off!' if client.nil? return client end |
#shutdown ⇒ Object
97 98 99 100 101 |
# File 'lib/kinetic_server.rb', line 97 def shutdown return if @server.nil? @server.close @server = nil end |