Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions lib/membrane/bin.ex
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ defmodule Membrane.Bin do
alias Membrane.Core.Child.PadsSpecs
alias Membrane.Core.OptionsSpecs

require Membrane.Core.Message

@type state :: any()

@type callback_return :: {[Action.t()], state()}
Expand Down
1 change: 0 additions & 1 deletion lib/membrane/core/bin/action_handler.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ defmodule Membrane.Core.Bin.ActionHandler do
alias Membrane.Core.{Message, Parent, TimerController}

require Membrane.Logger
require Message

@impl CallbackHandler
def handle_action({:spec, args}, _cb, _params, %State{terminating?: true}) do
Expand Down
28 changes: 13 additions & 15 deletions lib/membrane/core/bin/pad_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -85,23 +85,21 @@ defmodule Membrane.Core.Bin.PadController do
end

@spec remove_pad(Pad.ref(), State.t()) :: State.t()
def remove_pad(pad_ref, state) do
cond do
# This is to handle the case when a bin pad is removed and then the bin removes its child linked to this pad
Pad.is_dynamic_pad_ref(pad_ref) and PadModel.assert_instance(state, pad_ref) != :ok ->
state

Pad.is_dynamic_pad_ref(pad_ref) ->
Message.send(state.parent_pid, :child_pad_removed, [state.name, pad_ref])
PadModel.delete_data!(state, pad_ref)
def remove_pad(pad_ref, state) when Pad.is_dynamic_pad_ref(pad_ref) do
if PadModel.assert_instance(state, pad_ref) == :ok do
Message.send(state.parent_pid, :child_pad_removed, [state.name, pad_ref])
PadModel.delete_data!(state, pad_ref)
else
state

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
state
# This is to handle the case when a bin pad is removed and then the bin removes its child linked to this pad
state

end
end

Pad.is_static_pad_ref(pad_ref) and state.terminating? ->
state
def remove_pad(pad_ref, state) when Pad.is_static_pad_ref(pad_ref) and state.terminating?,
do: state

Pad.is_static_pad_ref(pad_ref) ->
raise Membrane.PadError,
"Tried to unlink bin static pad #{inspect(pad_ref)}. Static pads cannot be unlinked unless bin is terminating"
end
def remove_pad(pad_ref, _state) when Pad.is_static_pad_ref(pad_ref) do
raise Membrane.PadError,
"Tried to unlink bin static pad #{inspect(pad_ref)}. Static pads cannot be unlinked unless bin is terminating"
end

@spec handle_linking_timeout(Pad.ref(), reference(), State.t()) :: :ok | no_return()
Expand Down
2 changes: 1 addition & 1 deletion lib/membrane/core/callback_handler.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ defmodule Membrane.Core.CallbackHandler do
use Bunch

alias Membrane.CallbackError
alias Membrane.Core.Telemetry, as: Telemetry

require Membrane.Logger
require Membrane.Core.Telemetry, as: Telemetry

