Packages

An Elixir framework to build your own in-house PaaS (Platform as a Service).

Current section

Files

Jump to
antikythera core executor_pool setting.ex
Raw

core/executor_pool/setting.ex

# Copyright(c) 2015-2018 ACCESS CO., LTD. All rights reserved.
use Croma
defmodule AntikytheraCore.ExecutorPool.Setting do
alias Antikythera.{MapUtil, GearName}
alias AntikytheraCore.Ets.ConfigCache
use Croma.Struct, recursive_new?: true, fields: [
n_pools_a: Croma.NonNegInteger,
pool_size_a: Croma.NonNegInteger,
pool_size_j: Croma.NonNegInteger,
ws_max_connections: Croma.NonNegInteger,
]
@default %{
__struct__: __MODULE__, # Ugly hack to define instance of struct within the same compilation unit of `defstruct`
n_pools_a: 1,
pool_size_a: 5,
pool_size_j: 2,
ws_max_connections: 100,
}
defun default() :: t, do: @default
defun of_gear(gear_name :: v[GearName.t]) :: t do
Map.get(all(), gear_name, @default)
end
defun all() :: %{GearName.t => t} do
ConfigCache.Core.read()
|> Map.get(:gears, %{})
|> MapUtil.map_values(fn {_, map} ->
Map.merge(@default, Map.get(map, :executor_pool, %{}))
end)
end
end