From fe5f352d9da6df39d7b25050fa0af106f658caf0 Mon Sep 17 00:00:00 2001 From: Wanjohi <71614375+wanjohiryan@users.noreply.github.com> Date: Fri, 15 Dec 2023 12:13:56 +0300 Subject: [PATCH] Add start method --- gst-warp-sink/src/moqsink/imp.rs | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/gst-warp-sink/src/moqsink/imp.rs b/gst-warp-sink/src/moqsink/imp.rs index a0b8ad9..9610a81 100644 --- a/gst-warp-sink/src/moqsink/imp.rs +++ b/gst-warp-sink/src/moqsink/imp.rs @@ -7,6 +7,7 @@ use gst_base::subclass::prelude::*; use std::sync::Mutex; use crate::relayurl::*; +use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use moq_transport::cache::{broadcast, fragment, segment, track}; use url::Url; @@ -95,6 +96,30 @@ pub struct MoqSink { } impl MoqSink { + fn start(&self) -> Result<(), gst::ErrorMessage> { + let mut state = self.state.lock().unwrap(); + let settings = self.settings.lock().unwrap(); + + if let State::Started { .. } = *state { + unreachable!("Element already started"); + } + + let relay_url = { + let url = self.url.lock().unwrap(); + match *url { + Some(ref url) => url.clone(), + None => { + return Err(gst::error_msg!( + gst::ResourceError::Settings, + ["Cannot start without a URL being set"] + )); + } + } + }; + + Ok(()) + } + fn set_uri(self: &MoqSink, url_str: Option<&str>) -> Result<(), glib::Error> { let state = self.state.lock().unwrap(); @@ -276,4 +301,8 @@ impl URIHandlerImpl for MoqSink { } } -impl BaseSinkImpl for MoqSink {} +impl BaseSinkImpl for MoqSink { + fn start(&self) -> Result<(), gst::ErrorMessage> { + self.start() + } +}