8000 Documentation improvements. (#22) · socketry/async-dns@c7162e6 · GitHub
[go: up one dir, main page]

Skip to content

Commit c7162e6

Browse files
authored
Documentation improvements. (#22)
1 parent 8878bc7 commit c7162e6

File tree

3 files changed

+52
-28
lines changed

3 files changed

+52
-28
lines changed

README.md

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,34 +25,33 @@ Or install it yourself as:
2525
Here is a simple example showing how to use the resolver:
2626

2727
``` ruby
28-
Async::Reactor.run do
29-
resolver = Async::DNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])
28+
Async::Reactor.run do
29+
resolver = Async::DNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])
3030

31-
addresses = resolver.addresses_for("www.google.com.")
31+
addresses = resolver.addresses_for("www.google.com.")
3232

33-
puts addresses.inspect
34-
end
35-
=> [#<Resolv::IPv4 202.124.127.240>, #<Resolv::IPv4 202.124.127.216>, #<Resolv::IPv4 202.124.127.223>, #<Resolv::IPv4 202.124.127.227>, #<Resolv::IPv4 202.124.127.234>, #<Resolv::IPv4 202.124.127.230>, #<Resolv::IPv4 202.124.127.208>, #<Resolv::IPv4 202.124.127.249>, #<Resolv::IPv4 202.124.127.219>, #<Resolv::IPv4 202.124.127.218>, #<Resolv::IPv4 202.124.127.212>, #<Resolv::IPv4 202.124.127.241>, #<Resolv::IPv4 202.124.127.238>, #<Resolv::IPv4 202.124.127.245>, #<Resolv::IPv4 202.124.127.251>, #<Resolv::IPv4 202.124.127.229>]
33+
puts addresses.inspect
34+
end
35+
# [#<Resolv::IPv4 202.124.127.240>, #<Resolv::IPv4 202.124.127.216>, #<Resolv::IPv4 202.124.127.223>, #<Resolv::IPv4 202.124.127.227>, #<Resolv::IPv4 202.124.127.234>, #<Resolv::IPv4 202.124.127.230>, #<Resolv::IPv4 202.124.127.208>, #<Resolv::IPv4 202.124.127.249>, #<Resolv::IPv4 202.124.127.219>, #<Resolv::IPv4 202.124.127.218>, #<Resolv::IPv4 202.124.127.212>, #<Resolv::IPv4 202.124.127.241>, #<Resolv::IPv4 202.124.127.238>, #<Resolv::IPv4 202.124.127.245>, #<Resolv::IPv4 202.124.127.251>, #<Resolv::IPv4 202.124.127.229>]
3636
```
3737

3838
### Server
3939

4040
Here is a simple example showing how to use the server:
4141

4242
``` ruby
43-
require 'async/dns'
44-
45-
class TestServer < Async::DNS::Server
46-
def process(name, resource_class, transaction)
47-
@resolver ||= Async::DNS::Resolver.new([[:udp, '8.8.8.8', 53], [:tcp, '8.8.8.8', 53]])
48-
49-
transaction.passthrough!(@resolver)
50-
end
43+
require 'async/dns'
44+
45+
class TestServer < Async::DNS::Server
46+
def process(name, resource_class, transaction)
47+
@resolver ||= Async::DNS::Resolver.new([[:udp, '8.8.8.8', 53], [:tcp, '8.8.8.8', 53]])
48+
49+
transaction.passthrough!(@resolver)
5150
end
52-
53-
server = TestServer.new([[:udp, '127.0.0.1', 2346]])
54-
55-
server.run
51+
end
52+
53+
server = TestServer.new([[:udp, '127.0.0.1', 2346]])
54+
server.run
5655
```
5756

5857
Then to test you could use `dig` like so:

lib/async/dns/server.rb

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,30 +24,55 @@
2424
require_relative 'transaction'
2525

2626
module Async::DNS
27+
#
28+
# Base class for defining asynchronous DNS servers.
29+
#
30+
# ## Example
31+
#
32+
# require 'async/dns'
33+
#
34+
# class TestServer < Async::DNS::Server
35+
# def process(name, resource_class, transaction)
36+
# @resolver ||= Async::DNS::Resolver.new([[:udp, '8.8.8.8', 53], [:tcp, '8.8.8.8', 53]])
37+
#
38+
# transaction.passthrough!(@resolver)
39+
# end
40+
# end
41+
#
42+
# server = TestServer.new([[:udp, '127.0.0.1', 2346]])
43+
# server.run
44+
#
2745
class Server
28-
# The default server interfaces
46+
# The default server interfaces.
2947
DEFAULT_ENDPOINTS = [[:udp, "0.0.0.0", 53], [:tcp, "0.0.0.0", 53]]
3048

31-
# Instantiate a server with a block
32-
#
33-
# server = Server.new do
34-
# match(/server.mydomain.com/, IN::A) do |transaction|
35-
# transaction.respond!("1.2.3.4")
36-
# end
37-
# end
49+
# Instantiate a server with a block.
3850
#
51+
# @param endpoints [Array<(Symbol, String, Integer)>] The endpoints to listen on.
52+
# @param origin [String] The default origin to resolve domains within.
53+
# @param logger [Console::Logger] The logger to use.
3954
def initialize(endpoints = DEFAULT_ENDPOINTS, origin: '.', logger: Console.logger)
4055
@endpoints = endpoints
4156
@origin = origin
4257
@logger = logger
4358
end
4459

45-
# Records are relative to this origin:
60+
# Records are relative to this origin.
61+
#
62+
# @return [String]
4663
attr_accessor :origin
4764

65+
# The logger to use.
66+
#
67+
# @return [Console::Logger]
4868
attr_accessor :logger
4969

5070
# Give a name and a record type, try to match a rule and use it for processing the given arguments.
71+
#
72+
# @param name [String] The resource name.
73+
# @param resource_class [Class<Resolv::DNS::Resource>] The requested resource class.
74+
# @param transaction [Transaction] The transaction object.
75+
# @abstract
5176
def process(name, resource_class, transaction)
5277
raise NotImplementedError.new
5378
end

lib/async/dns/transaction.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def add(resources, options = {})
153153
end
154154
end
155155

156-
# This function indicates that there was a failure to resolve the given question. The single argument must be an integer error code, typically given by the constants in {Resolv::DNS::RCode}.
156+
# This function indicates that there was a failure to resolve the given question. The single argument must be an integer error code, typically given by the constants in `Resolv::DNS::RCode`.
157157
#
158158
# The easiest way to use this function it to simply supply a symbol. Here is a list of the most commonly used ones:
159159
#

0 commit comments

Comments
 (0)
0