From af23086326f317fd1472d7109d182ccd9500d9ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ertu=C4=9Frul=20Keremo=C4=9Flu?= Date: Wed, 20 Dec 2017 17:31:24 +0300 Subject: [PATCH] Make Replicator.GenServer returns node names with results. --- README.md | 10 ++++++---- lib/distributed/replicator/gen_server.ex | 12 +++++++++--- mix.exs | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7dfc748..131c4a9 100644 --- a/README.md +++ b/README.md @@ -48,8 +48,9 @@ defmodule Storage.KV do end def set(key, value) do - Distributed.Replicator.GenServer.cast(__MODULE__.process_id(), {:set, key, value}) - |> List.first() + {_node_name, result} = Distributed.Replicator.GenServer.cast(__MODULE__.process_id(), {:set, key, value}) + |> List.first() + result end def has?(key) do @@ -57,8 +58,9 @@ defmodule Storage.KV do end def pop(key, default \\ nil) do - Distributed.Replicator.GenServer.call(__MODULE__.process_id(), {:pop, key, default}) - |> List.first() + {_node_name, result} = Distributed.Replicator.GenServer.call(__MODULE__.process_id(), {:pop, key, default}) + |> List.first() + result end end diff --git a/lib/distributed/replicator/gen_server.ex b/lib/distributed/replicator/gen_server.ex index 3498311..7341379 100644 --- a/lib/distributed/replicator/gen_server.ex +++ b/lib/distributed/replicator/gen_server.ex @@ -30,7 +30,9 @@ defmodule Distributed.Replicator.GenServer do """ @spec info(dest :: pid | port | atom, msg :: any, opts :: [any]) :: any def info(dest, msg, opts \\ []) do - Distributed.Parallel.map(Distributed.Node.list(opts), &(send({dest, &1}, msg))) + Distributed.Parallel.map(Distributed.Node.list(opts), fn node_name -> + {node_name, send({dest, node_name}, msg)} + end) end @doc """ @@ -39,7 +41,9 @@ defmodule Distributed.Replicator.GenServer do @spec call(server :: atom, term, opts :: [any]) :: [term] def call(server, term, opts \\ []) do timeout = Keyword.get(opts, :timeout, :infinity) - Distributed.Parallel.map(Distributed.Node.list(opts), &(GenServer.call({server, &1}, term, timeout))) + Distributed.Parallel.map(Distributed.Node.list(opts), fn node_name -> + {node_name, GenServer.call({server, node_name}, term, timeout)} + end) end @doc """ @@ -47,7 +51,9 @@ defmodule Distributed.Replicator.GenServer do """ @spec cast(server :: atom, term :: term, opts :: [any]) :: [term] def cast(server, term, opts \\ []) do - Distributed.Parallel.map(Distributed.Node.list(opts), &(GenServer.cast({server, &1}, term))) + Distributed.Parallel.map(Distributed.Node.list(opts), fn node_name -> + {node_name, GenServer.cast({server, node_name}, term)} + end) end end diff --git a/mix.exs b/mix.exs index cab4763..644f96d 100644 --- a/mix.exs +++ b/mix.exs @@ -9,7 +9,7 @@ defmodule Distributed.Mixfile do description: description(), package: package(), app: :distributed, - version: "0.1.0", + version: "0.1.2", elixir: "~> 1.4", build_embedded: Mix.env() == :prod, start_permanent: Mix.env() == :prod,