From fb54fe0fad9041dcce8eaf3f371dd71f24f50b39 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Tue, 25 Jun 2019 14:45:23 +0800 Subject: [PATCH] Improve export_type attr --- src/emqx_access_rule.erl | 4 ++-- src/emqx_batch.erl | 6 ++---- src/emqx_client_sock.erl | 4 ++-- src/emqx_cm.erl | 6 +++--- src/emqx_gc.erl | 6 ++++-- src/emqx_hooks.erl | 7 +++++-- src/emqx_keepalive.erl | 4 ++-- src/emqx_metrics.erl | 4 ++-- src/emqx_mountpoint.erl | 4 ++-- src/emqx_mqtt_caps.erl | 5 +++-- src/emqx_pmon.erl | 3 ++- src/emqx_pqueue.erl | 4 ++-- src/emqx_sequence.erl | 4 ++-- src/emqx_stats.erl | 6 +++--- src/emqx_topic.erl | 9 +++++++-- src/emqx_zone.erl | 10 +++++++--- 16 files changed, 50 insertions(+), 36 deletions(-) diff --git a/src/emqx_access_rule.erl b/src/emqx_access_rule.erl index 2f57059cb..d56710a21 100644 --- a/src/emqx_access_rule.erl +++ b/src/emqx_access_rule.erl @@ -23,6 +23,8 @@ , compile/1 ]). +-export_type([rule/0]). + -type(acl_result() :: allow | deny). -type(who() :: all | binary() | @@ -35,8 +37,6 @@ -type(rule() :: {acl_result(), all} | {acl_result(), who(), access(), list(emqx_topic:topic())}). --export_type([rule/0]). - -define(ALLOW_DENY(A), ((A =:= allow) orelse (A =:= deny))). -define(PUBSUB(A), ((A =:= subscribe) orelse (A =:= publish) orelse (A =:= pubsub))). diff --git a/src/emqx_batch.erl b/src/emqx_batch.erl index 6d1df24ca..c5ea3c598 100644 --- a/src/emqx_batch.erl +++ b/src/emqx_batch.erl @@ -24,6 +24,8 @@ , items/1 ]). +-export_type([options/0, batch/0]). + -record(batch, { batch_size :: non_neg_integer(), batch_q :: list(any()), @@ -40,10 +42,6 @@ -opaque(batch() :: #batch{}). --export_type([options/0]). - --export_type([batch/0]). - %%-------------------------------------------------------------------- %% APIs %%-------------------------------------------------------------------- diff --git a/src/emqx_client_sock.erl b/src/emqx_client_sock.erl index f40064f17..eb938910c 100644 --- a/src/emqx_client_sock.erl +++ b/src/emqx_client_sock.erl @@ -26,6 +26,8 @@ , getstat/2 ]). +-export_type([socket/0, option/0]). + -record(ssl_socket, {tcp, ssl}). -type(socket() :: inet:socket() | #ssl_socket{}). @@ -34,8 +36,6 @@ -type(option() :: gen_tcp:connect_option() | {ssl_opts, [ssl:ssl_option()]}). --export_type([socket/0, option/0]). - -define(DEFAULT_TCP_OPTIONS, [binary, {packet, raw}, {active, false}, {nodelay, true}, {reuseaddr, true}]). diff --git a/src/emqx_cm.erl b/src/emqx_cm.erl index 2a42064d8..39b19d9ba 100644 --- a/src/emqx_cm.erl +++ b/src/emqx_cm.erl @@ -73,14 +73,14 @@ %% Internal export -export([stats_fun/0]). +-export_type([attrs/0, stats/0]). + -type(chan_pid() :: pid()). -opaque(attrs() :: #{atom() => term()}). -opaque(stats() :: #{atom() => integer()}). --export_type([attrs/0, stats/0]). - %% Tables for channel management. -define(CHAN_TAB, emqx_channel). @@ -164,7 +164,7 @@ get_conn_attrs(ClientId, ChanPid) -> %% @doc Set conn attrs. -spec(set_conn_attrs(emqx_types:client_id(), attrs()) -> ok). -set_conn_attrs(ClientId, Attrs) when is_map(Attrs) -> +set_conn_attrs(ClientId, Attrs) when is_binary(ClientId), is_map(Attrs) -> Chan = {ClientId, self()}, case ets:update_element(?CONN_TAB, Chan, {2, Attrs}) of true -> ok; diff --git a/src/emqx_gc.erl b/src/emqx_gc.erl index 256a5c4ff..83264ecee 100644 --- a/src/emqx_gc.erl +++ b/src/emqx_gc.erl @@ -14,12 +14,14 @@ %% limitations under the License. %%-------------------------------------------------------------------- +%%-------------------------------------------------------------------- %% @doc This module manages an opaque collection of statistics data used %% to force garbage collection on `self()' process when hitting thresholds. %% Namely: %% (1) Total number of messages passed through %% (2) Total data volume passed through %% @end +%%-------------------------------------------------------------------- -module(emqx_gc). @@ -31,6 +33,8 @@ , reset/1 ]). +-export_type([gc_state/0]). + -type(opts() :: #{count => integer(), bytes => integer()}). @@ -39,8 +43,6 @@ -opaque(gc_state() :: {?MODULE, st()}). --export_type([gc_state/0]). - -define(GCS(St), {?MODULE, St}). -define(disabled, disabled). diff --git a/src/emqx_hooks.erl b/src/emqx_hooks.erl index 220383ebb..39c692b4a 100644 --- a/src/emqx_hooks.erl +++ b/src/emqx_hooks.erl @@ -46,6 +46,11 @@ , code_change/3 ]). +-export_type([ hookpoint/0 + , action/0 + , filter/0 + ]). + %% Multiple callbacks can be registered on a hookpoint. %% The execution order depends on the priority value: %% - Callbacks with greater priority values will be run before @@ -69,8 +74,6 @@ callbacks :: list(#callback{}) }). --export_type([hookpoint/0, action/0, filter/0]). - -define(TAB, ?MODULE). -define(SERVER, ?MODULE). diff --git a/src/emqx_keepalive.erl b/src/emqx_keepalive.erl index 36cb6b335..25170067d 100644 --- a/src/emqx_keepalive.erl +++ b/src/emqx_keepalive.erl @@ -22,6 +22,8 @@ , cancel/1 ]). +-export_type([keepalive/0]). + -record(keepalive, { statfun, statval, @@ -33,8 +35,6 @@ -opaque(keepalive() :: #keepalive{}). --export_type([keepalive/0]). - %%-------------------------------------------------------------------- %% APIs %%-------------------------------------------------------------------- diff --git a/src/emqx_metrics.erl b/src/emqx_metrics.erl index 7a40eaf4e..f8582ca9a 100644 --- a/src/emqx_metrics.erl +++ b/src/emqx_metrics.erl @@ -60,12 +60,12 @@ , code_change/3 ]). +-export_type([metric_idx/0]). + -opaque(metric_idx() :: 1..1024). -type(metric_name() :: atom() | string() | binary()). --export_type([metric_idx/0]). - -define(MAX_SIZE, 1024). -define(RESERVED_IDX, 256). -define(TAB, ?MODULE). diff --git a/src/emqx_mountpoint.erl b/src/emqx_mountpoint.erl index da8cf1f55..1e52d9d25 100644 --- a/src/emqx_mountpoint.erl +++ b/src/emqx_mountpoint.erl @@ -27,10 +27,10 @@ -export([replvar/2]). --type(mountpoint() :: binary()). - -export_type([mountpoint/0]). +-type(mountpoint() :: binary()). + %%-------------------------------------------------------------------- %% APIs %%-------------------------------------------------------------------- diff --git a/src/emqx_mqtt_caps.erl b/src/emqx_mqtt_caps.erl index abd14ee3c..dc748c832 100644 --- a/src/emqx_mqtt_caps.erl +++ b/src/emqx_mqtt_caps.erl @@ -26,6 +26,8 @@ , get_caps/2 ]). +-export_type([caps/0]). + -type(caps() :: #{max_packet_size => integer(), max_clientid_len => integer(), max_topic_alias => integer(), @@ -35,9 +37,8 @@ mqtt_shared_subscription => boolean(), mqtt_wildcard_subscription => boolean()}). --export_type([caps/0]). - -define(UNLIMITED, 0). + -define(DEFAULT_CAPS, [{max_packet_size, ?MAX_PACKET_SIZE}, {max_clientid_len, ?MAX_CLIENTID_LEN}, {max_topic_alias, ?UNLIMITED}, diff --git a/src/emqx_pmon.erl b/src/emqx_pmon.erl index 411eb8ce6..52d7a2619 100644 --- a/src/emqx_pmon.erl +++ b/src/emqx_pmon.erl @@ -32,9 +32,10 @@ -export([count/1]). --type(pmon() :: {?MODULE, map()}). -export_type([pmon/0]). +-opaque(pmon() :: {?MODULE, map()}). + %%-------------------------------------------------------------------- %% APIs %%-------------------------------------------------------------------- diff --git a/src/emqx_pqueue.erl b/src/emqx_pqueue.erl index 06ea192fb..85c89866d 100644 --- a/src/emqx_pqueue.erl +++ b/src/emqx_pqueue.erl @@ -57,6 +57,8 @@ , highest/1 ]). +-export_type([q/0]). + %%---------------------------------------------------------------------------- -type(priority() :: integer() | 'infinity'). @@ -64,8 +66,6 @@ -type(pqueue() :: squeue() | {pqueue, [{priority(), squeue()}]}). -type(q() :: pqueue()). --export_type([q/0]). - %%---------------------------------------------------------------------------- -spec(new() -> pqueue()). diff --git a/src/emqx_sequence.erl b/src/emqx_sequence.erl index 29381bf6c..8aa763b6f 100644 --- a/src/emqx_sequence.erl +++ b/src/emqx_sequence.erl @@ -23,14 +23,14 @@ , delete/1 ]). +-export_type([seqid/0]). + -type(key() :: term()). -type(name() :: atom()). -type(seqid() :: non_neg_integer()). --export_type([seqid/0]). - %%-------------------------------------------------------------------- %% APIs %%-------------------------------------------------------------------- diff --git a/src/emqx_stats.erl b/src/emqx_stats.erl index 8db14753e..d3454c6f2 100644 --- a/src/emqx_stats.erl +++ b/src/emqx_stats.erl @@ -51,18 +51,18 @@ , code_change/3 ]). +-export_type([stats/0]). + -record(update, {name, countdown, interval, func}). -record(state, { - timer :: reference(), + timer :: reference(), updates :: [#update{}], tick_ms :: timeout() }). -type(stats() :: list({atom(), non_neg_integer()})). --export_type([stats/0]). - %% Connection stats -define(CONNECTION_STATS, [ 'connections.count', % current connections diff --git a/src/emqx_topic.erl b/src/emqx_topic.erl index f3fccd70b..86cbcf547 100644 --- a/src/emqx_topic.erl +++ b/src/emqx_topic.erl @@ -35,14 +35,18 @@ , parse/2 ]). +-export_type([ group/0 + , topic/0 + , word/0 + , triple/0 + ]). + -type(group() :: binary()). -type(topic() :: binary()). -type(word() :: '' | '+' | '#' | binary()). -type(words() :: list(word())). -opaque(triple() :: {root | binary(), word(), binary()}). --export_type([group/0, topic/0, word/0, triple/0]). - -define(MAX_TOPIC_LEN, 4096). %%-------------------------------------------------------------------- @@ -232,3 +236,4 @@ parse(Topic, Options = #{qos := QoS}) -> {Topic, Options#{rc => QoS}}; parse(Topic, Options) -> {Topic, Options}. + diff --git a/src/emqx_zone.erl b/src/emqx_zone.erl index c0ad66312..c4721485b 100644 --- a/src/emqx_zone.erl +++ b/src/emqx_zone.erl @@ -45,9 +45,13 @@ , code_change/3 ]). +-export_type([zone/0]). + %% dummy state -record(state, {}). +-type(zone() :: atom()). + -define(TAB, ?MODULE). -define(SERVER, ?MODULE). -define(KEY(Zone, Key), {?MODULE, Zone, Key}). @@ -60,13 +64,13 @@ start_link() -> gen_server:start_link({local, ?SERVER}, ?MODULE, [], []). --spec(get_env(maybe(emqx_types:zone()), atom()) -> maybe(term())). +-spec(get_env(maybe(zone()), atom()) -> maybe(term())). get_env(undefined, Key) -> emqx_config:get_env(Key); get_env(Zone, Key) -> get_env(Zone, Key, undefined). --spec(get_env(maybe(emqx_types:zone()), atom(), term()) -> maybe(term())). +-spec(get_env(maybe(zone()), atom(), term()) -> maybe(term())). get_env(undefined, Key, Def) -> emqx_config:get_env(Key, Def); get_env(Zone, Key, Def) -> @@ -75,7 +79,7 @@ get_env(Zone, Key, Def) -> emqx_config:get_env(Key, Def) end. --spec(set_env(emqx_types:zone(), atom(), term()) -> ok). +-spec(set_env(zone(), atom(), term()) -> ok). set_env(Zone, Key, Val) -> gen_server:cast(?SERVER, {set_env, Zone, Key, Val}).