增加 getAll keys removeAll 等数据接口
This commit is contained in:
parent
cceea9466c
commit
12538decee
38
data.go
38
data.go
@ -2,6 +2,7 @@ package plugin
|
||||
|
||||
import (
|
||||
"container/list"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func (obj *PluginObject) Get(k string) any {
|
||||
@ -16,6 +17,33 @@ func (obj *PluginObject) Set(k string, v any) {
|
||||
obj.taskData[k] = v
|
||||
}
|
||||
|
||||
func (obj *PluginObject) GetAll(prefix *string) any {
|
||||
obj.taskDataLock.RLock()
|
||||
defer obj.taskDataLock.RUnlock()
|
||||
if prefix == nil {
|
||||
return obj.taskData
|
||||
}
|
||||
m := make(map[string]any)
|
||||
for k := range obj.taskData {
|
||||
if strings.HasPrefix(k, *prefix) {
|
||||
m[k] = obj.taskData[k]
|
||||
}
|
||||
}
|
||||
return m
|
||||
}
|
||||
|
||||
func (obj *PluginObject) Keys(prefix *string) []string {
|
||||
obj.taskDataLock.Lock()
|
||||
defer obj.taskDataLock.Unlock()
|
||||
keys := make([]string, 0)
|
||||
for k := range obj.taskData {
|
||||
if prefix == nil || strings.HasPrefix(k, *prefix) {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
}
|
||||
return keys
|
||||
}
|
||||
|
||||
func (obj *PluginObject) GetSet(k string, fn func(old any) any) {
|
||||
obj.taskDataLock.Lock()
|
||||
defer obj.taskDataLock.Unlock()
|
||||
@ -28,6 +56,16 @@ func (obj *PluginObject) Remove(k string) {
|
||||
delete(obj.taskData, k)
|
||||
}
|
||||
|
||||
func (obj *PluginObject) RemoveAll(prefix *string) {
|
||||
obj.taskDataLock.Lock()
|
||||
defer obj.taskDataLock.Unlock()
|
||||
for k := range obj.taskData {
|
||||
if prefix == nil || strings.HasPrefix(k, *prefix) {
|
||||
delete(obj.taskData, k)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (obj *PluginObject) Push(k string, v any) {
|
||||
obj.taskListLock.Lock()
|
||||
defer obj.taskListLock.Unlock()
|
||||
|
Loading…
x
Reference in New Issue
Block a user