Current section
Files
Jump to
Current section
Files
core/executor_pool/registered_name.ex
# Copyright(c) 2015-2019 ACCESS CO., LTD. All rights reserved.
use Croma
defmodule AntikytheraCore.ExecutorPool.RegisteredName do
alias Antikythera.ExecutorPool.Id, as: EPoolId
@prefix "AntikytheraCore.ExecutorPool"
defun supervisor(epool_id :: v[EPoolId.t]) :: atom do
Module.safe_concat(supervisor_parts(epool_id))
end
defun supervisor_unsafe(epool_id :: v[EPoolId.t]) :: atom do
Module.concat(supervisor_parts(epool_id))
end
defunp supervisor_parts(epool_id :: v[EPoolId.t]) :: [String.t] do
common_parts(epool_id, "Sup")
end
defun action_runner_pool_multi(epool_id :: v[EPoolId.t]) :: atom do
Module.safe_concat(action_runner_pool_multi_parts(epool_id))
end
defun action_runner_pool_multi_unsafe(epool_id :: v[EPoolId.t]) :: atom do
Module.concat(action_runner_pool_multi_parts(epool_id))
end
defunp action_runner_pool_multi_parts(epool_id :: v[EPoolId.t]) :: [String.t] do
common_parts(epool_id, "ActionRunnerPoolMulti")
end
defun async_job_runner_pool(epool_id :: v[EPoolId.t]) :: atom do
Module.safe_concat(async_job_runner_pool_parts(epool_id))
end
defun async_job_runner_pool_unsafe(epool_id :: v[EPoolId.t]) :: atom do
Module.concat(async_job_runner_pool_parts(epool_id))
end
defunp async_job_runner_pool_parts(epool_id :: v[EPoolId.t]) :: [String.t] do
common_parts(epool_id, "AsyncJobRunnerPool")
end
defun async_job_broker(epool_id :: v[EPoolId.t]) :: atom do
Module.safe_concat(async_job_broker_parts(epool_id))
end
defun async_job_broker_unsafe(epool_id :: v[EPoolId.t]) :: atom do
Module.concat(async_job_broker_parts(epool_id))
end
defunp async_job_broker_parts(epool_id :: v[EPoolId.t]) :: [String.t] do
common_parts(epool_id, "AsyncJobBroker")
end
defun websocket_connections_counter(epool_id :: v[EPoolId.t]) :: atom do
Module.safe_concat(websocket_connections_counter_parts(epool_id))
end
defun websocket_connections_counter_unsafe(epool_id :: v[EPoolId.t]) :: atom do
Module.concat(websocket_connections_counter_parts(epool_id))
end
defunp websocket_connections_counter_parts(epool_id :: v[EPoolId.t]) :: [String.t] do
common_parts(epool_id, "WebsocketConnectionsCounter")
end
defun memcache_writer(epool_id :: v[EPoolId.t]) :: atom do
Module.safe_concat(memcache_writer_parts(epool_id))
end
defun memcache_writer_unsafe(epool_id :: v[EPoolId.t]) :: atom do
Module.concat(memcache_writer_parts(epool_id))
end
defunp memcache_writer_parts(epool_id :: v[EPoolId.t]) :: [String.t] do
common_parts(epool_id, "MemcacheWriter")
end
defunp common_parts(epool_id :: EPoolId.t, suffix :: String.t) :: [String.t] do
({:gear , gear_name}, suffix) -> ["#{@prefix}.Gear" , Atom.to_string(gear_name), suffix]
({:tenant, tenant_id}, suffix) -> ["#{@prefix}.Tenant", tenant_id , suffix]
end
# Async job queues are treated a bit differently, as they are cluster-wide.
# `:async_job_queue_name_prefix` is introduced here so that some existing deployments can preserve the historic name of job queues.
# New deployments should be OK with the default value.
@job_queue_prefix Application.get_env(:antikythera, :async_job_queue_name_prefix, @prefix)
defun async_job_queue(epool_id :: v[EPoolId.t]) :: atom do
Module.safe_concat(async_job_queue_parts(epool_id))
end
defun async_job_queue_unsafe(epool_id :: v[EPoolId.t]) :: atom do
Module.concat(async_job_queue_parts(epool_id))
end
defunp async_job_queue_parts(epool_id :: EPoolId.t) :: [String.t] do
{:gear , gear_name} -> ["#{@job_queue_prefix}.Gear" , Atom.to_string(gear_name), "AsyncJobQueue"]
{:tenant, tenant_id} -> ["#{@job_queue_prefix}.Tenant", tenant_id , "AsyncJobQueue"]
end
end