@type state :: %{
:module => module,
Expand Down
2 changes: 0 additions & 2 deletions lib/membrane/core/child/lifecycle_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ defmodule Membrane.Core.Child.LifecycleController do
@moduledoc false
alias Membrane.Core.{CallbackHandler, Component}

require Membrane.Core.Component

@spec handle_parent_notification(Membrane.ParentNotification.t(), Membrane.Core.Child.state()) ::
Membrane.Core.Child.state()
def handle_parent_notification(notification, state) do
Expand Down
2 changes: 0 additions & 2 deletions lib/membrane/core/child/pad_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ defmodule Membrane.Core.Child.PadController do
alias Membrane.Core.Parent.Link.Endpoint
alias Membrane.{LinkError, Pad, PadError}

require Membrane.Core.Child.PadModel

@type state :: Membrane.Core.Bin.State.t() | Membrane.Core.Element.State.t()

@spec validate_pad_direction!(
Expand Down
1 change: 0 additions & 1 deletion lib/membrane/core/child/pad_model.ex
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,6 @@ defmodule Membrane.Core.Child.PadModel do
# TODO: leave the main branch only when we stop supporting elixir prior 1.14
if Version.match?(System.version(), ">= 1.14.0-dev") do
alias Membrane.Core.Helper.FastMap
require FastMap

defmacro get_data(state, pad_ref, keys \\ []) do
keys = Bunch.listify(keys)
Expand Down
2 changes: 0 additions & 2 deletions lib/membrane/core/child/pad_spec_handler.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ defmodule Membrane.Core.Child.PadSpecHandler do
alias Membrane.Core.{Bin, Child, Element}
alias Membrane.Pad

require Membrane.Pad

@doc """
Initializes pads info basing on element's or bin's pads specifications.
"""
Expand Down
8 changes: 3 additions & 5 deletions lib/membrane/core/component.ex
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,11 @@ defmodule Membrane.Core.Component do
@spec context_from_state(state(), callback_context_optional_fields()) ::
callback_context()
def context_from_state(state, args \\ []) do
alias Membrane.Core.{Bin, Element, Pipeline}

callback_context_module =
case state do
%Element.State{} -> Element.CallbackContext
%Bin.State{} -> Bin.CallbackContext
%Pipeline.State{} -> Pipeline.CallbackContext
%Membrane.Core.Element.State{} -> Membrane.Core.Element.CallbackContext
%Membrane.Core.Bin.State{} -> Membrane.Core.Bin.CallbackContext
%Membrane.Core.Pipeline.State{} -> Membrane.Core.Pipeline.CallbackContext
Comment thread
kidq330 marked this conversation as resolved.
end

callback_context_module.from_state(state, args)
Expand Down
3 changes: 2 additions & 1 deletion lib/membrane/core/element.ex
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,11 @@ defmodule Membrane.Core.Element do

alias Membrane.Core.{SubprocessSupervisor, TimerController}

alias Membrane.Core.Telemetry, as: Telemetry

require Membrane.Core.Utils, as: Utils
require Membrane.Core.Message, as: Message
require Membrane.Core.Stalker, as: Stalker
require Membrane.Core.Telemetry, as: Telemetry
require Membrane.Core.LegacyTelemetry, as: LegacyTelemetry
require Membrane.Logger

Expand Down
5 changes: 3 additions & 2 deletions lib/membrane/core/element/action_handler.ex
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,13 @@ defmodule Membrane.Core.Element.ActionHandler do
}

alias Membrane.Core.{Events, TimerController}
alias Membrane.Core.Message, as: Message
alias Membrane.Core.Telemetry, as: Telemetry

alias Membrane.Element.Action

require Membrane.Core.Child.PadModel, as: PadModel
require Membrane.Core.Message, as: Message
require Membrane.Logger
require Membrane.Core.Telemetry, as: Telemetry
require Membrane.Core.LegacyTelemetry, as: LegacyTelemetry

@uninterrupted_redemands_warning_limit 1000
Expand Down
5 changes: 3 additions & 2 deletions lib/membrane/core/element/atomic_demand.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ defmodule Membrane.Core.Element.AtomicDemand do
AtomicFlowStatus
}

require Membrane.Core.Message, as: Message
alias Membrane.Core.Message, as: Message
alias Membrane.Pad, as: Pad

require Membrane.Logger
require Membrane.Pad, as: Pad

@default_toilet_capacity_factor 200
@default_throttling_factor 1
Expand Down
3 changes: 2 additions & 1 deletion lib/membrane/core/element/auto_flow_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ defmodule Membrane.Core.Element.AutoFlowController do
StreamFormatController
}

alias Membrane.Pad, as: Pad

require Membrane.Core.Child.PadModel, as: PadModel
require Membrane.Logger
require Membrane.Pad, as: Pad

@empty_map_set MapSet.new()

Expand Down
3 changes: 1 addition & 2 deletions lib/membrane/core/element/buffer_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,9 @@ defmodule Membrane.Core.Element.BufferController do

alias Membrane.Core.Element.ManualFlowController.InputQueue

alias Membrane.Core.Telemetry
alias Membrane.Core.Telemetry, as: Telemetry

require Membrane.Core.Child.PadModel
require Membrane.Core.Telemetry, as: Telemetry
require Membrane.Core.LegacyTelemetry, as: LegacyTelemetry

