github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/manager/scheduler/nodeheap.go (about) 1 package scheduler 2 3 type nodeMaxHeap struct { 4 nodes []NodeInfo 5 lessFunc func(*NodeInfo, *NodeInfo) bool 6 length int 7 } 8 9 func (h nodeMaxHeap) Len() int { 10 return h.length 11 } 12 13 func (h nodeMaxHeap) Swap(i, j int) { 14 h.nodes[i], h.nodes[j] = h.nodes[j], h.nodes[i] 15 } 16 17 func (h nodeMaxHeap) Less(i, j int) bool { 18 // reversed to make a max-heap 19 return h.lessFunc(&h.nodes[j], &h.nodes[i]) 20 } 21 22 func (h *nodeMaxHeap) Push(x interface{}) { 23 h.nodes = append(h.nodes, x.(NodeInfo)) 24 h.length++ 25 } 26 27 func (h *nodeMaxHeap) Pop() interface{} { 28 h.length-- 29 // return value is never used 30 return nil 31 }