-module(glats@jetstream). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([ack/2, term/2, nack/2, nack_delay/3]). -export_type([jetstream_error/0, storage_type/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. -type jetstream_error() :: {jetstream_not_enabled_for_account, binary()} | {jetstream_not_enabled, binary()} | {insufficient_resources, binary()} | {invalid_stream_config, binary()} | {stream_name_in_subject_does_not_match, binary()} | {stream_name_in_use, binary()} | {stream_not_found, binary()} | {stream_purge_not_allowed, binary()} | {no_message_found, binary()} | {consumer_not_found, binary()} | {consumer_name_exists, binary()} | {consumer_already_exists, binary()} | {wrong_last_sequence, binary()} | {bad_request, binary()} | {unknown, integer(), binary()} | {decode_error, binary()} | timeout | no_responders | {pull_consumer_required, binary()}. -type storage_type() :: file_storage | memory_storage. -file("src/glats/jetstream.gleam", 51). ?DOC(" Sends an acknowledgement for a message.\n"). -spec ack( gleam@erlang@process:subject(glats:connection_message()), glats:message() ) -> {ok, nil} | {error, glats:error()}. ack(Conn, Message) -> glats:respond(Conn, Message, <<""/utf8>>, []). -file("src/glats/jetstream.gleam", 60). ?DOC( " Sends a term acknowledgement for a message.\n" "\n" " Instructs the server to stop redelivery of a message without acknowledging\n" " it as successfully processed.\n" ). -spec term( gleam@erlang@process:subject(glats:connection_message()), glats:message() ) -> {ok, nil} | {error, glats:error()}. term(Conn, Message) -> glats:respond(Conn, Message, <<"+TERM"/utf8>>, []). -file("src/glats/jetstream.gleam", 68). ?DOC( " Sends a negative acknowledgement for a message.\n" "\n" " Delivery will be retried until ack'd or term'd.\n" ). -spec nack( gleam@erlang@process:subject(glats:connection_message()), glats:message() ) -> {ok, nil} | {error, glats:error()}. nack(Conn, Message) -> glats:respond(Conn, Message, <<"-NAK"/utf8>>, []). -file("src/glats/jetstream.gleam", 75). ?DOC( " Sends a negative acknowledgement for a message and delays\n" " redelivery of the message. The unit is in nanoseconds.\n" ). -spec nack_delay( gleam@erlang@process:subject(glats:connection_message()), glats:message(), integer() ) -> {ok, nil} | {error, glats:error()}. nack_delay(Conn, Message, Delay) -> glats:respond( Conn, Message, <<<<"-NAK {\"delay\":"/utf8, (erlang:integer_to_binary(Delay))/binary>>/binary, "}"/utf8>>, [] ).