Class: Celluloid::DNS::TCPSocketHandler
- Inherits:
-
GenericHandler
- Object
- GenericHandler
- Celluloid::DNS::TCPSocketHandler
- Defined in:
- lib/celluloid/dns/handler.rb
Direct Known Subclasses
Instance Method Summary collapse
- #handle_connection(socket) ⇒ Object
-
#initialize(server, socket) ⇒ TCPSocketHandler
constructor
A new instance of TCPSocketHandler.
- #run ⇒ Object
Methods inherited from GenericHandler
#error_response, #process_query, #stop
Constructor Details
#initialize(server, socket) ⇒ TCPSocketHandler
Returns a new instance of TCPSocketHandler.
153 154 155 156 157 158 159 |
# File 'lib/celluloid/dns/handler.rb', line 153 def initialize(server, socket) super(server) @socket = socket async.run end |
Instance Method Details
#handle_connection(socket) ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'lib/celluloid/dns/handler.rb', line 169 def handle_connection(socket) _, remote_port, remote_host = socket.peeraddr = {peer: remote_host, port: remote_port, proto: :tcp} input_data = StreamTransport.read_chunk(socket) response = process_query(input_data, ) length = StreamTransport.(socket, response) @logger.debug "<#{response.id}> Wrote #{length} bytes via TCP..." rescue EOFError => error @logger.warn "<> TCP session ended prematurely!" rescue Errno::ECONNRESET => error @logger.warn "<> TCP connection reset by peer!" rescue DecodeError @logger.warn "<> Could not decode incoming TCP data!" ensure socket.close end |