"sync"
)
-var registryMutex = &sync.Mutex{}
type Registry struct {
register map[uint16]bool
counter uint16
+ mutex sync.Mutex
}
// This method should run as a constructor
// Reserves and returns the next free sequence number
func (r *Registry) ReserveSequenceNumber() (uint16, bool) {
// Check is current SequenceNumber valid
- registryMutex.Lock()
- defer registryMutex.Unlock()
+ r.mutex.Lock()
+ defer r.mutex.Unlock()
sequenceNumber := r.counter
if _, ok := r.register[sequenceNumber]; ok {
xapp.Logger.Error("Invalid SeqenceNumber sequenceNumber: %v",sequenceNumber)
// This function checks the validity of the given subscription id
func (r *Registry) IsValidSequenceNumber(sn uint16) bool {
- registryMutex.Lock()
- defer registryMutex.Unlock()
+ r.mutex.Lock()
+ defer r.mutex.Unlock()
xapp.Logger.Debug("Registry map: %v", r.register)
if _, ok := r.register[sn]; ok {
return true
// This function sets the give id as confirmed in the register
func (r *Registry) setSubscriptionToConfirmed(sn uint16) {
- registryMutex.Lock()
- defer registryMutex.Unlock()
+ r.mutex.Lock()
+ defer r.mutex.Unlock()
r.register[sn] = true
}
//This function sets the given id as unused in the register
func (r *Registry) deleteSubscription(sn uint16) {
- registryMutex.Lock()
- defer registryMutex.Unlock()
+ r.mutex.Lock()
+ defer r.mutex.Unlock()
r.register[sn] = false
}
//This function releases the given id as unused in the register
func (r *Registry) releaseSequenceNumber(sn uint16) bool {
- registryMutex.Lock()
- defer registryMutex.Unlock()
- if r.register[sn] {
- return false
- } else {
+ r.mutex.Lock()
+ defer r.mutex.Unlock()
+ if _, ok := r.register[sn]; ok {
delete(r.register, sn)
return true
+ } else {
+ return false
}
}