Current section
Files
Jump to
Current section
Files
priv/target/runtime/transport.ex
defmodule Pi.Target.Runtime.Transport do
@moduledoc false
def send_term(socket, term) do
:gen_tcp.send(socket, :erlang.term_to_binary(term))
end
def recv_term(socket, timeout) do
with {:ok, binary} <- :gen_tcp.recv(socket, 0, timeout) do
{:ok, :erlang.binary_to_term(binary, [:safe])}
end
rescue
_exception in [ArgumentError] -> {:error, :invalid_term}
end
def recv_trusted_term(socket, timeout) do
with {:ok, binary} <- :gen_tcp.recv(socket, 0, timeout) do
# sobelow_skip ["BinToTerm"] — authenticated loopback worker; target atoms are expected.
{:ok, :erlang.binary_to_term(binary)}
end
rescue
_exception in [ArgumentError] -> {:error, :invalid_term}
end
end