-module(stratus@internal@ssl). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([connect/4, shutdown/2, send/2, 'receive'/2, receive_timeout/3, set_opts/2, start/0]). -spec connect( 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(Address, Port, Options, Timeout) -> ssl:connect(Address, Port, Options, Timeout). -spec shutdown( stratus@internal@socket:socket(), stratus@internal@socket:shutdown() ) -> {ok, nil} | {error, stratus@internal@socket:socket_reason()}. shutdown(Socket, How) -> stratus_ffi:ssl_shutdown(Socket, How). -spec send( stratus@internal@socket:socket(), gleam@bytes_builder:bytes_builder() ) -> {ok, nil} | {error, stratus@internal@socket:socket_reason()}. send(Socket, Packet) -> stratus_ffi:ssl_send(Socket, Packet). -spec 'receive'(stratus@internal@socket:socket(), integer()) -> {ok, bitstring()} | {error, stratus@internal@socket:socket_reason()}. 'receive'(Socket, Length) -> ssl:recv(Socket, Length). -spec receive_timeout(stratus@internal@socket:socket(), integer(), integer()) -> {ok, bitstring()} | {error, stratus@internal@socket:socket_reason()}. receive_timeout(Socket, Length, Timeout) -> ssl:recv(Socket, Length, Timeout). -spec set_opts( stratus@internal@socket:socket(), list({gleam@erlang@atom:atom_(), gleam@dynamic:dynamic_()}) ) -> {ok, nil} | {error, stratus@internal@socket:socket_reason()}. set_opts(Socket, Opts) -> stratus_ffi:ssl_set_opts(Socket, Opts). -spec start() -> {ok, nil} | {error, nil}. start() -> stratus_ffi:ssl_start().