Packages
membrane_core
0.2.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.7
1.2.6
1.2.5
retired
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.2.0-rc1
1.1.2
1.1.1
1.1.0
1.1.0-rc1
1.1.0-rc0
1.0.1
1.0.0
1.0.0-rc1
1.0.0-rc0
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
retired
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.0
0.8.2
0.8.1
0.8.0
0.7.0
0.6.1
0.6.0
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
Membrane Multimedia Framework (Core)
Current section
Files
Jump to
Current section
Files
lib/membrane/core/message.ex
defmodule Membrane.Core.Message do
@moduledoc false
# Record representing membrane internal message
require Record
Record.defrecord(:message, __MODULE__, type: nil, args: [])
@type t :: {__MODULE__, type_t, args_t}
@type type_t :: atom
@type args_t :: list | any
defmacro new(type, args \\ []) do
quote do
unquote(__MODULE__).message(type: unquote(type), args: unquote(args))
end
end
@spec send(pid, type_t, args_t) :: t
def send(pid, type, args \\ []) do
Kernel.send(pid, message(type: type, args: args))
end
@spec self(type_t, args_t) :: t
def self(type, args \\ []) do
__MODULE__.send(self(), type, args)
end
@spec call(GenServer.server(), type_t, args_t, timeout()) :: term()
def call(pid, type, args \\ [], timeout \\ 5000) do
GenServer.call(pid, message(type: type, args: args), timeout)
end
end