maxaddr

package
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Apr 2, 2026 License: AGPL-3.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AddressDisabler

type AddressDisabler interface {
	DisableAddresses(ctx context.Context, addressIDs []device.AddressID, source device.EventSource) error
}

AddressDisabler is implemented by *device.Service.

type EnabledAddressFetcher

type EnabledAddressFetcher interface {
	GetEnabledAddressesForDevice(ctx context.Context, deviceID device.DeviceID) ([]device.Address, error)
}

EnabledAddressFetcher is implemented by *device.Service.

type MaxAddressesProvider

type MaxAddressesProvider interface {
	GetMaxActiveAddresses(ctx context.Context, deviceID device.DeviceID) (*int, error)
}

MaxAddressesProvider is implemented by *rule.Service.

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service listens for address events and enforces the max active addresses rule asynchronously.

func NewService

func NewService(provider MaxAddressesProvider, fetcher EnabledAddressFetcher, disabler AddressDisabler, logger *slog.Logger) *Service

NewService creates a new maxaddr enforcement service.

func (*Service) OnAddressEvent

func (s *Service) OnAddressEvent(ctx context.Context, event device.AddressEvent)

OnAddressEvent implements device.AddressObserver. It filters events before enqueuing: only Created and Enabled events trigger enforcement.

func (*Service) OnRuleEvent

func (s *Service) OnRuleEvent(ctx context.Context, event rule.RuleEvent)

OnRuleEvent implements rule.RuleObserver. It triggers enforcement when the max active addresses rule is enabled or updated.

func (*Service) RunListener

func (s *Service) RunListener(ctx context.Context) error

RunListener processes address and rule events until the context is cancelled. Run this in a goroutine.

Jump to

Keyboard shortcuts

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