defmodule Membrane.Bin.PadData do
@moduledoc """
Struct describing current pad state.
The public fields are:
- `:accepted_caps` - specification of possible caps that are accepted on the pad.
See `Membrane.Caps.Matcher` for more information.
- `:availability` - see `Membrane.Pad.availability_t`
- `:direction` - see `Membrane.Pad.direction_t`
- `:mode` - see `Membrane.Pad.mode_t`
- `:name` - see `Membrane.Pad.name_t`. Do not mistake with `:ref`
- `:options` - options passed in `Membrane.ParentSpec` when linking pad
- `:ref` - see `Membrane.Pad.ref_t`
Other fields in the struct ARE NOT PART OF THE PUBLIC API and should not be
accessed or relied on.
"""
use Bunch.Access
@type private_field :: term()
@type t :: %__MODULE__{
ref: Membrane.Pad.ref_t(),
options: Membrane.ParentSpec.pad_options_t(),
accepted_caps: Membrane.Caps.Matcher.caps_specs_t(),
availability: Membrane.Pad.availability_t(),
direction: Membrane.Pad.direction_t(),
mode: Membrane.Pad.mode_t(),
name: Membrane.Pad.name_t(),
link_id: private_field,
endpoint: private_field,
linked?: private_field,
response_received?: private_field,
spec_ref: private_field,
demand_unit: private_field
}
@enforce_keys [
:ref,
:options,
:accepted_caps,
:availability,
:direction,
:mode,
:name,
:link_id,
:endpoint,
:linked?,
:response_received?,
:spec_ref
]
defstruct @enforce_keys ++ [demand_unit: nil]
end