MCPcopy Create free account
hub / github.com/Adaptix-Framework/AdaptixC2 / RemoveIf

Method RemoveIf

AdaptixServer/core/utils/safe/queue.go:113–143  ·  view source on GitHub ↗
(predicate func(v interface{}) bool)

Source from the content-addressed store, hash-verified

111}
112
113func (q *Queue) RemoveIf(predicate func(v interface{}) bool) (bool, interface{}) {
114 q.lock.Lock()
115 defer q.lock.Unlock()
116
117 var found bool
118 var removed interface{}
119 newBuf := make([]interface{}, 0, q.capacity)
120
121 for i := 0; i < q.size; i++ {
122 idx := (q.head + i) % q.capacity
123 item := q.buffer[idx]
124 if !found && predicate(item) {
125 found = true
126 removed = item
127 continue
128 }
129 newBuf = append(newBuf, item)
130 }
131
132 if !found {
133 return false, nil
134 }
135
136 q.buffer = make([]interface{}, q.capacity)
137 copy(q.buffer, newBuf)
138 q.head = 0
139 q.tail = len(newBuf)
140 q.size = len(newBuf)
141
142 return true, removed
143}
144
145func (q *Queue) FindIf(predicate func(v interface{}) bool) (bool, interface{}) {
146 q.lock.RLock()

Callers 1

CancelMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected