plugin/file: Rename do to walk and cleanup and document (#2987)

* plugin/file: Rename do to walk, cleanup and document

* This renames Do to Walk to be more inline with Go standards. Also make
  it return an error instead of a bool.
  Also give give walk access to rrs. Alternatively e.m could be
  exported, but just access the map of rrs should work as well. Another
  alternative would be adding a whole bunch of helper functions, but
  those need grab and return the data. Just having access to the rrs
  should be easiest for most Walks.
* It adds Type and TypeForWildcard to show the different functions
* *Removes* the identical RR check when inserting; this was only done
  for A, AAAA and MX and not finished; removed under the mantra garbage
  in garbage out.
* Reuses Types to return all the types in an *tree.Elem

Signed-off-by: Miek Gieben <miek@miek.nl>

* better comments

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben
2019-07-18 17:44:47 +00:00
committed by GitHub
parent 527772fc5f
commit 1d5095cf67
7 changed files with 154 additions and 123 deletions

View File

@@ -275,7 +275,8 @@ func (n *Node) deleteMax() (root *Node, d int) {
return
}
// Delete removes rr from the tree, is the node turns empty, that node is deleted with DeleteNode.
// Delete removes all RRs of type rr.Header().Rrtype from e. If after the deletion of rr the node is empty the
// entire node is deleted.
func (t *Tree) Delete(rr dns.RR) {
if t.Root == nil {
return
@@ -283,15 +284,13 @@ func (t *Tree) Delete(rr dns.RR) {
el, _ := t.Search(rr.Header().Name)
if el == nil {
t.deleteNode(rr)
return
}
// Delete from this element.
empty := el.Delete(rr)
if empty {
el.Delete(rr)
if el.Empty() {
t.deleteNode(rr)
return
}
return
}
// DeleteNode deletes the node that matches rr according to Less().