created medaimtx handlers for audio streams commands, server returns payloads that need some adjustments
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"errors"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
@@ -14,10 +15,16 @@ import (
|
||||
)
|
||||
|
||||
type TasksHandler struct {
|
||||
db *gorm.DB
|
||||
db *gorm.DB
|
||||
mtxH *MediaMTXHandler
|
||||
}
|
||||
|
||||
func NewTasksHandler(db *gorm.DB) *TasksHandler { return &TasksHandler{db: db} }
|
||||
func NewTasksHandler(db *gorm.DB, mtxH *MediaMTXHandler) *TasksHandler {
|
||||
return &TasksHandler{
|
||||
db: db,
|
||||
mtxH: mtxH,
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// 1) Device heartbeat + fetch next task
|
||||
@@ -151,6 +158,22 @@ func (h *TasksHandler) CreateTask(c *gin.Context) {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "lookup failed"})
|
||||
return
|
||||
}
|
||||
switch req.Type {
|
||||
case models.TaskTypeStartStream:
|
||||
payload, err := h.mtxH.StartStreamPayload(guid)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusBadGateway, gin.H{"error": "failed to build whip url"})
|
||||
return
|
||||
}
|
||||
req.Payload = payload
|
||||
|
||||
case models.TaskTypeStopStream:
|
||||
// best-effort server-side stop (kick publishers/readers on that path)
|
||||
_ = h.mtxH.KickWebRTCSessionsByPath("live/" + guid)
|
||||
if strings.TrimSpace(req.Payload) == "" {
|
||||
req.Payload = `{"reason":"server_stop"}`
|
||||
}
|
||||
}
|
||||
|
||||
task := models.DEviceTask{
|
||||
DeviceGUID: guid,
|
||||
|
||||
Reference in New Issue
Block a user