Packages
membrane_core
1.2.0-rc1
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.7
1.2.6
1.2.5
retired
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.2.0-rc1
1.1.2
1.1.1
1.1.0
1.1.0-rc1
1.1.0-rc0
1.0.1
1.0.0
1.0.0-rc1
1.0.0-rc0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
retired
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.0
0.8.2
0.8.1
0.8.0
0.7.0
0.6.1
0.6.0
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
Membrane Multimedia Framework (Core)
Current section
Files
Jump to
Current section
Files
lib/membrane/core/process_helper.ex
defmodule Membrane.Core.ProcessHelper do
@moduledoc false
require Membrane.Logger
defguardp is_shutdown_tuple(reason)
when is_tuple(reason) and tuple_size(reason) == 2 and elem(reason, 0) == :shutdown
defguard is_silent_exit_reason(reason)
when reason in [:normal, :shutdown] or is_shutdown_tuple(reason)
@doc """
This is a hack to exit with a custom reason, but without having GenServer
exit logs occurring when the exit reason is neither :normal, :shutdown
nor {:shutdown, reason}
"""
@spec notoelo(any(), log?: boolean()) :: no_return()
def notoelo(reason, opts \\ [])
def notoelo(reason, log?: false) do
do_notoelo(reason)
end
def notoelo(reason, _opts) when is_silent_exit_reason(reason) do
do_notoelo(reason)
end
def notoelo(reason, _opts) do
Membrane.Logger.error("Terminating with reason: #{inspect(reason)}")
do_notoelo(reason)
end
defp do_notoelo(reason) do
Process.flag(:trap_exit, false)
Process.exit(self(), reason)
end
end