From b110a154efb50123c1442ee2131ac9f89f78d9b5 Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Wed, 18 Jul 2018 14:27:11 +0800 Subject: [PATCH] Upgrade header files for EMQ X 3.0 --- Makefile | 10 ++--- TODO | 5 ++- docs/mqtt-v5.0.pdf | Bin 2557522 -> 2605289 bytes include/emqx.hrl | 99 +++++++++++++++++++----------------------- include/emqx_misc.hrl | 13 ++++++ include/emqx_mqtt.hrl | 48 +++++++------------- 6 files changed, 81 insertions(+), 94 deletions(-) diff --git a/Makefile b/Makefile index 42eaffc57..349baab95 100644 --- a/Makefile +++ b/Makefile @@ -4,9 +4,7 @@ PROJECT = emqx PROJECT_DESCRIPTION = EMQ X Broker PROJECT_VERSION = 3.0 -NO_AUTOPATCH = gen_rpc cuttlefish - -DEPS = goldrush gproc lager esockd ekka mochiweb pbkdf2 lager_syslog bcrypt clique jsx canal_lock +DEPS = goldrush gproc lager esockd ekka mochiweb pbkdf2 lager_syslog bcrypt clique jsx dep_goldrush = git https://github.com/basho/goldrush 0.1.9 dep_gproc = git https://github.com/uwiger/gproc 0.7.0 @@ -19,9 +17,9 @@ dep_ekka = git https://github.com/emqtt/ekka develop dep_mochiweb = git https://github.com/emqtt/mochiweb emqx30 dep_pbkdf2 = git https://github.com/emqtt/pbkdf2 2.0.1 dep_bcrypt = git https://github.com/smarkets/erlang-bcrypt master -dep_clique = git https://github.com/emqtt/clique -dep_clique = git https://github.com/emqtt/clique -dep_canal_lock = git https://github.com/emqx/canal-lock +dep_clique = git https://github.com/emqx/clique + +NO_AUTOPATCH = gen_rpc cuttlefish ERLC_OPTS += +debug_info ERLC_OPTS += +'{parse_transform, lager_transform}' diff --git a/TODO b/TODO index f748eab3f..055d2b8d4 100644 --- a/TODO +++ b/TODO @@ -1,2 +1,5 @@ + 1. Update the README.md -2. Update the documentation +2. Update the Documentation +3. Shared subscription strategy and dispatch strategy + diff --git a/docs/mqtt-v5.0.pdf b/docs/mqtt-v5.0.pdf index 1fa8883d0517edaf5e2df9010b9601a223a4d1e4..6e5cd42056adbbc99e718a7f8700aa15491751fa 100644 GIT binary patch delta 39013 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 C7|8qp delta 89 zcmV~$*A0SD006)|3t|NNAw3L!W=dL diff --git a/include/emqx.hrl b/include/emqx.hrl index 9ee90b186..f0b2b46d1 100644 --- a/include/emqx.hrl +++ b/include/emqx.hrl @@ -1,30 +1,28 @@ -%%%=================================================================== -%%% Copyright (c) 2013-2018 EMQ Inc. All rights reserved. -%%% -%%% Licensed under the Apache License, Version 2.0 (the "License"); -%%% you may not use this file except in compliance with the License. -%%% You may obtain a copy of the License at -%%% -%%% http://www.apache.org/licenses/LICENSE-2.0 -%%% -%%% Unless required by applicable law or agreed to in writing, software -%%% distributed under the License is distributed on an "AS IS" BASIS, -%%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%%% See the License for the specific language governing permissions and -%%% limitations under the License. -%%%=================================================================== +%% Copyright (c) 2018 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. %%-------------------------------------------------------------------- %% Banner %%-------------------------------------------------------------------- --define(COPYRIGHT, "Copyright (c) 2013-2018 EMQ Inc."). +-define(COPYRIGHT, "Copyright (c) 2018 EMQ Technologies Co., Ltd"). -define(LICENSE_MESSAGE, "Licensed under the Apache License, Version 2.0"). -define(PROTOCOL_VERSION, "MQTT/5.0"). --define(ERTS_MINIMUM_REQUIRED, "9.2"). +-define(ERTS_MINIMUM_REQUIRED, "10.0"). %%-------------------------------------------------------------------- %% Topics' prefix: $SYS | $queue | $share @@ -52,11 +50,9 @@ | {share, binary()} | {atom(), term()}). --record(subscription, - { subid :: binary() | atom(), - topic :: topic(), - subopts :: list(suboption()) - }). +-record(subscription, {subid :: binary() | atom(), + topic :: topic(), + subopts :: list(suboption())}). -type(subscription() :: #subscription{}). @@ -76,29 +72,20 @@ -type(mountpoint() :: binary()). --type(connector() :: atom()). +-type(zone() :: undefined | atom()). --type(zone() :: atom()). - --record(client, - { client_id :: client_id(), - client_pid :: pid(), - zone :: zone(), - node :: node(), - username :: username(), - peername :: peername(), - protocol :: protocol(), - connector :: connector(), - mountpoint :: mountpoint(), - attributes :: #{atom() => term()} - }). +-record(client, {id :: client_id(), + pid :: pid(), + zone :: zone(), + peername :: peername(), + username :: username(), + protocol :: protocol(), + attributes :: #{atom() => term()}, + connected_at :: erlang:timestamp()}). -type(client() :: #client{}). --record(session, - { sid :: client_id(), - pid :: pid() - }). +-record(session, {sid :: client_id(), pid :: pid()}). -type(session() :: #session{}). @@ -108,11 +95,12 @@ -type(message_id() :: binary() | undefined). --type(message_flag() :: sys | dup | retain | atom()). +-type(message_flag() :: sys | qos | dup | retain | atom()). --type(message_flags() :: #{message_flag() => boolean()}). +-type(message_flags() :: #{message_flag() => boolean() | integer()}). --type(message_headers() :: #{packet_id => pos_integer(), +-type(message_headers() :: #{protocol => protocol(), + packet_id => pos_integer(), priority => non_neg_integer(), ttl => pos_integer(), atom() => term()}). @@ -121,13 +109,13 @@ %% See 'Application Message' in MQTT Version 5.0 -record(message, - { id :: message_id(), %% Global unique id - qos :: qos(), %% Message QoS + { id :: message_id(), %% Message guid + qos :: qos(), %% Message qos from :: atom() | client(), %% Message from sender :: pid(), %% The pid of the sender/publisher flags :: message_flags(), %% Message flags headers :: message_headers(), %% Message headers - topic :: binary(), %% Message topic + topic :: topic(), %% Message topic properties :: map(), %% Message user properties payload :: payload(), %% Message payload timestamp :: erlang:timestamp() %% Timestamp @@ -136,8 +124,9 @@ -type(message() :: #message{}). -record(delivery, - { message :: message(), - flows :: list() + { node :: node(), %% The node that created the delivery + message :: message(), %% The message delivered + flows :: list() %% The message flow path }). -type(delivery() :: #delivery{}). @@ -219,12 +208,12 @@ %%-------------------------------------------------------------------- -record(command, - { name, - action, - args = [], - opts = [], - usage, - descr + { name :: atom(), + action :: atom(), + args = [] :: list(), + opts = [] :: list(), + usage :: string(), + descr :: string() }). -type(command() :: #command{}). diff --git a/include/emqx_misc.hrl b/include/emqx_misc.hrl index f5ec9fbb2..e904b71e3 100644 --- a/include/emqx_misc.hrl +++ b/include/emqx_misc.hrl @@ -1,3 +1,16 @@ +%% Copyright (c) 2018 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. -define(record_to_map(Def, Rec), maps:from_list(?record_to_proplist(Def, Rec))). diff --git a/include/emqx_mqtt.hrl b/include/emqx_mqtt.hrl index 4dae631f4..f5bb13604 100644 --- a/include/emqx_mqtt.hrl +++ b/include/emqx_mqtt.hrl @@ -1,18 +1,16 @@ -%%%=================================================================== -%%% Copyright (c) 2013-2018 EMQ Inc. All rights reserved. -%%% -%%% Licensed under the Apache License, Version 2.0 (the "License"); -%%% you may not use this file except in compliance with the License. -%%% You may obtain a copy of the License at -%%% -%%% http://www.apache.org/licenses/LICENSE-2.0 -%%% -%%% Unless required by applicable law or agreed to in writing, software -%%% distributed under the License is distributed on an "AS IS" BASIS, -%%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%%% See the License for the specific language governing permissions and -%%% limitations under the License. -%%%=================================================================== +%% Copyright (c) 2018 EMQ Technologies Co., Ltd. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. %%-------------------------------------------------------------------- %% MQTT SockOpts @@ -77,7 +75,7 @@ I =:= qos2; I =:= exactly_once)). %%-------------------------------------------------------------------- -%% Maximum ClientId Length. Why 1024? +%% Maximum ClientId Length. %%-------------------------------------------------------------------- -define(MAX_CLIENTID_LEN, 1024). @@ -199,7 +197,7 @@ -define(MAX_PACKET_SIZE, 16#fffffff). %%-------------------------------------------------------------------- -%% MQTT Parser and Serializer +%% MQTT Frame Mask %%-------------------------------------------------------------------- -define(HIGHBIT, 2#10000000). @@ -526,19 +524,5 @@ -type(mqtt_message() :: #mqtt_message{}). -define(WILL_MSG(Qos, Retain, Topic, Props, Payload), - #mqtt_message{qos = WillQos, retain = WillRetain, - topic = WillTopic, properties = Props, - payload = WillPayload}). - -%%-------------------------------------------------------------------- -%% MQTT Delivery -%%-------------------------------------------------------------------- - --record(mqtt_delivery, - { sender :: pid(), - message :: mqtt_message(), - flows :: list() - }). - --type(mqtt_delivery() :: #mqtt_delivery{}). + #mqtt_message{qos = Qos, retain = Retain, topic = Topic, properties = Props, payload = Payload}).