core/cache/mapsync/map_string.go

65 lines
810 B
Go

package mapsync
import (
"sync"
)
var (
// sync map
MapString *mapString
)
// lock
type mapString struct {
sync.RWMutex
Data map[string]string
}
func NewMapString() *mapString {
return &mapString{
Data: make(map[string]string),
}
}
func (c *mapString) Set(key, val string) {
c.Lock()
defer c.Unlock()
c.Data[key] = val
}
func (c *mapString) Get(key string) string {
c.RLock()
defer c.RUnlock()
vals, ok := c.Data[key]
if !ok {
return ""
}
return vals
}
func (c *mapString) Del(key string) {
c.Lock()
defer c.Unlock()
delete(c.Data, key)
}
func (c *mapString) Keys() (keys []string) {
c.RLock()
defer c.RUnlock()
for k, _ := range c.Data {
keys = append(keys, k)
}
return
}
func (c *mapString) All() map[string]string {
c.RLock()
defer c.RUnlock()
return c.Data
}