增加 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 (
|
import (
|
||||||
"container/list"
|
"container/list"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (obj *PluginObject) Get(k string) any {
|
func (obj *PluginObject) Get(k string) any {
|
||||||
@ -16,6 +17,33 @@ func (obj *PluginObject) Set(k string, v any) {
|
|||||||
obj.taskData[k] = v
|
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) {
|
func (obj *PluginObject) GetSet(k string, fn func(old any) any) {
|
||||||
obj.taskDataLock.Lock()
|
obj.taskDataLock.Lock()
|
||||||
defer obj.taskDataLock.Unlock()
|
defer obj.taskDataLock.Unlock()
|
||||||
@ -28,6 +56,16 @@ func (obj *PluginObject) Remove(k string) {
|
|||||||
delete(obj.taskData, k)
|
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) {
|
func (obj *PluginObject) Push(k string, v any) {
|
||||||
obj.taskListLock.Lock()
|
obj.taskListLock.Lock()
|
||||||
defer obj.taskListLock.Unlock()
|
defer obj.taskListLock.Unlock()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user