sorter.go 992 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. package docker
  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 sortPorts(ports []Port, predicate func(i, j Port) bool) {
  19. s := &portSorter{ports, predicate}
  20. sort.Sort(s)
  21. }
  22. type containerSorter struct {
  23. containers []*Container
  24. by func(i, j *Container) bool
  25. }
  26. func (s *containerSorter) Len() int {
  27. return len(s.containers)
  28. }
  29. func (s *containerSorter) Swap(i, j int) {
  30. s.containers[i], s.containers[j] = s.containers[j], s.containers[i]
  31. }
  32. func (s *containerSorter) Less(i, j int) bool {
  33. return s.by(s.containers[i], s.containers[j])
  34. }
  35. func sortContainers(containers []*Container, predicate func(i, j *Container) bool) {
  36. s := &containerSorter{containers, predicate}
  37. sort.Sort(s)
  38. }