Packages
membrane_rtc_engine
0.25.0
0.25.0
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.1
0.17.0
0.16.0
0.15.1
0.15.0
0.14.2
0.14.1
0.14.0
0.13.0
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha
Membrane RTC Engine and its client library
Current section
Files
Jump to
Current section
Files
lib/membrane_rtc_engine/message.ex
defmodule Membrane.RTC.Engine.Message do
@moduledoc """
Module describing messages RTC Engine can emit.
Each Message contains the PID of the Engine under `rtc_engine` field.
Thanks to it you can distinguish between the same messages but from different RTC Engine instances.
"""
alias Membrane.RTC.Engine.{Endpoint, Track}
@type t() ::
__MODULE__.EndpointAdded.t()
| __MODULE__.EndpointMetadataUpdated.t()
| __MODULE__.EndpointCrashed.t()
| __MODULE__.EndpointMessage.t()
| __MODULE__.EndpointRemoved.t()
| __MODULE__.TrackAdded.t()
| __MODULE__.TrackRemoved.t()
| __MODULE__.TrackMetadataUpdated.t()
defmodule EndpointAdded do
@moduledoc """
Message emitted when an endpoint gets added.
"""
@typedoc """
Describes EndpointAdded message structure.
* `endpoint_id` - id of the endpoint that was added
* `endpoint_type` - type of the endpoint that was added
"""
@type t() :: %__MODULE__{
endpoint_id: Endpoint.id(),
endpoint_type: Endpoint.type()
}
@enforce_keys [:endpoint_id, :endpoint_type]
defstruct @enforce_keys
end
defmodule EndpointMetadataUpdated do
@moduledoc """
Message emitted when an endpoint updates its metadata.
"""
@typedoc """
Describes EndpointMetadataUpdated message structure.
* `endpoint_id` - id of the endpoint that was added
* `endpoint_metadata` - updated metadata of the endpoint
"""
@type t() :: %__MODULE__{
endpoint_id: Endpoint.id(),
endpoint_metadata: any()
}
@enforce_keys [:endpoint_id, :endpoint_metadata]
defstruct @enforce_keys
end
defmodule EndpointCrashed do
@moduledoc """
Message emitted when an endpoint crashes.
"""
@typedoc """
Describes EndpointCrashed message structure.
* `endpoint_id` - id of the endpoint that crashed
* `endpoint_type` - type of the endpoint that crashed
* `reason` - reason for the crash
"""
@type t() :: %__MODULE__{
endpoint_id: Endpoint.id(),
endpoint_type: Endpoint.type(),
reason: :normal | :shutdown | {:shutdown, term()} | term()
}
@enforce_keys [:endpoint_id, :endpoint_type, :reason]
defstruct @enforce_keys
end
defmodule EndpointMessage do
@moduledoc """
Message emitted when an endpoint wishes to message the business logic.
"""
@typedoc """
Describes EndpointMessage message structure
* `endpoint_id` - id of the endpoint
* `endpoint_type` - type of the endpoint
* `message` - payload of the message sent by the endpoint
"""
@type t() :: %__MODULE__{
endpoint_id: Endpoint.id(),
endpoint_type: Endpoint.type(),
message: term()
}
@enforce_keys [:endpoint_id, :endpoint_type, :message]
defstruct @enforce_keys
end
defmodule EndpointRemoved do
@moduledoc """
Message emitted when an endpoint gets removed.
"""
@typedoc """
Describes EndpointRemoved message structure.
* `endpoint_id` - id of the endpoint that was removed
* `endpoint_type` - type of the endpoint that was removed
"""
@type t() :: %__MODULE__{
endpoint_id: Endpoint.id(),
endpoint_type: Endpoint.type()
}
@enforce_keys [:endpoint_id, :endpoint_type]
defstruct @enforce_keys
end
defmodule TrackAdded do
@moduledoc """
Message emitted when a track gets added.
"""
@typedoc """
Describes TrackAdded message structure.
* `endpoint_id` - id of the endpoint that published the track
* `endpoint_type` - type of the endpoint that published the track
* `track_id` - id of the track that was added
* `track_type` - type of the track that was added
* `track_encoding` - encoding of the track that was added
* `track_metadata` - metadata of the added track
"""
@type t() :: %__MODULE__{
endpoint_id: Endpoint.id(),
endpoint_type: Endpoint.type(),
track_id: Track.id(),
track_type: :audio | :video,
track_encoding: Track.encoding(),
track_metadata: any()
}
@enforce_keys [
:endpoint_id,
:endpoint_type,
:track_id,
:track_type,
:track_encoding,
:track_metadata
]
defstruct @enforce_keys
end
defmodule TrackRemoved do
@moduledoc """
Message emitted when a track gets removed.
"""
@typedoc """
Describes TrackRemoved message structure.
* `endpoint_id` - id of the endpoint that published the track
* `endpoint_type` - type of the endpoint that published the track
* `track_id` - id of the track that was removed
* `track_type` - type of the track that was added
* `track_encoding` - encoding of the track that was added
"""
@type t() :: %__MODULE__{
endpoint_id: Endpoint.id(),
endpoint_type: Endpoint.type(),
track_id: Track.id(),
track_type: :audio | :video,
track_encoding: Track.encoding()
}
@enforce_keys [:endpoint_id, :endpoint_type, :track_id, :track_type, :track_encoding]
defstruct @enforce_keys
end
defmodule TrackMetadataUpdated do
@moduledoc """
Message emitted when a track's metadata is updated.
"""
@typedoc """
Describes TrackMetadataUpdated message structure.
* `endpoint_id` - id of the endpoint that published the track
* `track_id` - id of the track that was added
* `track_metadata` - the updated metadata
"""
@type t() :: %__MODULE__{
endpoint_id: Endpoint.id(),
track_id: Track.id(),
track_metadata: any()
}
@enforce_keys [:endpoint_id, :track_id, :track_metadata]
defstruct @enforce_keys
end
end