对列表进行排序
(force bool)
| 243 | |
| 244 | // 对列表进行排序 |
| 245 | func (this *IPList) sortRangeItems(force bool) { |
| 246 | if len(this.bufferItemsMap) > 0 { |
| 247 | for _, item := range this.bufferItemsMap { |
| 248 | this.addItem(item, false, false) |
| 249 | } |
| 250 | this.bufferItemsMap = map[uint64]*IPItem{} |
| 251 | force = true |
| 252 | } |
| 253 | |
| 254 | if force { |
| 255 | sort.Slice(this.sortedRangeItems, func(i, j int) bool { |
| 256 | var item1 = this.sortedRangeItems[i] |
| 257 | var item2 = this.sortedRangeItems[j] |
| 258 | if iputils.CompareBytes(item1.IPFrom, item2.IPFrom) == 0 { |
| 259 | return iputils.CompareBytes(item1.IPTo, item2.IPTo) < 0 |
| 260 | } |
| 261 | return iputils.CompareBytes(item1.IPFrom, item2.IPFrom) < 0 |
| 262 | }) |
| 263 | } |
| 264 | } |
| 265 | |
| 266 | // 不加锁的情况下查找Item |
| 267 | func (this *IPList) lookupIP(ipBytes []byte) *IPItem { |