package vqdcms

import (
	"sync"
)

type VqdTaskMap struct {
	M map[string]*VQDHandle // 自定义K-V的类型;
	sync.RWMutex
}

// 读出相应Key的Map
func (m *VqdTaskMap) LoadTaskMap(key string) (value *VQDHandle, ok bool) {
	m.RLock()
	defer m.RUnlock()
	value, ok = m.M[key]
	return
}

// 删除相应Key的Map
func (m *VqdTaskMap) DeleteTaskMap(key string) {
	m.Lock()
	defer m.Unlock()
	delete(m.M, key)
}

// 增加或修改相应Key的Map
func (m *VqdTaskMap) StoreChildMap(key string, value *VQDHandle) {
	m.Lock()
	defer m.Unlock()
	m.M[key] = value
}

// 删除全部的Map
func (m *VqdTaskMap) DeleteTaskMapAll() {
	m.RLock()
	defer m.RUnlock()
	for _, handle := range m.M {
		handle.Destroy()
	}
}
