summaryrefslogtreecommitdiff
path: root/lib/poolparty/pool/worker.ex
diff options
context:
space:
mode:
authorkballou <kballou@devnulllabs.io>2014-10-16 19:22:50 -0600
committerkballou <kballou@devnulllabs.io>2014-10-20 16:28:38 -0600
commitccc7ba834e11b0da450800a8695954baee9c06b7 (patch)
treece9f64744ca8fdeaa184b139eb70364e9c331946 /lib/poolparty/pool/worker.ex
parent226970e89bb4b8b32c2c08c2ef2999a3e8e4abbd (diff)
downloadpoolparty-ccc7ba834e11b0da450800a8695954baee9c06b7.tar.gz
poolparty-ccc7ba834e11b0da450800a8695954baee9c06b7.tar.xz
PoolParty Scheduler, supervisor, and workers
Add PoolParty supervisor, scheduler, pool supervisor, and pool workers
Diffstat (limited to 'lib/poolparty/pool/worker.ex')
-rw-r--r--lib/poolparty/pool/worker.ex22
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