-module(tcp). -compile(no_auto_import). -export([connect/2, send/2, 'receive'/1]). -export_type([socket/0, tcp_result/0, tcp_option/0]). -type socket() :: any(). -type tcp_result() :: ok. -type tcp_option() :: binary | {active, boolean()}. -spec connect(binary(), integer()) -> {ok, socket()} | {error, nil}. connect(Host, Port) -> [A, B, C, D] = begin _pipe = gleam@string:split(Host, <<"."/utf8>>), _pipe@2 = gleam@list:map( _pipe, fun(I) -> _pipe@1 = I, gleam@int:parse(_pipe@1) end ), gleam@list:map( _pipe@2, fun(I@1) -> {ok, I@3} = case I@1 of {ok, I@2} -> {ok, I@2}; _try -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _try, module => <<"tcp"/utf8>>, function => <<"connect"/utf8>>, line => 37}) end, I@3 end ) end, gen_tcp:connect({A, B, C, D}, Port, [binary, {active, false}]). -spec send(socket(), bitstring()) -> tcp_result(). send(Socket, Data) -> gen_tcp:send(Socket, Data). -spec 'receive'(socket()) -> {ok, bitstring()} | {error, nil}. 'receive'(Socket) -> gen_tcp:recv(Socket, 0).