Current section

Files

Jump to
membrane_rtc_engine_sip lib sip register_call.ex
Raw

lib/sip/register_call.ex

defmodule Membrane.RTC.Engine.Endpoint.SIP.RegisterCall do
@moduledoc false
use Membrane.RTC.Engine.Endpoint.SIP.Call
alias Membrane.RTC.Engine.Endpoint.SIP.Call
@impl Call
def after_init(state) do
send(self(), :register)
state
end
@impl Call
def handle_response(:register, 200, _response, state) do
send(state.endpoint, :registered)
state
end
@impl Call
def handle_response(:register, status_code, response, state) do
Call.handle_generic_response(status_code, response, state)
end
@impl GenServer
def handle_info(:register, state) do
registrar = %{
state.registrar_credentials.uri
| userinfo: state.registrar_credentials.username
}
headers = Call.build_headers(:register, state, %{to: {"", registrar, %{}}})
message =
:register
|> Sippet.Message.build_request(to_string(registrar))
|> Map.put(:headers, headers)
state = Call.make_request(message, state)
Process.send_after(self(), :register, state.register_interval_ms)
{:noreply, state}
end
end