Skip to content

Commit

Permalink
Errors are propagated to the caller (#325)
Browse files Browse the repository at this point in the history
  • Loading branch information
satoren authored Jan 8, 2025
1 parent 57949a8 commit 9374ee3
Show file tree
Hide file tree
Showing 12 changed files with 132 additions and 95 deletions.
32 changes: 16 additions & 16 deletions lib/consumer.ex
Original file line number Diff line number Diff line change
Expand Up @@ -97,15 +97,15 @@ defmodule Mediasoup.Consumer do
Dump internal stat for Consumer.
"""
def dump(%Consumer{pid: pid}) do
GenServer.call(pid, {:dump, []})
NifWrap.call(pid, {:dump, []})
end

@spec closed?(t) :: boolean
@doc """
Tells whether the given consumer is closed on the local node.
"""
def closed?(%Consumer{pid: pid}) do
!Process.alive?(pid) || GenServer.call(pid, {:closed?, []})
!Process.alive?(pid) || NifWrap.call(pid, {:closed?, []})
end

@spec paused?(t) :: boolean
Expand All @@ -114,7 +114,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-paused
"""
def paused?(%Consumer{pid: pid}) do
GenServer.call(pid, {:paused?, []})
NifWrap.call(pid, {:paused?, []})
end

@spec producer_paused?(t) :: boolean
Expand All @@ -123,7 +123,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-producerPaused
"""
def producer_paused?(%Consumer{pid: pid}) do
GenServer.call(pid, {:producer_paused?, []})
NifWrap.call(pid, {:producer_paused?, []})
end

@spec priority(t) :: number
Expand All @@ -132,15 +132,15 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-priority
"""
def priority(%Consumer{pid: pid}) do
GenServer.call(pid, {:priority, []})
NifWrap.call(pid, {:priority, []})
end

@spec score(t) :: consumer_score
@doc """
The score of the RTP stream being sent, representing its tranmission quality.
"""
def score(%Consumer{pid: pid}) do
GenServer.call(pid, {:score, []})
NifWrap.call(pid, {:score, []})
end

@spec preferred_layers(t) :: consumer_layers | nil
Expand All @@ -149,7 +149,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-preferredLayers
"""
def preferred_layers(%Consumer{pid: pid}) do
GenServer.call(pid, {:preferred_layers, []})
NifWrap.call(pid, {:preferred_layers, []})
end

@spec current_layers(t) :: consumer_layers | nil
Expand All @@ -159,7 +159,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-currentLayers
"""
def current_layers(%Consumer{pid: pid}) do
GenServer.call(pid, {:current_layers, []})
NifWrap.call(pid, {:current_layers, []})
end

@spec get_stats(t) :: list() | {:error, reason :: term()}
Expand All @@ -168,7 +168,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-getStats
"""
def get_stats(%Consumer{pid: pid}) do
GenServer.call(pid, {:get_stats, []})
NifWrap.call(pid, {:get_stats, []})
end

@spec pause(t) :: {:ok} | {:error}
Expand All @@ -177,7 +177,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-pause
"""
def pause(%Consumer{pid: pid}) do
GenServer.call(pid, {:pause, []})
NifWrap.call(pid, {:pause, []})
end

@spec resume(t) :: {:ok} | {:error}
Expand All @@ -186,7 +186,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-resume
"""
def resume(%Consumer{pid: pid}) do
GenServer.call(pid, {:resume, []})
NifWrap.call(pid, {:resume, []})
end

@spec set_preferred_layers(t, map) :: {:ok} | {:error}
Expand All @@ -195,7 +195,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-setPreferredLayers
"""
def set_preferred_layers(%Consumer{pid: pid}, layer) do
GenServer.call(pid, {:set_preferred_layers, [layer]})
NifWrap.call(pid, {:set_preferred_layers, [layer]})
end

@spec set_priority(t, integer) :: {:ok} | {:error}
Expand All @@ -204,7 +204,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-setPriority
"""
def set_priority(%Consumer{pid: pid}, priority) do
GenServer.call(pid, {:set_priority, [priority]})
NifWrap.call(pid, {:set_priority, [priority]})
end

@spec unset_priority(t) :: {:ok} | {:error}
Expand All @@ -213,7 +213,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-unsetPriority
"""
def unset_priority(%Consumer{pid: pid}) do
GenServer.call(pid, {:unset_priority, []})
NifWrap.call(pid, {:unset_priority, []})
end

@spec request_key_frame(t) :: {:ok} | {:error}
Expand All @@ -222,7 +222,7 @@ defmodule Mediasoup.Consumer do
https://mediasoup.org/documentation/v3/mediasoup/api/#consumer-requestKeyFrame
"""
def request_key_frame(%Consumer{pid: pid}) do
GenServer.call(pid, {:request_key_frame, []})
NifWrap.call(pid, {:request_key_frame, []})
end

@type event_type ::
Expand Down Expand Up @@ -255,7 +255,7 @@ defmodule Mediasoup.Consumer do
:on_layers_change
]
) do
GenServer.call(pid, {:event, [listener, event_types]})
NifWrap.call(pid, {:event, [listener, event_types]})
end

@spec struct_from_pid(pid()) :: Consumer.t()
Expand Down
4 changes: 2 additions & 2 deletions lib/data_consumer.ex
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@ defmodule Mediasoup.DataConsumer do

@spec closed?(t) :: boolean
def closed?(%DataConsumer{pid: pid}) do
!Process.alive?(pid) || GenServer.call(pid, {:closed?, []})
!Process.alive?(pid) || NifWrap.call(pid, {:closed?, []})
end

@type event_type :: :on_close
@spec event(t, pid, event_types :: [event_type]) :: {:ok} | {:error, :terminated}
def event(%DataConsumer{pid: pid}, listener, event_types \\ [:on_close]) do
GenServer.call(pid, {:event, [listener, event_types]})
NifWrap.call(pid, {:event, [listener, event_types]})
end

@spec struct_from_pid(pid()) :: DataConsumer.t()
Expand Down
4 changes: 2 additions & 2 deletions lib/data_producer.ex
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ defmodule Mediasoup.DataProducer do

@spec closed?(t) :: boolean
def closed?(%DataProducer{pid: pid}) do
!Process.alive?(pid) || GenServer.call(pid, {:closed?, []})
!Process.alive?(pid) || NifWrap.call(pid, {:closed?, []})
end

@type event_type :: :on_close
@spec event(t, pid, event_types :: [event_type]) :: {:ok} | {:error, :terminated}
def event(%DataProducer{pid: pid}, listener, event_types \\ [:on_close]) do
GenServer.call(pid, {:event, [listener, event_types]})
NifWrap.call(pid, {:event, [listener, event_types]})
end

@spec struct_from_pid(pid()) :: DataProducer.t()
Expand Down
26 changes: 13 additions & 13 deletions lib/pipe_transport.ex
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ defmodule Mediasoup.PipeTransport do
Tells whether the given PipeTransport is closed on the local node.
"""
def closed?(%PipeTransport{pid: pid}) do
!Process.alive?(pid) || GenServer.call(pid, {:closed?, []})
!Process.alive?(pid) || NifWrap.call(pid, {:closed?, []})
end

@spec consume(t, Consumer.Options.t() | map()) ::
Expand All @@ -111,7 +111,7 @@ defmodule Mediasoup.PipeTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#transport-consume
"""
def consume(%PipeTransport{pid: pid}, %Consumer.Options{} = option) do
GenServer.call(pid, {:consume, [option]})
NifWrap.call(pid, {:consume, [option]})
end

def consume(%PipeTransport{} = transport, option) do
Expand All @@ -125,7 +125,7 @@ defmodule Mediasoup.PipeTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#transport-consumedata
"""
def consume_data(%PipeTransport{pid: pid}, %DataConsumer.Options{} = option) do
GenServer.call(pid, {:consume_data, [option]})
NifWrap.call(pid, {:consume_data, [option]})
end

def consume_data(%PipeTransport{} = transport, option) do
Expand All @@ -138,7 +138,7 @@ defmodule Mediasoup.PipeTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#pipeTransport-connect
"""
def connect(%PipeTransport{pid: pid}, option) do
GenServer.call(pid, {:connect, [option]})
NifWrap.call(pid, {:connect, [option]})
end

@spec produce(t, Producer.Options.t() | map()) ::
Expand All @@ -148,7 +148,7 @@ defmodule Mediasoup.PipeTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#transport-produce
"""
def produce(%PipeTransport{pid: pid}, %Producer.Options{} = option) do
GenServer.call(pid, {:produce, [option]})
NifWrap.call(pid, {:produce, [option]})
end

def produce(%PipeTransport{} = transport, %{} = option) do
Expand All @@ -162,7 +162,7 @@ defmodule Mediasoup.PipeTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#transport-producedata
"""
def produce_data(%PipeTransport{pid: pid}, %DataProducer.Options{} = option) do
GenServer.call(pid, {:produce_data, [option]})
NifWrap.call(pid, {:produce_data, [option]})
end

def produce_data(%PipeTransport{} = transport, %{} = option) do
Expand All @@ -176,7 +176,7 @@ defmodule Mediasoup.PipeTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#pipeTransport-getStats
"""
def get_stats(%PipeTransport{pid: pid}) do
GenServer.call(pid, {:get_stats, []})
NifWrap.call(pid, {:get_stats, []})
end

@typedoc """
Expand All @@ -188,7 +188,7 @@ defmodule Mediasoup.PipeTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#pipeTransport-tuple
"""
def tuple(%PipeTransport{pid: pid}) do
case GenServer.call(pid, {:tuple, []}) do
case NifWrap.call(pid, {:tuple, []}) do
{:error, reason} ->
{:error, reason}

Expand All @@ -210,7 +210,7 @@ defmodule Mediasoup.PipeTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#pipeTransport-sctpParameters
"""
def sctp_parameters(%PipeTransport{pid: pid}) do
GenServer.call(pid, {:sctp_parameters, []})
NifWrap.call(pid, {:sctp_parameters, []})
end

@spec srtp_parameters(Mediasoup.PipeTransport.t()) ::
Expand All @@ -221,7 +221,7 @@ defmodule Mediasoup.PipeTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#pipeTransport-srtpParameters
"""
def srtp_parameters(%PipeTransport{pid: pid}) do
GenServer.call(pid, {:srtp_parameters, []})
NifWrap.call(pid, {:srtp_parameters, []})
end

@spec sctp_state(Mediasoup.PipeTransport.t()) :: String.t() | {:error, :terminated}
Expand All @@ -230,15 +230,15 @@ defmodule Mediasoup.PipeTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#pipeTransport-sctpState
"""
def sctp_state(%PipeTransport{pid: pid}) do
GenServer.call(pid, {:sctp_state, []})
NifWrap.call(pid, {:sctp_state, []})
end

@spec dump(t) :: any | {:error, :terminated}
@doc """
Dump internal stat for PipeTransport.
"""
def dump(%PipeTransport{pid: pid}) do
GenServer.call(pid, {:dump, []})
NifWrap.call(pid, {:dump, []})
end

@type event_type ::
Expand All @@ -261,7 +261,7 @@ defmodule Mediasoup.PipeTransport do
)

def event(%PipeTransport{pid: pid}, listener, event_types) do
GenServer.call(pid, {:event, [listener, event_types]})
NifWrap.call(pid, {:event, [listener, event_types]})
end

@spec struct_from_pid(pid()) :: PipeTransport.t()
Expand Down
20 changes: 10 additions & 10 deletions lib/plain_transport.ex
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ defmodule Mediasoup.PlainTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#plainTransport-tuple
"""
def tuple(%PlainTransport{pid: pid}) do
case GenServer.call(pid, {:tuple, []}) do
case NifWrap.call(pid, {:tuple, []}) do
{:error, reason} ->
{:error, reason}

Expand All @@ -122,7 +122,7 @@ defmodule Mediasoup.PlainTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#plainTransport-sctpParameters
"""
def sctp_parameters(%PlainTransport{pid: pid}) do
GenServer.call(pid, {:sctp_parameters, []})
NifWrap.call(pid, {:sctp_parameters, []})
end

@spec sctp_state(t) :: String.t() | {:error, :terminated}
Expand All @@ -131,7 +131,7 @@ defmodule Mediasoup.PlainTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#plainTransport-sctpState
"""
def sctp_state(%PlainTransport{pid: pid}) do
GenServer.call(pid, {:sctp_state, []})
NifWrap.call(pid, {:sctp_state, []})
end

@spec srtp_parameters(t) :: map() | {:error, :terminated}
Expand All @@ -140,7 +140,7 @@ defmodule Mediasoup.PlainTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#plainTransport-srtpParameters
"""
def srtp_parameters(%PlainTransport{pid: pid}) do
GenServer.call(pid, {:srtp_parameters, []})
NifWrap.call(pid, {:srtp_parameters, []})
end

# Mediasoup Plain Transport Methods
Expand All @@ -152,7 +152,7 @@ defmodule Mediasoup.PlainTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#plainTransport-getStats
"""
def get_stats(%PlainTransport{pid: pid}) do
GenServer.call(pid, {:get_stats, []})
NifWrap.call(pid, {:get_stats, []})
end

@spec connect(t, connect_option()) :: {:ok} | {:error, String.t() | :terminated}
Expand All @@ -161,7 +161,7 @@ defmodule Mediasoup.PlainTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#plainTransport-connect
"""
def connect(%PlainTransport{pid: pid}, option) do
GenServer.call(pid, {:connect, [option]})
NifWrap.call(pid, {:connect, [option]})
end

@spec close(t) :: :ok
Expand All @@ -178,7 +178,7 @@ defmodule Mediasoup.PlainTransport do
Tells whether the given PlainTransport is closed on the local node.
"""
def closed?(%PlainTransport{pid: pid}) do
!Process.alive?(pid) || GenServer.call(pid, {:closed?, []})
!Process.alive?(pid) || NifWrap.call(pid, {:closed?, []})
end

@spec produce(t, Producer.Options.t() | map()) ::
Expand All @@ -188,7 +188,7 @@ defmodule Mediasoup.PlainTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#transport-produce
"""
def produce(%PlainTransport{pid: pid}, %Producer.Options{} = option) do
GenServer.call(pid, {:produce, [option]})
NifWrap.call(pid, {:produce, [option]})
end

def produce(%PlainTransport{} = transport, %{} = option) do
Expand All @@ -202,7 +202,7 @@ defmodule Mediasoup.PlainTransport do
https://mediasoup.org/documentation/v3/mediasoup/api/#transport-consume
"""
def consume(%PlainTransport{pid: pid}, %Consumer.Options{} = option) do
GenServer.call(pid, {:consume, [option]})
NifWrap.call(pid, {:consume, [option]})
end

def consume(%PlainTransport{} = transport, option) do
Expand Down Expand Up @@ -261,7 +261,7 @@ defmodule Mediasoup.PlainTransport do
)

def event(%PlainTransport{pid: pid}, listener, event_types) do
GenServer.call(pid, {:event, [listener, event_types]})
NifWrap.call(pid, {:event, [listener, event_types]})
end

# GenServer callbacks
Expand Down
Loading

0 comments on commit 9374ee3

Please sign in to comment.