Class: Resolv::DNS::Requester::TCP
- Inherits:
-
Resolv::DNS::Requester
- Object
- Resolv::DNS::Requester
- Resolv::DNS::Requester::TCP
- Defined in:
- lib/resolv.rb
Overview
:nodoc:
Defined Under Namespace
Classes: Sender
Instance Method Summary (collapse)
- - (Object) close
-
- (TCP) initialize(host, port = Port)
constructor
A new instance of TCP.
- - (Object) recv_reply(readable_socks)
- - (Object) sender(msg, data, host = @host, port = @port)
Methods inherited from Resolv::DNS::Requester
Constructor Details
- (TCP) initialize(host, port = Port)
A new instance of TCP
777 778 779 780 781 782 783 784 785 |
# File 'lib/resolv.rb', line 777 def initialize(host, port=Port) super() @host = host @port = port sock = TCPSocket.new(@host, @port) @socks = [sock] sock.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) if defined? Fcntl::F_SETFD @senders = {} end |
Instance Method Details
- (Object) close
811 812 813 814 815 816 |
# File 'lib/resolv.rb', line 811 def close super @senders.each_key {|from,id| DNS.free_request_id(@host, @port, id) } end |
- (Object) recv_reply(readable_socks)
787 788 789 790 791 |
# File 'lib/resolv.rb', line 787 def recv_reply(readable_socks) len = readable_socks[0].read(2).unpack('n')[0] reply = @socks[0].read(len) return reply, nil end |
- (Object) sender(msg, data, host = @host, port = @port)
793 794 795 796 797 798 799 800 801 |
# File 'lib/resolv.rb', line 793 def sender(msg, data, host=@host, port=@port) unless host == @host && port == @port raise RequestError.new("host/port don't match: #{host}:#{port}") end id = DNS.allocate_request_id(@host, @port) request = msg.encode request[0,2] = [request.length, id].pack('nn') return @senders[[nil,id]] = Sender.new(request, data, @socks[0]) end |