Ery Lee пре 11 година
родитељ
комит
35ff84a8b7
4 измењених фајлова са 84 додато и 1 уклоњено
  1. 5 1
      apps/emqtt/include/emqtt.hrl
  2. 25 0
      doc/cluster.md
  3. 50 0
      doc/session.md
  4. 4 0
      doc/state_design.md

+ 5 - 1
apps/emqtt/include/emqtt.hrl

@@ -55,7 +55,11 @@
 %% MQTT Session
 %% MQTT Session
 %%------------------------------------------------------------------------------
 %%------------------------------------------------------------------------------
 -record(mqtt_session, {
 -record(mqtt_session, {
-	client_id
+    client_id,
+    session_pid,
+    subscriptions = [],
+    awaiting_ack,
+    awaiting_rel
 }).
 }).
 
 
 -type mqtt_session() :: #mqtt_session{}.
 -type mqtt_session() :: #mqtt_session{}.

+ 25 - 0
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
+

+ 50 - 0
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)
+
+

+ 4 - 0
doc/state_design.md

@@ -0,0 +1,4 @@
+
+
+client state --> parse_state
+             --> proto_state --> session_state