package keyspacepoolconfig

import "sync"

// CreateRateStore keeps the runtime create rate in memory.
type CreateRateStore struct {
	mu   sync.RWMutex
	rate float64
}

// NewCreateRateStore seeds the in-memory runtime rate from startup config.
func NewCreateRateStore(initialRate float64) *CreateRateStore {
	return &CreateRateStore{rate: initialRate}
}

// Get returns the current in-memory rate.
func (s *CreateRateStore) Get() (float64, bool) {
	if s == nil {
		return 0, false
	}

	s.mu.RLock()
	defer s.mu.RUnlock()
	return s.rate, true
}

// Set updates the current in-memory rate.
func (s *CreateRateStore) Set(rate float64) {
	if s == nil {
		return
	}

	s.mu.Lock()
	defer s.mu.Unlock()
	s.rate = rate
}
