Skip to content

Commit

Permalink
Make credo happy
Browse files Browse the repository at this point in the history
  • Loading branch information
mickel8 committed Jul 9, 2021
1 parent 1cfe9e5 commit 872eca6
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 19 deletions.
15 changes: 15 additions & 0 deletions lib/membrane_sfu/media_event.ex
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
defmodule Membrane.SFU.MediaEvent do
@moduledoc false

@type peer_id_t() :: String.t()
@type to_t() :: peer_id_t() | :broadcast
@type sfu_media_event_t() :: {:sfu_media_event, to_t(), binary()}

@spec create_peer_accepted_event(peer_id_t(), map()) :: sfu_media_event_t()
def create_peer_accepted_event(peer_id, peers) do
peers =
Enum.map(peers, fn {id, peer} ->
Expand All @@ -11,11 +16,13 @@ defmodule Membrane.SFU.MediaEvent do
|> do_create(peer_id)
end

@spec create_peer_denied_event(peer_id_t(), map()) :: sfu_media_event_t()
def create_peer_denied_event(peer_id, metadata \\ %{}) do
%{type: "peerDenied", data: metadata}
|> do_create(peer_id)
end

@spec create_peer_joined_event(peer_id_t(), map(), map()) :: sfu_media_event_t()
def create_peer_joined_event(peer_id, metadata, mid_to_track_metadata) do
%{
type: "peerJoined",
Expand All @@ -30,6 +37,7 @@ defmodule Membrane.SFU.MediaEvent do
|> do_create(:broadcast)
end

@spec create_peer_left_event(peer_id_t()) :: sfu_media_event_t()
def create_peer_left_event(peer_id) do
%{
type: "peerLeft",
Expand All @@ -40,6 +48,8 @@ defmodule Membrane.SFU.MediaEvent do
|> do_create(:broadcast)
end

@spec create_signal_event(peer_id_t(), {:signal, {:candidate, String.t(), non_neg_integer()}}) ::
sfu_media_event_t()
def create_signal_event(peer_id, {:signal, {:candidate, candidate, sdp_m_line_index}}) do
%{
type: "candidate",
Expand All @@ -53,6 +63,8 @@ defmodule Membrane.SFU.MediaEvent do
|> do_create(peer_id)
end

@spec create_signal_event(peer_id_t(), {:signal, {:sdp_offer, String.t()}}) ::
sfu_media_event_t()
def create_signal_event(peer_id, {:signal, {:sdp_offer, offer}}) do
%{
type: "sdpOffer",
Expand All @@ -64,6 +76,7 @@ defmodule Membrane.SFU.MediaEvent do
|> do_create(peer_id)
end

@spec create_error_event(to_t(), String.t()) :: sfu_media_event_t()
def create_error_event(to, msg) do
%{
type: "error",
Expand All @@ -80,8 +93,10 @@ defmodule Membrane.SFU.MediaEvent do
|> then(fn event -> {:sfu_media_event, to, event} end)
end

@spec serialize(map()) :: binary()
def serialize(event), do: Jason.encode!(event)

@spec deserialize(binary()) :: map()
def deserialize(raw_event) do
case Jason.decode(raw_event) do
{:ok, event} -> do_deserialize(event)
Expand Down
36 changes: 17 additions & 19 deletions lib/membrane_sfu/sfu.ex
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,11 @@ defmodule Membrane.SFU do
"""
use Membrane.Pipeline

require Membrane.Logger

alias Membrane.WebRTC.{Endpoint, EndpointBin, Track}
alias Membrane.SFU.MediaEvent

require Membrane.Logger

@registry_name Membrane.SFU.Registry.Dispatcher

@type stun_server_t() :: ExLibnice.stun_server()
Expand Down Expand Up @@ -261,20 +261,18 @@ defmodule Membrane.SFU do

receive do
{:accept_new_peer, ^peer_id} ->
cond do
Map.has_key?(state.peers, peer_id) ->
Membrane.Logger.warn("Peer with id: #{inspect(peer_id)} has already been added")
{[], state}

true ->
peer = Map.put(data, :id, peer_id)
state = put_in(state, [:incoming_peers, peer_id], peer)
{actions, state} = setup_peer(peer, ctx, state)
if Map.has_key?(state.peers, peer_id) do
Membrane.Logger.warn("Peer with id: #{inspect(peer_id)} has already been added")
{[], state}
else
peer = Map.put(data, :id, peer_id)
state = put_in(state, [:incoming_peers, peer_id], peer)
{actions, state} = setup_peer(peer, ctx, state)

MediaEvent.create_peer_accepted_event(peer_id, Map.delete(state.peers, peer_id))
|> dispatch()
MediaEvent.create_peer_accepted_event(peer_id, Map.delete(state.peers, peer_id))
|> dispatch()

{actions, state}
{actions, state}
end

{:accept_new_peer, _other_peer_id} ->
Expand Down Expand Up @@ -468,7 +466,7 @@ defmodule Membrane.SFU do

defp get_outbound_tracks(_endpoints, false), do: []

defp create_links(_receive_media = true, new_endpoint_bin_name, ctx, state) do
defp create_links(true = _receive_media, new_endpoint_bin_name, ctx, state) do
flat_map_children(ctx, fn
{:tee, {endpoint_id, track_id}} = tee ->
endpoint = state.endpoints[endpoint_id]
Expand All @@ -486,7 +484,7 @@ defmodule Membrane.SFU do
end)
end

defp create_links(_receive_media = false, _endpoint, _ctx, _state) do
defp create_links(false = _receive_media, _endpoint, _ctx, _state) do
[]
end

Expand All @@ -509,9 +507,7 @@ defmodule Membrane.SFU do
end

defp do_remove_peer(peer_id, ctx, state) do
if !Map.has_key?(state.endpoints, peer_id) do
{:absent, [], state}
else
if Map.has_key?(state.endpoints, peer_id) do
{endpoint, state} = pop_in(state, [:endpoints, peer_id])
{_peer, state} = pop_in(state, [:peers, peer_id])
tracks = Enum.map(Endpoint.get_tracks(endpoint), &%Track{&1 | enabled?: false})
Expand All @@ -535,6 +531,8 @@ defmodule Membrane.SFU do
end

{:present, tracks_msgs ++ actions, state}
else
{:absent, [], state}
end
end

Expand Down

0 comments on commit 872eca6

Please sign in to comment.