Documentation
¶
Overview ¶
Package cache provides DNS caching functionality for SDNS.
Index ¶
- Variables
- func Key(q dns.Question, cd ...bool) uint64
- func KeySimple(q dns.Question, cd ...bool) uint64
- func KeyString(qname string, qtype, qclass uint16, cd bool) uint64
- type Cache
- type SyncUInt64Map
- func (m *SyncUInt64Map[V]) All() iter.Seq2[uint64, V]
- func (m *SyncUInt64Map[V]) Del(key uint64) bool
- func (m *SyncUInt64Map[V]) ForEach(f func(uint64, V) bool)
- func (m *SyncUInt64Map[V]) Get(key uint64) (V, bool)
- func (m *SyncUInt64Map[V]) Has(key uint64) bool
- func (m *SyncUInt64Map[V]) Len() int64
- func (m *SyncUInt64Map[V]) RandomSample(maxSample int) []uint64
- func (m *SyncUInt64Map[V]) Set(key uint64, value V)
Constants ¶
This section is empty.
Variables ¶
var ( // ErrCacheNotFound error ErrCacheNotFound = errors.New("cache not found") // ErrCacheExpired error ErrCacheExpired = errors.New("cache expired") )
Functions ¶
func Key ¶ added in v1.5.1
Key generates a cache key for DNS queries. This implementation uses object pooling and stack allocation to achieve zero heap allocations. The optional cd parameter indicates if the CD (Checking Disabled) bit should be included.
Types ¶
type Cache ¶ added in v0.2.4
type Cache struct {
// contains filtered or unexported fields
}
Cache is cache.
func (*Cache) Add ¶ added in v0.2.4
Add adds a new element to the cache. If the element already exists it is overwritten.
type SyncUInt64Map ¶ added in v1.5.0
type SyncUInt64Map[V any] struct { // contains filtered or unexported fields }
SyncUInt64Map: lock-free hash map using CAS operations on linked lists
func NewSyncUInt64Map ¶ added in v1.5.0
func NewSyncUInt64Map[V any](sizePower uint) *SyncUInt64Map[V]
NewSyncUInt64Map creates a new optimized map for uint64 keys
func (*SyncUInt64Map[V]) All ¶ added in v1.5.0
func (m *SyncUInt64Map[V]) All() iter.Seq2[uint64, V]
func (*SyncUInt64Map[V]) Del ¶ added in v1.5.0
func (m *SyncUInt64Map[V]) Del(key uint64) bool
Del removes a key from the map
func (*SyncUInt64Map[V]) ForEach ¶ added in v1.5.0
func (m *SyncUInt64Map[V]) ForEach(f func(uint64, V) bool)
ForEach iterates through all key-value pairs
func (*SyncUInt64Map[V]) Get ¶ added in v1.5.0
func (m *SyncUInt64Map[V]) Get(key uint64) (V, bool)
Get retrieves a value by key
func (*SyncUInt64Map[V]) Has ¶ added in v1.5.0
func (m *SyncUInt64Map[V]) Has(key uint64) bool
Has checks if a key exists in the map without retrieving its value
func (*SyncUInt64Map[V]) Len ¶ added in v1.5.0
func (m *SyncUInt64Map[V]) Len() int64
Len returns the number of elements in the map
func (*SyncUInt64Map[V]) RandomSample ¶ added in v1.5.0
func (m *SyncUInt64Map[V]) RandomSample(maxSample int) []uint64
RandomSample: O(sample) complexity by sampling random buckets, not full scan
func (*SyncUInt64Map[V]) Set ¶ added in v1.5.0
func (m *SyncUInt64Map[V]) Set(key uint64, value V)
Set adds or updates a key-value pair