From 982fb75bd27a4480e9b4763659bdc11e90d06f43 Mon Sep 17 00:00:00 2001 From: antanst Date: Thu, 16 Jan 2025 09:37:29 +0200 Subject: [PATCH] Add mode that prints multiple worker status in console --- {gemini => common}/workerStatus.go | 0 hostPool/hostPool.go | 32 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) rename {gemini => common}/workerStatus.go (100%) create mode 100644 hostPool/hostPool.go diff --git a/gemini/workerStatus.go b/common/workerStatus.go similarity index 100% rename from gemini/workerStatus.go rename to common/workerStatus.go diff --git a/hostPool/hostPool.go b/hostPool/hostPool.go new file mode 100644 index 0000000..317f488 --- /dev/null +++ b/hostPool/hostPool.go @@ -0,0 +1,32 @@ +package gemini + +import ( + "sync" +) + +var ipPool = IpAddressPool{IPs: make(map[string]int)} //nolint:gochecknoglobals +var hostPool = HostPool{hostnames: make(map[string]struct{})} //nolint:gochecknoglobals + +type HostPool struct { + hostnames map[string]struct{} + Lock sync.RWMutex +} + +func (p *HostPool) Add(key string) { + p.Lock.Lock() + defer p.Lock.Unlock() + p.hostnames[key] = struct{}{} +} + +func (p *HostPool) Get(key string) bool { + p.Lock.RLock() + defer p.Lock.RUnlock() + _, ok := p.hostnames[key] + return ok +} + +func (p *HostPool) Delete(key string) { + p.Lock.Lock() + defer p.Lock.Unlock() + delete(p.hostnames, key) +}