summaryrefslogtreecommitdiff
path: root/src/rexi_server.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rexi_server.erl')
-rw-r--r--src/rexi_server.erl9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/rexi_server.erl b/src/rexi_server.erl
index e06fd86d..6f8b8641 100644
--- a/src/rexi_server.erl
+++ b/src/rexi_server.erl
@@ -22,7 +22,14 @@ handle_call(_Request, _From, St) ->
handle_cast({doit, From, MFA}, #st{workers=Workers} = St) ->
{LocalPid, Ref} = spawn_monitor(?MODULE, init_p, [From, MFA]),
- {noreply, St#st{workers = add_worker({LocalPid, Ref, From}, Workers)}}.
+ {noreply, St#st{workers = add_worker({LocalPid, Ref, From}, Workers)}};
+
+handle_cast({kill, Ref}, #st{workers=Workers} = St) ->
+ case find_worker(Ref, Workers) of
+ {Pid, Ref, _} ->
+ exit(Pid, kill);
+ false -> ok end,
+ {noreply, St#st{workers = remove_worker(Ref, Workers)}}.
handle_info({'DOWN', Ref, process, _, normal}, #st{workers=Workers} = St) ->
{noreply, St#st{workers = remove_worker(Ref, Workers)}};