From c6cd05ee4fa14752e37ac96ff91d5e4b8f3c1702 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christopher=20Cot=C3=A9?= Date: Fri, 12 Nov 2021 15:18:22 -0500 Subject: [PATCH] add unsubscribe --- lib/client.ex | 15 ++++++++++++++- mix.exs | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/client.ex b/lib/client.ex index 15c5855..de1266b 100644 --- a/lib/client.ex +++ b/lib/client.ex @@ -14,7 +14,7 @@ defmodule Wampex.Client do alias Wampex.Roles.Peer.Error alias Wampex.Roles.Publisher alias Wampex.Roles.Publisher.Publish - alias Wampex.Roles.Subscriber.Subscribe + alias Wampex.Roles.Subscriber.{Subscribe, Unsubscribe} @spec start_link(name: atom(), session_data: Sess.t(), reconnect: boolean()) :: {:ok, pid()} @@ -74,6 +74,19 @@ defmodule Wampex.Client do end end + @spec unsubscribe(name :: module(), subscription :: Unsubscribe.t(), timeout :: integer()) :: + :ok + def unsubscribe(name, %Unsubscribe{subscription_id: si} = unsub, timeout \\ 5000) do + case sync(name, Subscriber.unsubscribe(unsub), timeout) do + :ok -> + Registry.unregister(subscriber_registry_name(name), si) + :ok + + er -> + er + end + end + @spec register(name :: module(), register :: Register.t(), timeout :: integer()) :: {:ok, integer()} def register(name, %Register{procedure: p} = reg, timeout \\ 5000) do diff --git a/mix.exs b/mix.exs index 3b0125e..af451a7 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Wampex.Client.MixProject do def project do [ app: :wampex_client, - version: "0.1.4", + version: "0.1.5", elixir: "~> 1.9", start_permanent: Mix.env() == :prod, elixirc_paths: elixirc_paths(Mix.env()), -- 2.45.3