Current section
Files
Jump to
Current section
Files
lib/ex_mobile_device/remote_server.ex
defmodule ExMobileDevice.RemoteServer do
use GenServer, restart: :temporary
use TypedStruct
def start_link(args) do
GenServer.start_link(__MODULE__, args)
end
def start(args) do
GenServer.start(__MODULE__, args)
end
def stop(pid) do
GenServer.stop(pid)
end
typedstruct do
field(:sock, port() | :ssl.sslsocket())
end
@impl true
def init(args) do
udid = Keyword.fetch!(args, :udid)
service = Keyword.fetch!(args, :service)
case ExMobileDevice.Services.connect(udid, service) do
{:ok, sock} ->
sock =
if Keyword.get(args, :remove_ssl_context, false) do
{:ok, port} = :ssl.close(sock, {self(), 1000})
port
else
sock
end
{:ok, %__MODULE__{sock: sock}}
end
{:ok, nil}
end
end