feat: Add signal related params to exec

This commit is contained in:
dadav
2024-01-10 20:20:00 +01:00
parent 4b62a6e34f
commit 152719441e
6 changed files with 358 additions and 156 deletions
+20 -7
View File
@@ -20,6 +20,12 @@ import (
"github.com/rs/zerolog"
)
type Params struct {
KillSignal os.Signal
Command string
KillTimeout time.Duration
}
func Init() {
rtsp.HandleFunc(func(conn *pkg.Conn) bool {
waitersMu.Lock()
@@ -47,7 +53,12 @@ func Init() {
func execHandle(url string) (core.Producer, error) {
var path string
args := shell.QuoteSplit(url[5:]) // remove `exec:`
params, err := parseParams(url)
if err != nil {
return nil, err
}
args := shell.QuoteSplit(params.Command[5:]) // remove `exec:`
for i, arg := range args {
if arg == "{output}" {
if rtsp.Port == "" {
@@ -67,14 +78,14 @@ func execHandle(url string) (core.Producer, error) {
}
if path == "" {
return handlePipe(url, cmd)
return handlePipe(url, cmd, params)
}
return handleRTSP(url, path, cmd)
}
func handlePipe(url string, cmd *exec.Cmd) (core.Producer, error) {
r, err := PipeCloser(cmd)
func handlePipe(_ string, cmd *exec.Cmd, params *Params) (core.Producer, error) {
r, err := PipeCloser(cmd, params)
if err != nil {
return nil, err
}
@@ -144,6 +155,8 @@ func handleRTSP(url, path string, cmd *exec.Cmd) (core.Producer, error) {
// internal
var log zerolog.Logger
var waiters = map[string]chan core.Producer{}
var waitersMu sync.Mutex
var (
log zerolog.Logger
waiters = map[string]chan core.Producer{}
waitersMu sync.Mutex
)