From 12538deceef4f92bd6bcbe6c13f111ce1d2df31d Mon Sep 17 00:00:00 2001 From: Star Date: Thu, 24 Jul 2025 20:35:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20getAll=20keys=20removeAll?= =?UTF-8?q?=20=E7=AD=89=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/data.go b/data.go index 0b9e210..16475c4 100644 --- a/data.go +++ b/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()