| package scheduler |
| |
| type nodeMaxHeap struct { |
| nodes []NodeInfo |
| lessFunc func(*NodeInfo, *NodeInfo) bool |
| length int |
| } |
| |
| func (h nodeMaxHeap) Len() int { |
| return h.length |
| } |
| |
| func (h nodeMaxHeap) Swap(i, j int) { |
| h.nodes[i], h.nodes[j] = h.nodes[j], h.nodes[i] |
| } |
| |
| func (h nodeMaxHeap) Less(i, j int) bool { |
| // reversed to make a max-heap |
| return h.lessFunc(&h.nodes[j], &h.nodes[i]) |
| } |
| |
| func (h *nodeMaxHeap) Push(x interface{}) { |
| h.nodes = append(h.nodes, x.(NodeInfo)) |
| h.length++ |
| } |
| |
| func (h *nodeMaxHeap) Pop() interface{} { |
| h.length-- |
| // return value is never used |
| return nil |
| } |