Browse Source

Merge branch 'main' of ssh://github.com/OliveTin/OliveTin

jamesread 2 years ago
parent
commit
9d33e62d34
2 changed files with 28 additions and 8 deletions
  1. 0 8
      internal/stringvariables/entities.go
  2. 28 0
      internal/stringvariables/map.go

+ 0 - 8
internal/stringvariables/entities.go

@@ -30,14 +30,6 @@ func ReplaceEntityVars(prefix string, source string) string {
 	return source
 	return source
 }
 }
 
 
-func RemoveKeysThatStartWith(search string) {
-	for k, _ := range contents {
-		if strings.HasPrefix(k, search) {
-			delete(contents, k)
-		}
-	}
-}
-
 func GetEntities(entityTitle string) []string {
 func GetEntities(entityTitle string) []string {
 	var ret []string
 	var ret []string
 
 

+ 28 - 0
internal/stringvariables/map.go

@@ -12,6 +12,8 @@ package stringvariables
 import (
 import (
 	"github.com/prometheus/client_golang/prometheus"
 	"github.com/prometheus/client_golang/prometheus"
 	"github.com/prometheus/client_golang/prometheus/promauto"
 	"github.com/prometheus/client_golang/prometheus/promauto"
+	"strings"
+	"sync"
 )
 )
 
 
 var (
 var (
@@ -21,15 +23,25 @@ var (
 		Name: "olivetin_sv_count",
 		Name: "olivetin_sv_count",
 		Help: "The number entries in the sv map",
 		Help: "The number entries in the sv map",
 	})
 	})
+
+	rwmutex = sync.RWMutex{}
 )
 )
 
 
 func init() {
 func init() {
+	rwmutex.Lock()
+
 	contents = make(map[string]string)
 	contents = make(map[string]string)
+
+	rwmutex.Unlock()
 }
 }
 
 
 func Get(key string) string {
 func Get(key string) string {
+	rwmutex.RLock()
+
 	v, ok := contents[key]
 	v, ok := contents[key]
 
 
+	rwmutex.RUnlock()
+
 	if !ok {
 	if !ok {
 		return ""
 		return ""
 	} else {
 	} else {
@@ -42,7 +54,23 @@ func GetAll() map[string]string {
 }
 }
 
 
 func Set(key string, value string) {
 func Set(key string, value string) {
+	rwmutex.Lock()
+
 	contents[key] = value
 	contents[key] = value
 
 
 	metricSvCount.Set(float64(len(contents)))
 	metricSvCount.Set(float64(len(contents)))
+
+	rwmutex.Unlock()
+}
+
+func RemoveKeysThatStartWith(search string) {
+	rwmutex.Lock()
+
+	for k, _ := range contents {
+		if strings.HasPrefix(k, search) {
+			delete(contents, k)
+		}
+	}
+
+	rwmutex.Unlock()
 }
 }