Add FindFunc
This commit is contained in:
parent
d5e6aaba0b
commit
ad7103ecdc
17
zone.go
17
zone.go
|
@ -68,8 +68,8 @@ type ZoneData struct {
|
||||||
RR map[uint16][]RR // Map of the RR type to the RR
|
RR map[uint16][]RR // Map of the RR type to the RR
|
||||||
Signatures map[uint16][]*RR_RRSIG // DNSSEC signatures for the RRs, stored under type covered
|
Signatures map[uint16][]*RR_RRSIG // DNSSEC signatures for the RRs, stored under type covered
|
||||||
NonAuth bool // Always false, except for NSsets that differ from z.Origin
|
NonAuth bool // Always false, except for NSsets that differ from z.Origin
|
||||||
mutex *sync.RWMutex // For locking
|
mutex *sync.RWMutex // For locking
|
||||||
radix *radix.Radix // The actual radix node belonging to this value
|
radix *radix.Radix // The actual radix node belonging to this value
|
||||||
}
|
}
|
||||||
|
|
||||||
// newZoneData creates a new zone data element
|
// newZoneData creates a new zone data element
|
||||||
|
@ -213,6 +213,19 @@ func (z *Zone) Find(s string) (*ZoneData, bool) {
|
||||||
return zd.Value.(*ZoneData), e
|
return zd.Value.(*ZoneData), e
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FindFunc works like Find, but the function f is executed on
|
||||||
|
// each node which has a non-nil Value during the tree traversel.
|
||||||
|
// If f returns true, that node is returned.
|
||||||
|
func (z *Zone) FindFunc(s string, f func(interface{}) bool) (*ZoneData, bool, bool) {
|
||||||
|
z.mutex.RLock()
|
||||||
|
defer z.mutex.RUnlock()
|
||||||
|
zd, e, b := z.Radix.FindFunc(toRadixName(s), f)
|
||||||
|
if zd == nil {
|
||||||
|
return nil, false, false
|
||||||
|
}
|
||||||
|
return zd.Value.(*ZoneData), e, b
|
||||||
|
}
|
||||||
|
|
||||||
// Up bla bla
|
// Up bla bla
|
||||||
func (z *Zone) Up(s string) *ZoneData {
|
func (z *Zone) Up(s string) *ZoneData {
|
||||||
z.mutex.RLock()
|
z.mutex.RLock()
|
||||||
|
|
Loading…
Reference in New Issue