package freeport

import (
	
)

// GetFreePort asks the kernel for a free open port that is ready to use.
func () (int, error) {
	,  := net.ResolveTCPAddr("tcp", "localhost:0")
	if  != nil {
		return 0, 
	}

	,  := net.ListenTCP("tcp", )
	if  != nil {
		return 0, 
	}
	defer .Close()
	return .Addr().(*net.TCPAddr).Port, nil
}

// GetPort is deprecated, use GetFreePort instead
// Ask the kernel for a free open port that is ready to use
func () int {
	,  := GetFreePort()
	if  != nil {
		panic()
	}
	return 
}

// GetFreePort asks the kernel for free open ports that are ready to use.
func ( int) ([]int, error) {
	var  []int
	for  := 0;  < ; ++ {
		,  := net.ResolveTCPAddr("tcp", "localhost:0")
		if  != nil {
			return nil, 
		}

		,  := net.ListenTCP("tcp", )
		if  != nil {
			return nil, 
		}
		defer .Close()
		 = append(, .Addr().(*net.TCPAddr).Port)
	}
	return , nil
}