iterator

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 8, 2025 License: ISC Imports: 11 Imported by: 0

Documentation

Overview

Package iterator provides stateful network iteration for MaxMind databases.

Index

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 New

func New(ttl, cleanupInterval time.Duration) *Manager

New creates a new iterator manager.

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

func (m *Manager) RemoveIterator(id string)

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL