diff options
Diffstat (limited to 'lib/poolparty/pool/worker.ex')
-rw-r--r-- | lib/poolparty/pool/worker.ex | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/poolparty/pool/worker.ex b/lib/poolparty/pool/worker.ex new file mode 100644 index 0000000..c4685f5 --- /dev/null +++ b/lib/poolparty/pool/worker.ex @@ -0,0 +1,22 @@ +defmodule PoolParty.Pool.Worker do + use GenServer + + def start_link(opts \\ []) do + GenServer.start_link(__MODULE__, {}, opts) + end + + def init(_) do + PoolParty.Scheduler.join(self) + {:ok, nil} + end + + def process(pid, function, args) do + GenServer.cast(pid, {:compute, function, args}) + end + + def handle_cast({:compute, function, args}, _) do + PoolParty.Scheduler.ready({:result, function.(args), self}) + {:noreply, nil} + end + +end |