Add mutext to streams handlers
This commit is contained in:
@@ -4,17 +4,18 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"github.com/AlexxIT/go2rtc/pkg/streamer"
|
"github.com/AlexxIT/go2rtc/pkg/streamer"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Handler func(url string) (streamer.Producer, error)
|
type Handler func(url string) (streamer.Producer, error)
|
||||||
|
|
||||||
var handlers map[string]Handler
|
var handlers = map[string]Handler{}
|
||||||
|
var handlersMu sync.Mutex
|
||||||
|
|
||||||
func HandleFunc(scheme string, handler Handler) {
|
func HandleFunc(scheme string, handler Handler) {
|
||||||
if handlers == nil {
|
handlersMu.Lock()
|
||||||
handlers = make(map[string]Handler)
|
|
||||||
}
|
|
||||||
handlers[scheme] = handler
|
handlers[scheme] = handler
|
||||||
|
handlersMu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
func getHandler(url string) Handler {
|
func getHandler(url string) Handler {
|
||||||
@@ -22,6 +23,8 @@ func getHandler(url string) Handler {
|
|||||||
if i <= 0 { // TODO: i < 4 ?
|
if i <= 0 { // TODO: i < 4 ?
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
handlersMu.Lock()
|
||||||
|
defer handlersMu.Unlock()
|
||||||
return handlers[url[:i]]
|
return handlers[url[:i]]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user