增加 getAll keys removeAll 等数据接口

This commit is contained in:
Star 2025-07-24 20:35:10 +08:00
parent cceea9466c
commit 12538decee

38
data.go
View File

@ -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()