]> Entropealabs - wampex.git/commitdiff
update session state machine
authorChristopher <chris@entropealabs.com>
Sun, 16 Feb 2020 15:30:52 +0000 (09:30 -0600)
committerChristopher <chris@entropealabs.com>
Sun, 16 Feb 2020 15:30:52 +0000 (09:30 -0600)
lib/wampex/session.ex
priv/session.json

index 089a24db3e84ec648b5b24c740d31d57f3f156b1..e6283e1b12505510b64b1d138ae13a02a6cc8b8b 100644 (file)
@@ -51,7 +51,7 @@ defmodule Wampex.Session do
 
   def handle_resource("HandleMessage", _, _, data) do
     Logger.info("Handling Message")
-    {:ok, data, []}
+    {:ok, data, [{:next_event, :internal, :noop}]}
   end
 
   def handle_resource("Abort", _, _, data) do
@@ -74,6 +74,11 @@ defmodule Wampex.Session do
     {:ok, data, []}
   end
 
+  def handle_resource(resource, _, state, data) do
+    Logger.info("No specific resource handler for #{resource} in state #{state}")
+    {:ok, data, []}
+  end
+
   def handle_info({:set_session_id, id}, "Init", %SL{data: %Sess{} = sess} = data) do
     {:ok, %SL{data | data: %Sess{sess | id: id}}, [{:next_event, :internal, :welcome}]}
   end
index dadb1faf6866d3d0b95bad8a5275d15999805c71..95c221876093b569d169ade7c1710de81dee3b51 100644 (file)
@@ -21,7 +21,7 @@
       "Next": "Established",
       "Catch": [
         {
-          "ErrorEquals": [":abort"],
+          "ErrorEquals": [":abort", ":invalid_credentials"],
           "Next": "Abort"
         }
       ]
         {
           "StringEquals": ":good_bye",
           "Next": "GoodBye"
+        },
+        {
+          "StringEquals": ":abort",
+          "Next": "Abort"
         }
       ]
-
     },
     "HandleMessage": {
-      "Type": "Task",
+      "Type": "Choice",
       "Resource": "HandleMessage",
-      "TransitionEvent": ":handled",
+      "Choices": [
+        {
+          "StringEquals": ":noop",
+          "Next": "Established"
+        },
+        {
+          "StringEquals": ":event",
+          "Next": "BroadcastEvent"
+        },
+        {
+          "StringEquals": ":yield",
+          "Next": "Yield"
+        },
+        {
+          "StringEquals": ":published",
+          "Next": "Published"
+        },
+        {
+          "StringEquals": ":unsubscribed",
+          "Next": "Unsubscribed"
+        },
+        {
+          "StringEquals": ":subscribed",
+          "Next": "Subscribed"
+        },
+        {
+          "StringEquals": ":result",
+          "Next": "Result"
+        },
+        {
+          "StringEquals": ":registered",
+          "Next": "Registered"
+        },
+        {
+          "StringEquals": ":unregistered",
+          "Next": "Unregistered"
+        },
+        {
+          "StringEquals": ":invocation",
+          "Next": "Invocation"
+        }
+      ]
+    },
+    "Yield": {
+      "Type": "Task",
+      "Resource": "YieldResult",
+      "TransitionEvent": ":yielded",
+      "Next": "Established"
+    },
+    "BroadcastEvent": {
+      "Type": "Task",
+      "Resource": "HandleBroadcast",
+      "Next": "Established"
+    },
+    "Subscribed": {
+      "Type": "Task",
+      "Resource": "HandleSubscribed",
+      "Next": "Established"
+    },
+    "Published": {
+      "Type": "Task",
+      "Resource": "HandlePublished",
+      "Next": "Established"
+    },
+    "Unsubscribed": {
+      "Type": "Task",
+      "Resource": "HandleUnsubscribed",
+      "Next": "Established"
+    },
+    "Subscribed": {
+      "Type": "Task",
+      "Resource": "HandleSubscribed",
+      "Next": "Established"
+    },
+    "Result": {
+      "Type": "Task",
+      "Resource": "HandleResult",
+      "Next": "Established"
+    },
+    "Registered": {
+      "Type": "Task",
+      "Resource": "HandleRegistered",
+      "Next": "Established"
+    },
+    "Unregistered": {
+      "Type": "Task",
+      "Resource": "HandleUnregistered",
+      "Next": "Established"
+    },
+    "Invocation": {
+      "Type": "Task",
+      "Resource": "HandleInvocation",
       "Next": "Established"
     },
     "GoodBye": {