Skip to content

Commit 52fe402

Browse files
authored
Add generic message module (#20)
* Add generic message module * Update module doc
1 parent d931168 commit 52fe402

3 files changed

Lines changed: 45 additions & 15 deletions

File tree

lib/ex_rtmp/message.ex

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ defmodule ExRTMP.Message do
55

66
require Logger
77

8+
alias __MODULE__.Command.Generic
89
alias __MODULE__.Command.NetConnection.{Connect, CreateStream, Response}
910
alias __MODULE__.Command.NetStream.{DeleteStream, FCPublish, OnStatus, Play, Publish}
1011
alias __MODULE__.Metadata
@@ -245,16 +246,6 @@ defmodule ExRTMP.Message do
245246
%CreateStream{transaction_id: transaction_id}
246247
end
247248

248-
defp handle_message_payload([result, transaction_id, command_object, data])
249-
when result in ["_result", "_error"] do
250-
%Response{
251-
result: result,
252-
transaction_id: trunc(transaction_id),
253-
command_object: command_object,
254-
data: data
255-
}
256-
end
257-
258249
defp handle_message_payload(["publish", _txid, nil, name, type]), do: Publish.new(name, type)
259250
defp handle_message_payload(["onStatus", _txid, nil, info]), do: %OnStatus{info: info}
260251

@@ -270,11 +261,27 @@ defmodule ExRTMP.Message do
270261
Play.new(name, play_opts)
271262
end
272263

273-
defp handle_message_payload(["deleteStream", _txid, nil, stream_id]),
274-
do: DeleteStream.new(stream_id)
264+
defp handle_message_payload(["deleteStream", _txid, nil, stream_id]) do
265+
DeleteStream.new(stream_id)
266+
end
267+
268+
defp handle_message_payload(["FCPublish", transaction_id, nil, name]) do
269+
FCPublish.new(transaction_id, name)
270+
end
271+
272+
defp handle_message_payload([result, transaction_id, command_object, data])
273+
when result in ["_result", "_error"] do
274+
%Response{
275+
result: result,
276+
transaction_id: trunc(transaction_id),
277+
command_object: command_object,
278+
data: data
279+
}
280+
end
275281

276-
defp handle_message_payload(["FCPublish", transaction_id, nil, name]),
277-
do: FCPublish.new(transaction_id, name)
282+
defp handle_message_payload([name, transaction_id, nil, params]) when is_binary(name) do
283+
Generic.new(name, transaction_id, params)
284+
end
278285

279286
defp handle_message_payload(other) do
280287
Logger.warning("Unknown command: #{inspect(other)}")
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
defmodule ExRTMP.Message.Command.Generic do
2+
@moduledoc false
3+
4+
# This module describe OPTIONAL command message that can be safely ignored. If
5+
# some service requires to handle/send these messages, we'll implement them.
6+
7+
@type t :: %__MODULE__{
8+
name: String.t(),
9+
transaction_id: number(),
10+
params: term()
11+
}
12+
13+
defstruct [:name, :transaction_id, :params]
14+
15+
@spec new(String.t(), number(), term()) :: t()
16+
def new(name, transaction_id, params) do
17+
%__MODULE__{transaction_id: transaction_id, name: name, params: params}
18+
end
19+
end

lib/ex_rtmp/server/client_session.ex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ defmodule ExRTMP.Server.ClientSession do
1010
alias ExRTMP.ChunkParser
1111
alias ExRTMP.Client.MediaProcessor
1212
alias ExRTMP.Message
13-
alias ExRTMP.Message.Command.NetConnection
13+
alias ExRTMP.Message.Command.{Generic, NetConnection}
1414
alias ExRTMP.Message.Command.NetConnection.{CreateStream, Response}
1515
alias ExRTMP.Message.Command.NetStream.{DeleteStream, FCPublish, OnStatus, Play, Publish}
1616
alias ExRTMP.Message.Metadata
@@ -278,6 +278,10 @@ defmodule ExRTMP.Server.ClientSession do
278278
%Play{} ->
279279
handle_play_message(message.payload, message.stream_id, state)
280280

281+
%Generic{} ->
282+
Logger.debug("Ignore generic message: #{inspect(message.payload)}")
283+
{[], state}
284+
281285
_other ->
282286
Logger.warning("Unknown command message: #{inspect(message.payload)}")
283287
{[], state}

0 commit comments

Comments
 (0)