From ad5321c6e31dd6b723935e195830789efdda12c5 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Thu, 16 May 2024 16:45:47 +0200 Subject: pkg/fuzzer/queue: refactor DynamicSource Use a simpler implementation. Don't assume the nested Source may be nil. --- pkg/fuzzer/queue/queue.go | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'pkg/fuzzer/queue') diff --git a/pkg/fuzzer/queue/queue.go b/pkg/fuzzer/queue/queue.go index 68552083c..0fd87f7c7 100644 --- a/pkg/fuzzer/queue/queue.go +++ b/pkg/fuzzer/queue/queue.go @@ -343,24 +343,23 @@ func (pq *PriorityQueue) Next() *Request { return pq.ops.Pop() } -type DynamicSource struct { - value atomic.Pointer[wrapSource] +type DynamicSourceCtl struct { + value atomic.Pointer[Source] } -type wrapSource struct { - source Source +// DynamicSource is assumed never to point to nil. +func DynamicSource(source Source) *DynamicSourceCtl { + var ret DynamicSourceCtl + ret.Store(source) + return &ret } -func (ds *DynamicSource) Store(source Source) { - ds.value.Store(&wrapSource{source}) +func (ds *DynamicSourceCtl) Store(source Source) { + ds.value.Store(&source) } -func (ds *DynamicSource) Next() *Request { - val := ds.value.Load() - if val == nil || val.source == nil { - return nil - } - return val.source.Next() +func (ds *DynamicSourceCtl) Next() *Request { + return (*ds.value.Load()).Next() } // Deduplicator() keeps track of the previously run requests to avoid re-running them. -- cgit mrf-deployment