logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma

supervisor.ex (999B)


      1 # Pleroma: A lightweight social networking server
      2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
      3 # SPDX-License-Identifier: AGPL-3.0-only
      4 
      5 defmodule Pleroma.Pool.Supervisor do
      6   use Supervisor
      7 
      8   alias Pleroma.Config
      9   alias Pleroma.Pool
     10 
     11   def start_link(args) do
     12     Supervisor.start_link(__MODULE__, args, name: __MODULE__)
     13   end
     14 
     15   def init(_) do
     16     conns_child = %{
     17       id: Pool.Connections,
     18       start:
     19         {Pool.Connections, :start_link, [{:gun_connections, Config.get([:connections_pool])}]}
     20     }
     21 
     22     Supervisor.init([conns_child | pools()], strategy: :one_for_one)
     23   end
     24 
     25   defp pools do
     26     pools = Config.get(:pools)
     27 
     28     pools =
     29       if Config.get([Pleroma.Upload, :proxy_remote]) == false do
     30         Keyword.delete(pools, :upload)
     31       else
     32         pools
     33       end
     34 
     35     for {pool_name, pool_opts} <- pools do
     36       pool_opts
     37       |> Keyword.put(:id, {Pool, pool_name})
     38       |> Keyword.put(:name, pool_name)
     39       |> Pool.child_spec()
     40     end
     41   end
     42 end