From 35ff84a8b7c74eaf76acf41a7fa8a59f72e43240 Mon Sep 17 00:00:00 2001 From: Ery Lee Date: Tue, 13 Jan 2015 00:08:28 +0800 Subject: [PATCH] doc --- apps/emqtt/include/emqtt.hrl | 6 ++++- doc/cluster.md | 25 ++++++++++++++++++ doc/session.md | 50 ++++++++++++++++++++++++++++++++++++ doc/state_design.md | 4 +++ 4 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 doc/cluster.md create mode 100644 doc/session.md create mode 100644 doc/state_design.md diff --git a/apps/emqtt/include/emqtt.hrl b/apps/emqtt/include/emqtt.hrl index 19485c7da..2d172945d 100644 --- a/apps/emqtt/include/emqtt.hrl +++ b/apps/emqtt/include/emqtt.hrl @@ -55,7 +55,11 @@ %% MQTT Session %%------------------------------------------------------------------------------ -record(mqtt_session, { - client_id + client_id, + session_pid, + subscriptions = [], + awaiting_ack, + awaiting_rel }). -type mqtt_session() :: #mqtt_session{}. diff --git a/doc/cluster.md b/doc/cluster.md new file mode 100644 index 000000000..076ba2689 --- /dev/null +++ b/doc/cluster.md @@ -0,0 +1,25 @@ + + zookeeper + | + eMQTT1 eMQTT2 eMQTT3 + + +Bridge + + + eMQTT1 --> eMQTT2 + + +Cluster + + eMQTT1 <--> eMQTT2 + + +Cluster and Bridge + + eMQTT1 eMQTT3 + ----> + eMQTT2 eMQTT4 + +Mnesia Cluster + diff --git a/doc/session.md b/doc/session.md new file mode 100644 index 000000000..fc9211a9b --- /dev/null +++ b/doc/session.md @@ -0,0 +1,50 @@ +# Session Design + +## session manager + +```erlang + +%% lookup sesssion +emqtt_sm:lookup_session(ClientId) + +%% Start new or resume existing session +emqtt_sm:start_session(ClientId) + +%% destroy session, discard all data +emqtt_sm:destory_session(ClientId) + +%% close session, save all data +emqtt_sm:close_session(ClientId) +``` + +## session supervisor + +usage? + +## session + +``` +%%system process +process_flag(trap_exit, true), + +session:start() +session:subscribe( +session:publish( +session:resume( +session:suspend( +%%destory all data +session:destory( +%%save all data +session:close() + +``` + +## sm and session + +sm manage and monitor session + +## client and session + + client(normal process)<--link to -->session(system process) + + diff --git a/doc/state_design.md b/doc/state_design.md new file mode 100644 index 000000000..74a484e37 --- /dev/null +++ b/doc/state_design.md @@ -0,0 +1,4 @@ + + +client state --> parse_state + --> proto_state --> session_state