refactor capture with broadcast.
This commit is contained in:
@ -7,18 +7,37 @@ import (
|
||||
)
|
||||
|
||||
func (h *MessageHandler) boradcastCreate(session types.Session, payload *message.BroadcastCreate) error {
|
||||
broadcast := h.capture.Broadcast()
|
||||
|
||||
if !session.Admin() {
|
||||
h.logger.Debug().Msg("user not admin")
|
||||
return nil
|
||||
}
|
||||
|
||||
pipelineErr := h.broadcast.Create(payload.URL)
|
||||
if pipelineErr != nil {
|
||||
if payload.URL == "" {
|
||||
return session.Send(
|
||||
message.SystemMessage{
|
||||
Event: event.SYSTEM_ERROR,
|
||||
Title: "Error while starting broadcast",
|
||||
Message: "missing broadcast URL",
|
||||
})
|
||||
}
|
||||
|
||||
if broadcast.Started() {
|
||||
return session.Send(
|
||||
message.SystemMessage{
|
||||
Event: event.SYSTEM_ERROR,
|
||||
Title: "Error while starting broadcast",
|
||||
Message: "server is already broadcasting",
|
||||
})
|
||||
}
|
||||
|
||||
if err := broadcast.Start(payload.URL); err != nil {
|
||||
if err := session.Send(
|
||||
message.SystemMessage{
|
||||
Event: event.SYSTEM_ERROR,
|
||||
Title: "Error while starting broadcast",
|
||||
Message: pipelineErr.Error(),
|
||||
Message: err.Error(),
|
||||
}); err != nil {
|
||||
h.logger.Warn().Err(err).Msgf("sending event %s has failed", event.SYSTEM_ERROR)
|
||||
return err
|
||||
@ -33,12 +52,23 @@ func (h *MessageHandler) boradcastCreate(session types.Session, payload *message
|
||||
}
|
||||
|
||||
func (h *MessageHandler) boradcastDestroy(session types.Session) error {
|
||||
broadcast := h.capture.Broadcast()
|
||||
|
||||
if !session.Admin() {
|
||||
h.logger.Debug().Msg("user not admin")
|
||||
return nil
|
||||
}
|
||||
|
||||
h.broadcast.Destroy()
|
||||
if !broadcast.Started() {
|
||||
return session.Send(
|
||||
message.SystemMessage{
|
||||
Event: event.SYSTEM_ERROR,
|
||||
Title: "Error while stopping broadcast",
|
||||
Message: "server is not broadcasting",
|
||||
})
|
||||
}
|
||||
|
||||
broadcast.Stop()
|
||||
|
||||
if err := h.boradcastStatus(nil); err != nil {
|
||||
return err
|
||||
@ -48,14 +78,17 @@ func (h *MessageHandler) boradcastDestroy(session types.Session) error {
|
||||
}
|
||||
|
||||
func (h *MessageHandler) boradcastStatus(session types.Session) error {
|
||||
broadcast := h.capture.Broadcast()
|
||||
|
||||
msg := message.BroadcastStatus{
|
||||
Event: event.BORADCAST_STATUS,
|
||||
IsActive: broadcast.Started(),
|
||||
URL: broadcast.Url(),
|
||||
}
|
||||
|
||||
// if no session, broadcast change
|
||||
if session == nil {
|
||||
if err := h.sessions.AdminBroadcast(
|
||||
message.BroadcastStatus{
|
||||
Event: event.BORADCAST_STATUS,
|
||||
IsActive: h.broadcast.IsActive(),
|
||||
URL: h.broadcast.GetUrl(),
|
||||
}, nil); err != nil {
|
||||
if err := h.sessions.AdminBroadcast(msg, nil); err != nil {
|
||||
h.logger.Warn().Err(err).Msgf("broadcasting event %s has failed", event.BORADCAST_STATUS)
|
||||
return err
|
||||
}
|
||||
@ -68,12 +101,7 @@ func (h *MessageHandler) boradcastStatus(session types.Session) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := session.Send(
|
||||
message.BroadcastStatus{
|
||||
Event: event.BORADCAST_STATUS,
|
||||
IsActive: h.broadcast.IsActive(),
|
||||
URL: h.broadcast.GetUrl(),
|
||||
}); err != nil {
|
||||
if err := session.Send(msg); err != nil {
|
||||
h.logger.Warn().Err(err).Msgf("sending event %s has failed", event.BORADCAST_STATUS)
|
||||
return err
|
||||
}
|
||||
|
@ -15,13 +15,12 @@ import (
|
||||
)
|
||||
|
||||
type MessageHandler struct {
|
||||
logger zerolog.Logger
|
||||
sessions types.SessionManager
|
||||
desktop types.DesktopManager
|
||||
capture types.CaptureManager
|
||||
webrtc types.WebRTCManager
|
||||
broadcast types.BroadcastManager
|
||||
state *state.State
|
||||
logger zerolog.Logger
|
||||
sessions types.SessionManager
|
||||
desktop types.DesktopManager
|
||||
capture types.CaptureManager
|
||||
webrtc types.WebRTCManager
|
||||
state *state.State
|
||||
}
|
||||
|
||||
func New(
|
||||
@ -29,17 +28,15 @@ func New(
|
||||
desktop types.DesktopManager,
|
||||
capture types.CaptureManager,
|
||||
webrtc types.WebRTCManager,
|
||||
broadcast types.BroadcastManager,
|
||||
state *state.State,
|
||||
) *MessageHandler {
|
||||
return &MessageHandler{
|
||||
logger: log.With().Str("module", "websocket").Str("submodule", "handler").Logger(),
|
||||
sessions: sessions,
|
||||
desktop: desktop,
|
||||
capture: capture,
|
||||
webrtc: webrtc,
|
||||
broadcast: broadcast,
|
||||
state: state,
|
||||
logger: log.With().Str("module", "websocket").Str("submodule", "handler").Logger(),
|
||||
sessions: sessions,
|
||||
desktop: desktop,
|
||||
capture: capture,
|
||||
webrtc: webrtc,
|
||||
state: state,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,11 @@ func (h *MessageHandler) screenSet(id string, session types.Session, payload *me
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := h.capture.ChangeResolution(payload.Width, payload.Height, payload.Rate); err != nil {
|
||||
if err := h.desktop.SetScreenSize(types.ScreenSize{
|
||||
Width: payload.Width,
|
||||
Height: payload.Height,
|
||||
Rate: payload.Rate,
|
||||
}); err != nil {
|
||||
h.logger.Warn().Err(err).Msgf("unable to change screen size")
|
||||
return err
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ import (
|
||||
|
||||
const CONTROL_PROTECTION_SESSION = "by_control_protection"
|
||||
|
||||
func New(sessions types.SessionManager, desktop types.DesktopManager, capture types.CaptureManager, broadcast types.BroadcastManager, webrtc types.WebRTCManager, conf *config.WebSocket) *WebSocketHandler {
|
||||
func New(sessions types.SessionManager, desktop types.DesktopManager, capture types.CaptureManager, webrtc types.WebRTCManager, conf *config.WebSocket) *WebSocketHandler {
|
||||
logger := log.With().Str("module", "websocket").Logger()
|
||||
|
||||
state := state.New()
|
||||
@ -47,7 +47,6 @@ func New(sessions types.SessionManager, desktop types.DesktopManager, capture ty
|
||||
desktop,
|
||||
capture,
|
||||
webrtc,
|
||||
broadcast,
|
||||
state,
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user