]> Entropealabs - wampex_client.git/commitdiff
further handler enhancements and version bump
authorChristopher Coté <chris@entropealabs.com>
Thu, 11 Nov 2021 17:13:08 +0000 (12:13 -0500)
committerChristopher Coté <chris@entropealabs.com>
Thu, 11 Nov 2021 17:13:08 +0000 (12:13 -0500)
lib/client/handler.ex
mix.exs

index fdff3351726b0832f296cf09df22fc29ba721d77..4f26224d0037ea059c0cf52c29ba54882b152a83 100644 (file)
@@ -4,12 +4,15 @@ defmodule Wampex.Client.Handler do
   """
   @callback do_init(any()) :: %{client_name: atom()}
 
+  require Logger
+
   defmacro __using__(_opts) do
     quote do
       use GenServer
       alias Wampex.Client
       alias Wampex.Roles.Callee.Yield
       alias Wampex.Roles.Peer.Error
+      require Logger
       import unquote(__MODULE__)
       @before_compile unquote(__MODULE__)
       @procedures []
@@ -32,7 +35,7 @@ defmodule Wampex.Client.Handler do
         struct(state, %{client_name: cn})
       end
 
-      defp add_client(state, cn), do: %{state | client_name: cn}
+      defp add_client(state, cn), do: Map.put(state, :client_name, cn)
 
       @impl true
       def handle_continue({:registered, _}, state), do: {:noreply, state}
@@ -63,26 +66,39 @@ defmodule Wampex.Client.Handler do
     procedures = Module.get_attribute(env.module, :procedures) |> Enum.uniq()
     topics = Module.get_attribute(env.module, :topics) |> Enum.uniq()
 
+    Logger.info(
+      "#{env.module} | Registering topics: #{inspect(topics)}, procedures: #{inspect(procedures)}"
+    )
+
     quote do
+      require Logger
       alias Wampex.Client
       alias Wampex.Roles.Callee.Register
       alias Wampex.Roles.Subscriber.Subscribe
       @impl true
       def handle_info({:connected, _}, %{client_name: cn} = state) do
+        Logger.info("Connected")
+
         regs =
           Enum.map(unquote(procedures), fn p ->
-            Client.register(cn, %Register{procedure: p})
+            {:ok, reg} = Client.register(cn, %Register{procedure: p})
+            reg
           end)
 
         subs =
           Enum.map(unquote(topics), fn
             {t, match} ->
-              Client.subscribe(cn, %Subscribe{topic: t, options: %{"match" => match}})
+              {:ok, proc} =
+                Client.subscribe(cn, %Subscribe{topic: t, options: %{"match" => match}})
+
+              proc
 
             t ->
-              Client.subscribe(cn, %Subscribe{topic: t})
+              {:ok, reg} = Client.subscribe(cn, %Subscribe{topic: t})
+              reg
           end)
 
+        Logger.info("Registered!")
         {:noreply, state, {:continue, {:registered, %{registrations: regs, subscriptions: subs}}}}
       end
     end
@@ -128,8 +144,7 @@ defmodule Wampex.Client.Handler do
             },
             unquote(state) = state
           ) do
-        state = unquote(block)
-        {:noreply, state}
+        unquote(block)
       end
     end
   end
diff --git a/mix.exs b/mix.exs
index f7aac8954dd9ef69a14e51ddc64a9d9e6ef6acda..ea38e4966334d93bad5b8f58aefb1ffd319aa82a 100644 (file)
--- a/mix.exs
+++ b/mix.exs
@@ -4,7 +4,7 @@ defmodule Wampex.Client.MixProject do
   def project do
     [
       app: :wampex_client,
-      version: "0.1.2",
+      version: "0.1.3",
       elixir: "~> 1.9",
       start_permanent: Mix.env() == :prod,
       elixirc_paths: elixirc_paths(Mix.env()),