module Sessions class Pause def initialize(session) @session = session end def call cancel_timeout_job @session.pause! if @session.may_pause? Mediamtx::Client.new.set_always_available(@session, enabled: true) # Slate su path per HLS in pausa; RTMP telefono si ferma via comando app. log_event("paused") SessionChannel.broadcast_message(@session, { type: "command", action: "pause_stream" }) SessionChannel.broadcast_message(@session, { type: "stream_event", event: "paused" }) Youtube::LivePipeline.schedule!(@session, force: true) if @session.platform == "youtube" @session end private def cancel_timeout_job return if @session.timeout_job_id.blank? Sidekiq::ScheduledSet.new.find_job(@session.timeout_job_id)&.delete @session.update!(timeout_job_id: nil) end def log_event(type) @session.stream_events.create!(event_type: type, occurred_at: Time.current, metadata: {}) end end end