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/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