Packages
membrane_core
1.2.4
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/event.ex
defmodule Membrane.Event do
@moduledoc """
Represents a communication event, capable of flowing both downstream and upstream.
Events are dispatched using `t:Membrane.Element.Action.event/0` and are handled via the
`c:Membrane.Element.Base.handle_event/4` callback. Each event must conform to the
`Membrane.EventProtocol` to ensure the proper configuration of its behaviour.
"""
alias Membrane.EventProtocol
@typedoc """
The Membrane event, based on the `Membrane.EventProtocol`.
"""
@type t :: EventProtocol.t()
@doc """
Checks if the given argument is a Membrane event.
Returns `true` if the `event` implements the `Membrane.EventProtocol`, otherwise `false`.
"""
@spec event?(t()) :: boolean
def event?(event) do
EventProtocol.impl_for(event) != nil
end
defdelegate sticky?(event), to: EventProtocol
defdelegate async?(event), to: EventProtocol
end