75 lines
1.5 KiB
Go
75 lines
1.5 KiB
Go
package plugin
|
|
|
|
import (
|
|
"container/list"
|
|
)
|
|
|
|
func (obj *PluginObject) Get(k string) any {
|
|
obj.taskDataLock.RLock()
|
|
defer obj.taskDataLock.RUnlock()
|
|
return obj.taskData[k]
|
|
}
|
|
|
|
func (obj *PluginObject) Set(k string, v any) {
|
|
obj.taskDataLock.Lock()
|
|
defer obj.taskDataLock.Unlock()
|
|
obj.taskData[k] = v
|
|
}
|
|
|
|
func (obj *PluginObject) GetSet(k string, fn func(old any) any) {
|
|
obj.taskDataLock.Lock()
|
|
defer obj.taskDataLock.Unlock()
|
|
obj.taskData[k] = fn(obj.taskData[k])
|
|
}
|
|
|
|
func (obj *PluginObject) Remove(k string) {
|
|
obj.taskDataLock.Lock()
|
|
defer obj.taskDataLock.Unlock()
|
|
delete(obj.taskData, k)
|
|
}
|
|
|
|
func (obj *PluginObject) Push(k string, v any) {
|
|
obj.taskListLock.Lock()
|
|
defer obj.taskListLock.Unlock()
|
|
list1 := obj.taskList[k]
|
|
if list1 == nil {
|
|
list1 = list.New()
|
|
obj.taskList[k] = list1
|
|
}
|
|
obj.taskList[k].PushBack(v)
|
|
}
|
|
|
|
func (obj *PluginObject) Pop(k string) any {
|
|
obj.taskListLock.RLock()
|
|
list1 := obj.taskList[k]
|
|
obj.taskListLock.RUnlock()
|
|
if list1 == nil {
|
|
return nil
|
|
}
|
|
|
|
obj.taskListLock.Lock()
|
|
defer obj.taskListLock.Unlock()
|
|
item := list1.Front()
|
|
if item == nil {
|
|
return nil
|
|
}
|
|
v := obj.taskList[k].Remove(item)
|
|
return v
|
|
}
|
|
|
|
func (obj *PluginObject) CountList(k string) int {
|
|
obj.taskListLock.RLock()
|
|
defer obj.taskListLock.RUnlock()
|
|
list1 := obj.taskList[k]
|
|
if list1 == nil {
|
|
return 0
|
|
}
|
|
return list1.Len()
|
|
}
|
|
|
|
func (obj *PluginObject) RemoveList(k string) {
|
|
obj.taskListLock.Lock()
|
|
defer obj.taskListLock.Unlock()
|
|
delete(obj.taskList, k)
|
|
}
|