Files
mq/dag/v1/operations.go
2024-11-23 10:51:22 +05:45

65 lines
1.1 KiB
Go

package v1
import (
"sync"
"github.com/oarkflow/mq"
)
type Operations struct {
mu *sync.RWMutex
Handlers map[string]func(string) mq.Processor
}
var ops = &Operations{mu: &sync.RWMutex{}, Handlers: make(map[string]func(string) mq.Processor)}
func AddHandler(key string, handler func(string) mq.Processor) {
ops.mu.Lock()
ops.Handlers[key] = handler
ops.mu.Unlock()
}
func GetHandler(key string) func(string) mq.Processor {
return ops.Handlers[key]
}
func AvailableHandlers() []string {
var op []string
for opt := range ops.Handlers {
op = append(op, opt)
}
return op
}
type List struct {
mu *sync.RWMutex
Handlers map[string]*DAG
}
var dags = &List{mu: &sync.RWMutex{}, Handlers: make(map[string]*DAG)}
func AddDAG(key string, handler *DAG) {
dags.mu.Lock()
dags.Handlers[key] = handler
dags.mu.Unlock()
}
func GetDAG(key string) *DAG {
return dags.Handlers[key]
}
func ClearDAG() {
dags.mu.Lock()
clear(dags.Handlers)
dags.mu.Unlock()
dags.Handlers = make(map[string]*DAG)
}
func AvailableDAG() []string {
var op []string
for opt := range dags.Handlers {
op = append(op, opt)
}
return op
}