Class: Resolv::DNS::Requester
- Inherits:
-
Object
- Object
- Resolv::DNS::Requester
- Defined in:
- lib/resolv.rb
Overview
:nodoc:
Direct Known Subclasses
Defined Under Namespace
Classes: ConnectedUDP, RequestError, Sender, TCP, UnconnectedUDP
Instance Method Summary collapse
- #close ⇒ Object
-
#initialize ⇒ Requester
constructor
A new instance of Requester.
- #request(sender, tout) ⇒ Object
Constructor Details
#initialize ⇒ Requester
Returns a new instance of Requester.
606 607 608 609 |
# File 'lib/resolv.rb', line 606 def initialize @senders = {} @socks = nil end |
Instance Method Details
#close ⇒ Object
639 640 641 642 643 644 645 |
# File 'lib/resolv.rb', line 639 def close socks = @socks @socks = nil if socks socks.each {|sock| sock.close } end end |
#request(sender, tout) ⇒ Object
611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 |
# File 'lib/resolv.rb', line 611 def request(sender, tout) timelimit = Time.now + tout sender.send while true now = Time.now timeout = timelimit - now if timeout <= 0 raise ResolvTimeout end select_result = IO.select(@socks, nil, nil, timeout) if !select_result raise ResolvTimeout end reply, from = recv_reply(select_result[0]) begin msg = Message.decode(reply) rescue DecodeError next # broken DNS message ignored end if s = @senders[[from,msg.id]] break else # unexpected DNS message ignored end end return msg, s.data end |