NAME
Net::DNS::Callback - Asynchronous DNS helper for high volume applications
SYNOPSIS
use Net::DNS::Callback;
my $c = new Net::DNS::Callback(QueueSize => 20, Retries => 3);
for (...) {
$c->add(\&callback, @query);
}
$c->done();
sub callback {
my $response = shift;
...
}
CONSTRUCTOR
The class method new(...) constructs a new helper object. All arguments are optional. The following parameters are recognised as arguments to new():
- QueueSize
-
The size of the query queue. If this is exceeded, further calls to add() will block until some responses are received or time out.
- Retries
-
The number of times to retry a query before giving up.
- Timeout
-
The timeout for an individual query.
METHODS
- $c->add($callback, @query)
-
Adds a new query for asynchronous handling. The @query arguments are those to Net::DNS::Resolver->bgsend(), q.v. This call will block until the queue is less than QueueSize.
The user callback will be called at some point in the future, with a Net::DNS::Packet object representing the response. If the query timed out after the specified number of retries, the callback will be called with undef.
- $c->done()
-
Flushes the queue, that is, waits for and handles all remaining responses.
BUGS
The test suite does not test query timeouts.
SEE ALSO
COPYRIGHT
Copyright (c) 2005-2006 Shevek. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.