sort.go 459 B

12345678910111213141516171819202122232425262728
  1. package nat
  2. import "sort"
  3. type portSorter struct {
  4. ports []Port
  5. by func(i, j Port) bool
  6. }
  7. func (s *portSorter) Len() int {
  8. return len(s.ports)
  9. }
  10. func (s *portSorter) Swap(i, j int) {
  11. s.ports[i], s.ports[j] = s.ports[j], s.ports[i]
  12. }
  13. func (s *portSorter) Less(i, j int) bool {
  14. ip := s.ports[i]
  15. jp := s.ports[j]
  16. return s.by(ip, jp)
  17. }
  18. func Sort(ports []Port, predicate func(i, j Port) bool) {
  19. s := &portSorter{ports, predicate}
  20. sort.Sort(s)
  21. }