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)]}
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}