github.com/guilhermebr/docker@v1.4.2-0.20150428121140-67da055cebca/nat/sort.go (about)

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