defmodule Memcachir do @moduledoc """ """ use Application use Memcachir.Api def start(_type, _args) do import Supervisor.Spec config_opts = Application.get_all_env(:memcachir) config_opts = Keyword.drop(config_opts, [:included_applications]) children = [ worker(Memcachir.Pool, [config_opts], []) ] Supervisor.start_link( children, strategy: :one_for_one, name: :memxsupervisor ) end def execute_k(_server, command, args, opts \\ []) do {pid, module} = get_pid_and_module module.execute_k(pid, command, args, opts) end def execute_kv(_server, command, args, opts) do {pid, module} = get_pid_and_module module.execute_kv(pid, command, args, opts) end def execute(_server, command, args, opts \\ []) do {pid, module} = get_pid_and_module module.execute(pid, command, args, opts) end def connection_pid(_server \\ nil) do {pid, module} = get_pid_and_module module.connection_pid(pid) end def close(_server \\ nil) do {pid, module} = get_pid_and_module module.close(pid) end defp get_pid_and_module do [{_id, pid, :worker, [mod]}] = Supervisor.which_children(:memxsupervisor) {pid, mod} end end