I have following DynamicSupervisor:
defmodule Vampire_supervisor do
use DynamicSupervisor
def start_link() do
DynamicSupervisor.start_link(__MODULE__, :ok)
# Supervisor.start_link(__MODULE__, {limits, low, high})
end
def init(:ok) do
DynamicSupervisor.init(strategy: :one_for_one)
end
def start_worker(super_pid) do
child_spec = {Vampire_finder, []}
DynamicSupervisor.start_child(super_pid, child_spec)
end
end
Vampire_finder is a genserver module as follows:
defmodule Vampire_finder do
use GenServer
## External API
def start_link([]) do
GenServer.start(__MODULE__, [], name: __MODULE__)
end
def cal_vampire({pid, low, high}) do
# GenServer.call(pid, :next_number)
GenServer.cast(pid, {:set_number, low, high})
end
def get_vampire(pid) do
GenServer.call(pid, :next_number)
end
## GenServer Implementation
def handle_call(:next_number, _from, all_vampire_nums) do
#all_vampire_nums = VampireNumbers.get_vampire_nums(low, high)
{:reply, all_vampire_nums, all_vampire_nums}
end
def handle_cast({:set_number, low, high}, _) do
all_vampire_nums = VampireNumbers.get_vampire_nums(low, high)
{:noreply, all_vampire_nums}
end
end
When I am trying to call the supervisor using
{:ok, super_pid} = Vampire_supervisor.start_link()
IO.inspect super_pid
Vampire_supervisor.start_worker(super_pid)
Vampire_supervisor.start_worker(super_pid)
For the second startworker i am getting an error
{:error, {:already_started, #PID<0.230.0>}}
Can someone plz help?