| package nat | |
| import "sort" | |
| type portSorter struct { | |
| ports []Port | |
| by func(i, j Port) bool | |
| } | |
| func (s *portSorter) Len() int { | |
| return len(s.ports) | |
| } | |
| func (s *portSorter) Swap(i, j int) { | |
| s.ports[i], s.ports[j] = s.ports[j], s.ports[i] | |
| } | |
| func (s *portSorter) Less(i, j int) bool { | |
| ip := s.ports[i] | |
| jp := s.ports[j] | |
| return s.by(ip, jp) | |
| } | |
| func Sort(ports []Port, predicate func(i, j Port) bool) { | |
| s := &portSorter{ports, predicate} | |
| sort.Sort(s) | |
| } |