Skip to content

Commit faac00f

Browse files
authored
Add callback for recorder messages (#16)
1 parent f687570 commit faac00f

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

lib/live_ex_webrtc/publisher.ex

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,13 @@ defmodule LiveExWebRTC.Publisher do
132132
@type on_recording_finished :: (publisher_id :: String.t(), Recorder.end_tracks_ok_result() ->
133133
any())
134134

135+
@typedoc """
136+
Called when recorder sends a message to the Publisher.
137+
138+
For exact meaning of the second argument, refer to `t:ExWebRTC.Recorder.message/0`.
139+
"""
140+
@type on_recorder_message :: (publisher_id :: String.t(), Recorder.message() -> any())
141+
135142
@type on_packet ::
136143
(publisher_id :: String.t(),
137144
packet_type :: :audio | :video,
@@ -160,6 +167,7 @@ defmodule LiveExWebRTC.Publisher do
160167
on_connected: nil,
161168
on_disconnected: nil,
162169
on_recording_finished: nil,
170+
on_recorder_message: nil,
163171
pubsub: nil,
164172
ice_servers: nil,
165173
ice_ip_filter: nil,
@@ -228,6 +236,7 @@ defmodule LiveExWebRTC.Publisher do
228236
:on_connected,
229237
:on_disconnected,
230238
:on_recording_finished,
239+
:on_recorder_message,
231240
:ice_servers,
232241
:ice_ip_filter,
233242
:ice_port_range,
@@ -245,6 +254,7 @@ defmodule LiveExWebRTC.Publisher do
245254
on_connected: Keyword.get(opts, :on_connected),
246255
on_disconnected: Keyword.get(opts, :on_disconnected),
247256
on_recording_finished: Keyword.get(opts, :on_recording_finished),
257+
on_recorder_message: Keyword.get(opts, :on_recorder_message),
248258
ice_servers: Keyword.get(opts, :ice_servers, [%{urls: "stun:stun.l.google.com:19302"}]),
249259
ice_ip_filter: Keyword.get(opts, :ice_ip_filter),
250260
ice_port_range: Keyword.get(opts, :ice_port_range),
@@ -644,6 +654,16 @@ defmodule LiveExWebRTC.Publisher do
644654
{:noreply, socket}
645655
end
646656

657+
@impl true
658+
def handle_info(
659+
{:ex_webrtc_recorder, rec, _} = msg,
660+
%{assigns: %{publisher: %{recorder: rec} = pub}} = socket
661+
) do
662+
if pub.on_recorder_message, do: pub.on_recorder_message.(pub.id, msg)
663+
664+
{:noreply, socket}
665+
end
666+
647667
@impl true
648668
def handle_event("start-streaming", _, socket) do
649669
publisher = socket.assigns.publisher

0 commit comments

Comments
 (0)