portalloc

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Aug 3, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package portalloc provides a central port allocator for Gopherstack services. Services that expose real network endpoints (e.g., ElastiCache, Lambda function URLs) can request a dedicated port from the pool and release it when the resource is deleted.

Index

Constants

This section is empty.

Variables

View Source
var ErrInvalidRange = errors.New("invalid port range: start must be ≥ 1 and end > start")

ErrInvalidRange is returned when the port range is invalid.

View Source
var ErrNoPortsAvailable = errors.New("no ports available in range")

ErrNoPortsAvailable is returned when the pool has no free ports.

View Source
var ErrPortNotAllocated = errors.New("port not allocated")

ErrPortNotAllocated is returned when trying to release a port that was not allocated.

Functions

func IsListening

func IsListening(addr string) bool

IsListening performs a TCP health check on the given address to detect zombie listeners — ports that are allocated but no longer serving connections. Returns true if a listener is detected.

Types

type Allocator

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

Allocator manages a pool of ports within a configurable range. It is safe for concurrent use.

func New

func New(start, end int) (*Allocator, error)

New creates a new Allocator for the half-open range [start, end). start must be ≥ 1 and end must be > start.

func (*Allocator) Acquire

func (a *Allocator) Acquire(label string) (int, error)

Acquire returns the next free port in the range and associates it with label. Returns ErrNoPortsAvailable when the pool is exhausted.

func (*Allocator) Allocated

func (a *Allocator) Allocated() map[int]string

Allocated returns a snapshot of all currently allocated ports and their labels.

func (*Allocator) Available

func (a *Allocator) Available() int

Available returns the number of unallocated ports in the range.

func (*Allocator) IsAllocated

func (a *Allocator) IsAllocated(port int) bool

IsAllocated reports whether port is currently allocated.

func (*Allocator) Release

func (a *Allocator) Release(port int) error

Release returns a previously allocated port back to the pool. Returns ErrPortNotAllocated if the port was not allocated.

Jump to

Keyboard shortcuts

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