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

Method deleteItem

internal/iplibrary/ip_list.go:309–350  ·  view source on GitHub ↗

在不加锁的情况下删除某个Item 将会被别的方法引用,切记不能加锁

(itemId uint64)

Source from the content-addressed store, hash-verified

307// 在不加锁的情况下删除某个Item
308// 将会被别的方法引用,切记不能加锁
309func (this *IPList) deleteItem(itemId uint64) {
310 // 从buffer中删除
311 delete(this.bufferItemsMap, itemId)
312
313 // 从all items中删除
314 _, ok := this.allItemsMap[itemId]
315 if ok {
316 delete(this.allItemsMap, itemId)
317 }
318
319 // 检查是否存在
320 oldItem, existsOld := this.itemsMap[itemId]
321 if !existsOld {
322 return
323 }
324
325 // 从ipMap中删除
326 if IsZero(oldItem.IPTo) {
327 var ipHex = ToHex(oldItem.IPFrom)
328 ipItem, ok := this.ipMap[ipHex]
329 if ok && ipItem.Id == itemId {
330 delete(this.ipMap, ipHex)
331 }
332 }
333
334 delete(this.itemsMap, itemId)
335
336 // 删除排序中的Item
337 if !IsZero(oldItem.IPTo) {
338 var index = -1
339 for itemIndex, item := range this.sortedRangeItems {
340 if item.Id == itemId {
341 index = itemIndex
342 break
343 }
344 }
345 if index >= 0 {
346 copy(this.sortedRangeItems[index:], this.sortedRangeItems[index+1:])
347 this.sortedRangeItems = this.sortedRangeItems[:len(this.sortedRangeItems)-1]
348 }
349 }
350}

Callers 2

DeleteMethod · 0.95
addItemMethod · 0.95

Calls 2

IsZeroFunction · 0.85
ToHexFunction · 0.85

Tested by

no test coverage detected