@doc """
Expand Down
3 changes: 1 addition & 2 deletions lib/membrane/core/element/diamond_detection_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,9 @@ defmodule Membrane.Core.Element.DiamondDetectionController do
alias __MODULE__.{DiamondLogger, PathInGraph}
alias Membrane.Core.Element.State
alias Membrane.Element.PadData
alias Membrane.Pad, as: Pad

require Membrane.Core.Message, as: Message
require Membrane.Logger
require Membrane.Pad, as: Pad

@type diamond_detection_message() :: %{
:type =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ defmodule Membrane.Core.Element.DiamondDetectionController.PathInGraph do

defmodule Vertex do
@moduledoc false
require Membrane.Pad, as: Pad
alias Membrane.Pad, as: Pad

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Applies to all alias A.B.C, as: C cases

Suggested change
alias Membrane.Pad, as: Pad
alias Membrane.Pad


defstruct [:pid, :component_path, :input_pad_ref, :output_pad_ref]

Expand Down
4 changes: 2 additions & 2 deletions lib/membrane/core/element/effective_flow_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ defmodule Membrane.Core.Element.EffectiveFlowController do
# Effective flow control of a single element can switch between :push and :pull many times during the element's lifetime.

alias Membrane.Core.Element.{AtomicDemand, AutoFlowController, DemandController, State}
alias Membrane.Core.Message, as: Message
alias Membrane.Pad, as: Pad

require Membrane.Core.Child.PadModel, as: PadModel
require Membrane.Core.Message, as: Message
require Membrane.Logger
require Membrane.Pad, as: Pad

@type effective_flow_control :: :push | :pull

Expand Down
2 changes: 0 additions & 2 deletions lib/membrane/core/element/event_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ defmodule Membrane.Core.Element.EventController do
alias Membrane.{Event, Pad, Sync}

require Membrane.Core.Child.PadModel
require Membrane.Core.Message
require Membrane.Core.Telemetry
require Membrane.Logger

@spec handle_start_of_stream(Pad.ref(), State.t()) :: State.t()
Expand Down
1 change: 0 additions & 1 deletion lib/membrane/core/element/lifecycle_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ defmodule Membrane.Core.Element.LifecycleController do
State
}

require Membrane.Core.Message
require Membrane.Logger

@doc """
Expand Down
4 changes: 2 additions & 2 deletions lib/membrane/core/element/manual_flow_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ defmodule Membrane.Core.Element.ManualFlowController do
StreamFormatController
}

alias Membrane.Core.Message, as: Message

alias __MODULE__.InputQueue

alias Membrane.Pad

require Membrane.Core.Child.PadModel, as: PadModel
require Membrane.Core.Message, as: Message
require Membrane.Logger

@handle_demand_loop_limit 20

Expand Down
8 changes: 5 additions & 3 deletions lib/membrane/core/element/pad_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@ defmodule Membrane.Core.Element.PadController do

alias Membrane.Core.Element.ManualFlowController.InputQueue

alias Membrane.Core.Message, as: Message

alias Membrane.Core.Parent.Link.Endpoint
alias Membrane.LinkError

alias Membrane.Pad, as: Pad

require Membrane.Core.Child.PadModel, as: PadModel
require Membrane.Core.Message, as: Message
require Membrane.Core.Stalker, as: Stalker
require Membrane.Logger
require Membrane.Pad, as: Pad

