diff options
Diffstat (limited to 'lib/poolparty/pool')
-rw-r--r-- | lib/poolparty/pool/supervisor.ex | 8 | ||||
-rw-r--r-- | lib/poolparty/pool/worker.ex | 12 |
2 files changed, 10 insertions, 10 deletions
diff --git a/lib/poolparty/pool/supervisor.ex b/lib/poolparty/pool/supervisor.ex index 3132f46..751a942 100644 --- a/lib/poolparty/pool/supervisor.ex +++ b/lib/poolparty/pool/supervisor.ex @@ -2,17 +2,17 @@ defmodule PoolParty.Pool.Supervisor do use Supervisor require Logger - def start_link(pool_size, opts \\ []) do + def start_link(pool_size, event_manager, opts \\ []) do Logger.debug("[#{__MODULE__}]: Starting Work Pool Supervisor") - Supervisor.start_link(__MODULE__, {pool_size}, opts) + Supervisor.start_link(__MODULE__, {pool_size, event_manager}, opts) end - def init({pool_size}) do + def init({pool_size, event_manager}) do Logger.debug("[#{__MODULE__}]: Initializing Work Pool Supervisor") children = (1..pool_size) |> Enum.map(fn (id) -> Logger.debug("[#{__MODULE__}]: Starting child worker: #{id}") - worker(PoolParty.Pool.Worker, [], id: id) + worker(PoolParty.Pool.Worker, [event_manager], id: id) end) supervise(children, strategy: :one_for_one) end diff --git a/lib/poolparty/pool/worker.ex b/lib/poolparty/pool/worker.ex index 5ae4161..2131f8e 100644 --- a/lib/poolparty/pool/worker.ex +++ b/lib/poolparty/pool/worker.ex @@ -2,15 +2,15 @@ defmodule PoolParty.Pool.Worker do use GenServer require Logger - def start_link(opts \\ []) do + def start_link(event_manager, opts \\ []) do Logger.debug("[#{__MODULE__}]: Starting worker") - GenServer.start_link(__MODULE__, {}, opts) + GenServer.start_link(__MODULE__, {event_manager}, opts) end - def init(_) do + def init({event_manager}) do Logger.debug("[#{__MODULE__}]: Initializing Worker") PoolParty.Scheduler.join(self) - {:ok, nil} + {:ok, %{events: event_manager}} end def process(pid, function, args) do @@ -18,10 +18,10 @@ defmodule PoolParty.Pool.Worker do GenServer.cast(pid, {:compute, function, args}) end - def handle_cast({:compute, function, args}, _) do + def handle_cast({:compute, function, args}, state) do Logger.debug("[#{__MODULE__}]: Process request received") PoolParty.Scheduler.ready({:result, function.(args), self}) - {:noreply, nil} + {:noreply, state} end end |