summaryrefslogtreecommitdiff
path: root/lib/poolparty/pool/supervisor.ex
blob: 751a942cb47062b522fa06f50df0d81eb3fecb97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
defmodule PoolParty.Pool.Supervisor do
  use Supervisor
  require Logger

  def start_link(pool_size, event_manager, opts \\ []) do
    Logger.debug("[#{__MODULE__}]: Starting Work Pool Supervisor")
    Supervisor.start_link(__MODULE__, {pool_size, event_manager}, opts)
  end

  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, [event_manager], id: id)
    end)
    supervise(children, strategy: :one_for_one)
  end

end