-module(lightspeed@transport).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/lightspeed/transport.gleam").
-export([label/1, bidirectional/1]).
-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(" Transport abstractions.\n").
-type transport() :: web_socket | server_sent_events | long_polling | in_process.
-file("src/lightspeed/transport.gleam", 12).
?DOC(" Return a stable transport label.\n").
-spec label(transport()) -> binary().
label(Transport) ->
case Transport of
web_socket ->
<<"websocket"/utf8>>;
server_sent_events ->
<<"sse"/utf8>>;
long_polling ->
<<"long_polling"/utf8>>;
in_process ->
<<"in_process"/utf8>>
end.
-file("src/lightspeed/transport.gleam", 22).
?DOC(" True when the transport can send client and server messages over one channel.\n").
-spec bidirectional(transport()) -> boolean().
bidirectional(Transport) ->
case Transport of
web_socket ->
true;
in_process ->
true;
server_sent_events ->
false;
long_polling ->
false
end.