package pstoremem

import (
	

	ma 
	mafmt 
	manet 
)

func isFDCostlyTransport( ma.Multiaddr) bool {
	return mafmt.TCP.Matches()
}

type addrList []ma.Multiaddr

func ( addrList) () int      { return len() }
func ( addrList) (,  int) { [], [] = [], [] }

func ( addrList) (,  int) bool {
	 := []
	 := []

	// dial localhost addresses next, they should fail immediately
	 := manet.IsIPLoopback()
	 := manet.IsIPLoopback()
	if  && ! {
		return true
	}

	// dial utp and similar 'non-fd-consuming' addresses first
	 := isFDCostlyTransport()
	 := isFDCostlyTransport()
	if ! {
		return 
	}

	// if 'b' doesnt take a file descriptor
	if ! {
		return false
	}

	// if 'b' is loopback and both take file descriptors
	if  {
		return false
	}

	// for the rest, just sort by bytes
	return bytes.Compare(.Bytes(), .Bytes()) > 0
}