Documentation
¶
Overview ¶
Package iterator provides stateful network iteration for MaxMind databases.
Index ¶
- type IterationResult
- type ManagedIterator
- type Manager
- func (m *Manager) CreateIterator(reader *maxminddb.Reader, database string, network netip.Prefix, ...) (*ManagedIterator, error)
- func (m *Manager) GetIterator(id string) (*ManagedIterator, bool)
- func (m *Manager) Iterate(iterator *ManagedIterator, maxResults int) (*IterationResult, error)
- func (m *Manager) RemoveIterator(id string)
- func (m *Manager) ResumeIterator(reader *maxminddb.Reader, token string) (*ManagedIterator, error)
- func (m *Manager) StartCleanup()
- func (m *Manager) StopCleanup()
- type NetworkResult
- type ResumeToken
- type SimpleIterator
- type SimpleManager
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type IterationResult ¶
type IterationResult struct { IteratorID string `json:"iterator_id"` ResumeToken string `json:"resume_token"` Results []NetworkResult `json:"results"` TotalProcessed int64 `json:"total_processed"` TotalMatched int64 `json:"total_matched"` EstimatedRemaining int64 `json:"estimated_remaining,omitempty"` HasMore bool `json:"has_more"` }
IterationResult contains the results of an iteration batch.
type ManagedIterator ¶
type ManagedIterator struct { Created time.Time LastAccess time.Time FilterEngine *filter.Engine Reader *maxminddb.Reader Network netip.Prefix LastNetwork netip.Prefix FilterMode string Database string ID string Filters []filter.Filter Processed int64 Matched int64 // contains filtered or unexported fields }
ManagedIterator represents a stateful iterator with metadata.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager manages stateful network iterators.
func (*Manager) CreateIterator ¶
func (m *Manager) CreateIterator( reader *maxminddb.Reader, database string, network netip.Prefix, filters []filter.Filter, filterMode string, ) (*ManagedIterator, error)
CreateIterator creates a new iterator for a network range.
func (*Manager) GetIterator ¶
func (m *Manager) GetIterator(id string) (*ManagedIterator, bool)
GetIterator retrieves an existing iterator by ID.
func (*Manager) Iterate ¶
func (m *Manager) Iterate(iterator *ManagedIterator, maxResults int) (*IterationResult, error)
Iterate performs one iteration batch over the reader.
func (*Manager) RemoveIterator ¶
RemoveIterator removes an iterator.
func (*Manager) ResumeIterator ¶
func (m *Manager) ResumeIterator(reader *maxminddb.Reader, token string) (*ManagedIterator, error)
ResumeIterator creates a new iterator from a resume token.
func (*Manager) StartCleanup ¶
func (m *Manager) StartCleanup()
StartCleanup starts the cleanup goroutine.
func (*Manager) StopCleanup ¶
func (m *Manager) StopCleanup()
StopCleanup stops the cleanup goroutine.
type NetworkResult ¶
type NetworkResult struct { Data map[string]any `json:"data"` Network netip.Prefix `json:"network"` }
NetworkResult represents a single network result.
type ResumeToken ¶
type ResumeToken struct { LastNetwork string `json:"last_network"` Database string `json:"database"` Network string `json:"network"` FilterMode string `json:"filter_mode"` Filters []filter.Filter `json:"filters"` Processed int64 `json:"processed"` Matched int64 `json:"matched"` }
ResumeToken contains information needed to resume iteration.
type SimpleIterator ¶
type SimpleIterator struct { Created time.Time LastAccess time.Time FilterEngine *filter.Engine Network netip.Prefix LastNetwork netip.Prefix ID string Database string FilterMode string Filters []filter.Filter Processed int64 Matched int64 }
SimpleIterator is a basic iterator for network scanning.
type SimpleManager ¶
type SimpleManager struct {
// contains filtered or unexported fields
}
SimpleManager manages basic network iterators.
func NewSimple ¶
func NewSimple(ttl, cleanupInterval time.Duration) *SimpleManager
NewSimple creates a new simple iterator manager.
func (*SimpleManager) CreateSimpleIterator ¶
func (m *SimpleManager) CreateSimpleIterator( database string, network netip.Prefix, filters []filter.Filter, filterMode string, ) (*SimpleIterator, error)
CreateSimpleIterator creates a basic iterator.
func (*SimpleManager) IterateSimple ¶
func (m *SimpleManager) IterateSimple( reader *maxminddb.Reader, iterator *SimpleIterator, maxResults int, ) (*IterationResult, error)
IterateSimple performs basic network iteration.