Packages
membrane_core
0.12.0
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)
Retired package: Deprecated - Package has an API change that will be no longer supported, use version 0.12.1 instead of this one
Current section
Files
Jump to
Current section
Files
lib/membrane/core/bin/zombie.ex
defmodule Membrane.Core.Bin.Zombie do
@moduledoc false
# When a bin returns Membrane.Bin.Action.terminate() and becomes a zombie
# this module is used to replace the user implementation of the bin
use Membrane.Bin
require Membrane.Logger
# Overrides all the overridable callbacks to add a debug message that the original
# implementation is not called
Membrane.Bin.behaviour_info(:callbacks)
|> Enum.filter(&Module.overridable?(__MODULE__, &1))
|> Enum.map(fn {name, arity} ->
args = Enum.map(1..arity//1, &Macro.var(:"arg#{&1}", __MODULE__))
@impl true
def unquote(name)(unquote_splicing(args)) do
Membrane.Logger.debug(
"Not calling the #{unquote(name)} callback with the following arguments:
#{Enum.map_join(unquote(args), ", ", &inspect/1)}
because the bin is in the zombie mode"
)
super(unquote_splicing(args))
end
end)
end