View Source nats (enats v1.0.0)

Summary

Types

-type nats_host() :: inet:socket_address().

Types

data/0

-type data() ::
          #{socket := undefined | gen_tcp:socket() | ssl:socket(),
            tls := boolean(),
            server_info := undefined | map(),
            recv_buffer := binary(),
            batch := iolist(),
            batch_size := non_neg_integer(),
            batch_timer := undefined | reference(),
            tid := ets:tid(),
            inbox := undefined | binary(),
            srv_init := boolean(),
            parent := pid(),
            host := nats_host(),
            port := inet:port_number(),
            socket_opts := socket_opts(),
            verbose := boolean(),
            pedantic := boolean(),
            tls_required := boolean(),
            tls_opts := [ssl:tls_client_option()],
            auth_required := boolean(),
            auth_token => binary(),
            user => binary(),
            pass => binary(),
            name := binary(),
            lang := binary(),
            version := binary(),
            headers := boolean(),
            no_responders := boolean(),
            buffer_size := non_neg_integer(),
            max_batch_size := non_neg_integer(),
            send_timeout := non_neg_integer(),
            _ => _}.

endpoint/0

-type endpoint() ::
          #{name := binary(), group_name => binary(), queue_group => binary(), metadata => map()}.

nats_host/0

-type nats_host() :: inet:socket_address() | inet:hostname() | binary().

-type nats_host() :: inet:socket_address().

opts/0

-type opts() ::
          #{socket_opts => socket_opts(),
            verbose => boolean(),
            pedantic => boolean(),
            tls_required => boolean(),
            tls_opts => [ssl:tls_client_option()],
            auth_required => boolean(),
            auth_token => binary(),
            user => binary(),
            pass => binary(),
            name => binary(),
            lang => binary(),
            version => binary(),
            headers => boolean(),
            no_responders => boolean(),
            buffer_size => -1 | non_neg_integer(),
            max_batch_size => non_neg_integer(),
            send_timeout => non_neg_integer()}.

service/0

-type service() :: #{name := binary(), version := binary(), description => binary(), metadata => map()}.

socket_opts/0

-type socket_opts() ::
          #{netns => string(),
            netdev => binary(),
            rcvbuf => non_neg_integer(),
            sndbuf => non_neg_integer(),
            reuseaddr => boolean()}.

Functions

callback_mode()

-spec callback_mode() -> gen_statem:callback_mode_result().

code_change(OldVsn, State, Data, Extra)

connect(Host, Port)

connect(Host, Port, Opts)

-spec connect(Host :: nats_host(), Port :: inet:port_number(), Opts :: opts()) ->
                 {ok, Pid :: pid()} | ignore | {error, Error :: term()}.

disconnect(Server)

dump_subs(Server)

endpoint(EndpDesc, Function)

-spec endpoint(endpoint(), atom()) -> #endpoint{function :: term(), id :: term(), endpoint :: term()}.

flush(Server)

format_status(Status)

handle_event(EventType, OldState, State, Data)

-spec handle_event(enter, OldState :: term(), State :: term(), Data :: term()) ->
                      gen_statem:state_enter_result(term(), data());
                  (gen_statem:event_type(), Msg :: term(), State :: term(), Data :: term()) ->
                      gen_statem:event_handler_result(term(), data()).

init(_)

-spec init({Host :: nats_host(), Port :: inet:port_number(), Opts :: opts()}) ->
              gen_statem:init_result(connecting, data()).

is_ready(Server)

pub(Server, Subject)

pub(Server, Subject, Opts)

pub(Server, Subject, Payload, Opts)

request(Server, Subject, Payload, Opts)

rnd_topic_id()

serve(Server, Service)

service(SvcDesc, EndpDesc, Module, State)

-spec service(service(),
              [#endpoint{function :: term(), id :: term(), endpoint :: term()}, ...],
              module(),
              any()) ->
                 #svc{module :: term(),
                      state :: term(),
                      id :: term(),
                      service :: term(),
                      endpoints :: term(),
                      started :: term()}.

service_reply(Nats_req, Payload)

service_reply(Nats_req, Header, Payload)

sub(Server, Subject)

sub(Server, Subject, Opts)

terminate(Reason, State, Data)

unsub(Server, SRef)

unsub(Server, SRef, Opts)