@@ -2,47 +2,35 @@ package platform
2
2
3
3
import "sync"
4
4
5
- type ConcurrentMap struct {
6
- values map [string ]interface {}
7
- sync.RWMutex
8
- }
9
-
10
5
func NewConcurrentMap () * ConcurrentMap {
11
- return & ConcurrentMap {
12
- values : make (map [string ]interface {}),
13
- }
6
+ var cm ConcurrentMap
7
+ return & cm
14
8
}
15
9
16
- func ( c * ConcurrentMap ) Set ( key string , value interface {}) {
17
- c . Lock ()
18
- defer c . Unlock ()
19
- c . values [ key ] = value
10
+ type ConcurrentMap sync. Map
11
+
12
+ func ( cm * ConcurrentMap ) Set ( key string , value any ) {
13
+ ( * sync . Map )( cm ). Store ( key , value )
20
14
}
21
15
22
- func (c * ConcurrentMap ) Get (key string ) (interface {}, bool ) {
23
- c .RLock ()
24
- defer c .RUnlock ()
25
- if val , ok := c .values [key ]; ok {
26
- return val , true
27
- }
28
- return "" , false
16
+ func (cm * ConcurrentMap ) Get (key string ) (any , bool ) {
17
+ return (* sync .Map )(cm ).Load (key )
29
18
}
30
19
31
- func (c * ConcurrentMap ) Delete (key string ) {
32
- c .RLock ()
33
- defer c .RUnlock ()
34
- delete (c .values , key )
20
+ func (cm * ConcurrentMap ) Delete (key string ) {
21
+ (* sync .Map )(cm ).Delete (key )
35
22
}
36
23
37
- func (c * ConcurrentMap ) List () map [string ]interface {} {
38
- return c .values
24
+ func (cm * ConcurrentMap ) Contains (key string ) bool {
25
+ _ , ok := (* sync .Map )(cm ).Load (key )
26
+ return ok
39
27
}
40
28
41
- func (c * ConcurrentMap ) Contains ( key string ) bool {
42
- c . RLock ( )
43
- defer c . RUnlock ()
44
- if _ , ok := c . values [key ]; ok {
29
+ func (cm * ConcurrentMap ) List () map [ string ] any {
30
+ list := make ( map [ string ] any )
31
+ ( * sync . Map )( cm ). Range ( func ( key , value any ) bool {
32
+ list [key .( string )] = value
45
33
return true
46
- }
47
- return false
34
+ })
35
+ return list
48
36
}
0 commit comments