]> Entropealabs - wampex_router.git/commitdiff
expose replica and quorum
authorChristopher <chris@entropealabs.com>
Tue, 17 Mar 2020 23:06:40 +0000 (18:06 -0500)
committerChristopher <chris@entropealabs.com>
Tue, 17 Mar 2020 23:06:40 +0000 (18:06 -0500)
lib/router.ex
test/wampex_test.exs

index 9736b83a90c24b664f60049c34385204f6c09771..2909839661fe3de0937f49b3158a5e4f4a37b7ae 100644 (file)
@@ -4,23 +4,30 @@ defmodule Wampex.Router do
   alias Wampex.Router.{Proxy, REST}
   alias Wampex.Router.Transports.WebSocket
 
-  @spec start_link(name: module(), port: pos_integer(), topologies: []) ::
+  @spec start_link(
+          name: module(),
+          port: pos_integer(),
+          topologies: [],
+          replicas: integer(),
+          quorum: integer()
+        ) ::
           {:ok, pid()}
           | {:error, {:already_started, pid()} | {:shutdown, term()} | term()}
-  def start_link(name: name, port: port, topologies: topologies) when is_atom(name) do
-    Supervisor.start_link(__MODULE__, {name, port, topologies}, name: name)
+  def start_link(name: name, port: port, topologies: topologies, replicas: repls, quorum: quorum)
+      when is_atom(name) do
+    Supervisor.start_link(__MODULE__, {name, port, topologies, repls, quorum}, name: name)
   end
 
-  @spec init({module(), pos_integer(), list()}) ::
+  @spec init({module(), pos_integer(), list(), integer(), integer()}) ::
           {:ok, {:supervisor.sup_flags(), [:supervisor.child_spec()]}} | :ignore
-  def init({name, port, topologies}) do
+  def init({name, port, topologies, replicas, quorum}) do
     children = [
       {ClusterKV,
        [
          name: db_name(name),
          topologies: topologies,
-         replicas: 1,
-         quorum: 1
+         replicas: replicas,
+         quorum: quorum
        ]},
       {Proxy, [name: proxy_name(name)]},
       {Plug.Cowboy, scheme: :http, plug: REST, options: [port: port, dispatch: dispatch(name)]}
index 881d88b8cf1c5197761f239de8fad356f1c0b110..77027f0e4455468c59511bb30460306d137ee140 100644 (file)
@@ -25,7 +25,17 @@ defmodule WampexTest do
 
   setup_all do
     topologies = Application.get_env(:cluster_kv, :topologies)
-    [server: Router.start_link(name: TestRouter, port: 4000, topologies: topologies)]
+
+    [
+      server:
+        Router.start_link(
+          name: TestRouter,
+          port: 4000,
+          topologies: topologies,
+          replicas: 1,
+          quorum: 1
+        )
+    ]
   end
 
   @session %Session{url: @url, realm: @realm, roles: @roles}