MCPcopy Create free account
hub / github.com/GoEdgeLab/EdgeNode / lookupIP

Method lookupIP

internal/iplibrary/ip_list.go:267–305  ·  view source on GitHub ↗

不加锁的情况下查找Item

(ipBytes []byte)

Source from the content-addressed store, hash-verified

265
266// 不加锁的情况下查找Item
267func (this *IPList) lookupIP(ipBytes []byte) *IPItem {
268 {
269 item, ok := this.ipMap[ToHex(ipBytes)]
270 if ok && (item.ExpiredAt == 0 || item.ExpiredAt > fasttime.Now().Unix()) {
271 return item
272 }
273 }
274
275 if len(this.sortedRangeItems) == 0 {
276 return nil
277 }
278
279 var count = len(this.sortedRangeItems)
280 var resultIndex = -1
281 sort.Search(count, func(i int) bool {
282 var item = this.sortedRangeItems[i]
283 var cmp = iputils.CompareBytes(item.IPFrom, ipBytes)
284 if cmp < 0 {
285 if iputils.CompareBytes(item.IPTo, ipBytes) >= 0 {
286 resultIndex = i
287 }
288 return false
289 } else if cmp == 0 {
290 resultIndex = i
291 return false
292 }
293 return true
294 })
295
296 if resultIndex < 0 || resultIndex >= count {
297 return nil
298 }
299
300 var item = this.sortedRangeItems[resultIndex]
301 if item.ExpiredAt == 0 || item.ExpiredAt > fasttime.Now().Unix() {
302 return item
303 }
304 return nil
305}
306
307// 在不加锁的情况下删除某个Item
308// 将会被别的方法引用,切记不能加锁

Callers 3

ContainsMethod · 0.95
ContainsExpiresMethod · 0.95
ContainsIPStringsMethod · 0.95

Calls 3

NowFunction · 0.92
ToHexFunction · 0.85
UnixMethod · 0.80

Tested by

no test coverage detected