@type link_call_props :: %{
optional(:output_pad_info) => PadModel.pad_info() | nil,
Expand Down Expand Up @@ -152,7 +154,7 @@ defmodule Membrane.Core.Element.PadController do
AtomicDemand.new(%{
receiver_effective_flow_control: pad_effective_flow_control,
receiver_process: self(),
receiver_demand_unit: input_demand_unit || :buffers,
receiver_demand_unit: input_demand_unit,
sender_process: output_endpoint.pid,
sender_pad_ref: output_endpoint.pad_ref,
supervisor: state.subprocess_supervisor,
Expand Down
1 change: 0 additions & 1 deletion lib/membrane/core/element/stream_format_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ defmodule Membrane.Core.Element.StreamFormatController do
alias Membrane.{Pad, StreamFormat}

require Membrane.Core.Child.PadModel
require Membrane.Core.Telemetry

@type stream_format_validation_param() :: {module(), Pad.name()}
@type stream_format_validation_params() :: [stream_format_validation_param()]
Expand Down
2 changes: 0 additions & 2 deletions lib/membrane/core/legacy_telemetry.ex
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ defmodule Membrane.Core.LegacyTelemetry do

alias Membrane.ComponentPath

require Membrane.Pad

@telemetry_flags Application.compile_env(:membrane_core, :telemetry_flags, [])

@doc """
Expand Down
1 change: 0 additions & 1 deletion lib/membrane/core/lifecycle_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ defmodule Membrane.Core.LifecycleController do
alias Membrane.Core.{Component, Message, Parent}
alias Membrane.SetupError

require Membrane.Core.Message
require Membrane.Logger

@type setup_operation :: :incomplete | :complete
Expand Down
4 changes: 2 additions & 2 deletions lib/membrane/core/parent/child_life_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ defmodule Membrane.Core.Parent.ChildLifeController do
alias Membrane.Core.{Bin, CallbackHandler, Component, Parent, Pipeline}
alias Membrane.Core.Bin.PadController

alias Membrane.Core.Message, as: Message

alias Membrane.Core.Parent.{
ChildEntryParser,
ChildrenModel,
Expand All @@ -20,8 +22,6 @@ defmodule Membrane.Core.Parent.ChildLifeController do
alias Membrane.ParentError

require Membrane.Core.Child.PadModel, as: PadModel
require Membrane.Core.Component
require Membrane.Core.Message, as: Message
require Membrane.Logger

@type spec_ref :: reference()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ defmodule Membrane.Core.Parent.ChildLifeController.LinkUtils do
alias Membrane.Pad
alias Membrane.ParentError

require Membrane.Core.Message
require Membrane.Core.Telemetry
require Membrane.Logger
require Membrane.Pad

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ defmodule Membrane.Core.Parent.ChildLifeController.StartupUtils do
alias Membrane.Core.{CallbackHandler, Component, Message, Parent, SubprocessSupervisor}
alias Membrane.Core.Parent.{ChildEntryParser, ChildLifeController}

require Membrane.Core.Component
require Membrane.Core.Message
require Membrane.Logger

Expand Down
2 changes: 1 addition & 1 deletion lib/membrane/core/parent/diamond_detection_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defmodule Membrane.Core.Parent.DiamondDetectionController do
alias Membrane.Child
alias Membrane.Core.Parent

require Membrane.Core.Message, as: Message
alias Membrane.Core.Message, as: Message

@spec start_diamond_detection_trigger(Child.name(), reference(), Parent.state()) :: :ok
def start_diamond_detection_trigger(child_name, trigger_ref, state) do
Expand Down
2 changes: 0 additions & 2 deletions lib/membrane/core/parent/lifecycle_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@ defmodule Membrane.Core.Parent.LifecycleController do
alias Membrane.Core.Events
alias Membrane.Core.Parent.ChildLifeController

require Membrane.Core.Component
require Membrane.Core.Message
require Membrane.Logger

@spec handle_setup(Parent.state()) :: Parent.state()
Expand Down
1 change: 0 additions & 1 deletion lib/membrane/core/pipeline.ex
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ defmodule Membrane.Core.Pipeline do

require Membrane.Core.Utils, as: Utils
require Membrane.Core.Message, as: Message
require Membrane.Core.Component
require Membrane.Core.LegacyTelemetry, as: LegacyTelemetry

@spec get_stalker(pipeline :: pid()) :: Membrane.Core.Stalker.t()
Expand Down
2 changes: 0 additions & 2 deletions lib/membrane/core/pipeline/action_handler.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ defmodule Membrane.Core.Pipeline.ActionHandler do
alias Membrane.Core.Parent.LifecycleController
alias Membrane.Core.Pipeline.State

require Membrane.Logger

@impl CallbackHandler
def handle_action({:spec, args}, _cb, _params, %State{terminating?: true}) do
raise Membrane.ParentError,
Expand Down
4 changes: 2 additions & 2 deletions lib/membrane/core/telemetry.ex
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ defmodule Membrane.Core.Telemetry do
end

@doc """
Reports a span of a compoment callback function in a format consistent with `span/3` in `:telementry`
Reports a span of a component callback function in a format consistent with `span/3` in `:telementry`
"""
@spec track_callback_handler(
(-> CallbackHandler.callback_return() | no_return()),
Expand All @@ -187,7 +187,7 @@ defmodule Membrane.Core.Telemetry do
component_type
)

if handler_reported?(component_type, callback) do
if handler_reported?(component_type, callback) |> identity() do
:telemetry.span([:membrane, component_type, callback], meta, fn ->
{_actions, int_state} = res = f.()

Expand Down
Loading
Loading