Current section
Files
Jump to
Current section
Files
src/stratus@internal@transport.erl
-module(stratus@internal@transport).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/stratus/internal/transport.gleam").
-export([connect/5, send/3, 'receive'/3, receive_timeout/4, shutdown/3, set_opts/3]).
-export_type([transport/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-type transport() :: tcp | ssl.
-file("src/stratus/internal/transport.gleam", 14).
?DOC(false).
-spec connect(
transport(),
gleam@erlang@charlist:charlist(),
integer(),
list({gleam@erlang@atom:atom_(), gleam@dynamic:dynamic_()}),
integer()
) -> {ok, stratus@internal@socket:socket()} |
{error, stratus@internal@socket:socket_reason()}.
connect(Transport, Host, Port, Options, Timeout) ->
case Transport of
ssl ->
ssl:connect(Host, Port, Options, Timeout);
tcp ->
gen_tcp:connect(Host, Port, Options, Timeout)
end.
-file("src/stratus/internal/transport.gleam", 27).
?DOC(false).
-spec send(
transport(),
stratus@internal@socket:socket(),
gleam@bytes_tree:bytes_tree()
) -> {ok, nil} | {error, stratus@internal@socket:socket_reason()}.
send(Transport, Socket, Data) ->
case Transport of
ssl ->
stratus_ffi:ssl_send(Socket, Data);
tcp ->
stratus_ffi:tcp_send(Socket, Data)
end.
-file("src/stratus/internal/transport.gleam", 38).
?DOC(false).
-spec 'receive'(transport(), stratus@internal@socket:socket(), integer()) -> {ok,
bitstring()} |
{error, stratus@internal@socket:socket_reason()}.
'receive'(Transport, Socket, Length) ->
case Transport of
ssl ->
ssl:recv(Socket, Length);
tcp ->
gen_tcp:recv(Socket, Length)
end.
-file("src/stratus/internal/transport.gleam", 49).
?DOC(false).
-spec receive_timeout(
transport(),
stratus@internal@socket:socket(),
integer(),
integer()
) -> {ok, bitstring()} | {error, stratus@internal@socket:socket_reason()}.
receive_timeout(Transport, Socket, Length, Timeout) ->
case Transport of
ssl ->
ssl:recv(Socket, Length, Timeout);
tcp ->
gen_tcp:recv(Socket, Length, Timeout)
end.
-file("src/stratus/internal/transport.gleam", 61).
?DOC(false).
-spec shutdown(
transport(),
stratus@internal@socket:socket(),
stratus@internal@socket:shutdown()
) -> {ok, nil} | {error, stratus@internal@socket:socket_reason()}.
shutdown(Transport, Socket, How) ->
case Transport of
ssl ->
stratus_ffi:ssl_shutdown(Socket, How);
tcp ->
stratus_ffi:tcp_shutdown(Socket, How)
end.
-file("src/stratus/internal/transport.gleam", 72).
?DOC(false).
-spec set_opts(
transport(),
stratus@internal@socket:socket(),
list({gleam@erlang@atom:atom_(), gleam@dynamic:dynamic_()})
) -> {ok, nil} | {error, stratus@internal@socket:socket_reason()}.
set_opts(Transport, Socket, Opts) ->
case Transport of
tcp ->
stratus_ffi:tcp_set_opts(Socket, Opts);
ssl ->
stratus_ffi:ssl_set_opts(Socket, Opts)
end.