aboutsummaryrefslogtreecommitdiff
path: root/erlbal.erl
diff options
context:
space:
mode:
Diffstat (limited to 'erlbal.erl')
-rw-r--r--erlbal.erl21
1 files changed, 13 insertions, 8 deletions
diff --git a/erlbal.erl b/erlbal.erl
index 6dfefad..e24dd26 100644
--- a/erlbal.erl
+++ b/erlbal.erl
@@ -1,10 +1,18 @@
-module(erlbal).
--export([make_request/2, start_bal/1, kill_bal/1, start_server/2]).
+-export([make_request/2, start_bal/0, stop_bal/1, start_server/2, stop_server/2, list_servers/1]).
start_server(Balancer, Fun) ->
PID = spawn(fun() -> server_loop(Balancer, Fun) end),
Balancer ! {add_node, PID}.
+stop_server(Balancer, PID) ->
+ Balancer ! {del_node, PID},
+ PID ! die.
+
+list_servers(Balancer) ->
+ Balancer ! {list_nodes, self()},
+ receive Nodes -> Nodes end.
+
server_loop(Balancer, Fun) ->
receive
{request, From, ARGS} ->
@@ -15,10 +23,10 @@ server_loop(Balancer, Fun) ->
ok
end.
-start_bal(Name) ->
- register(Name, spawn(fun() -> bal_loop([], 1) end)).
+start_bal() ->
+ spawn(fun() -> bal_loop([], 1) end).
-kill_bal(Balancer) ->
+stop_bal(Balancer) ->
Balancer ! die,
unregister(Balancer).
@@ -52,7 +60,4 @@ bal_loop(Serverlist, Nextserver) ->
make_request(Balancer, ARGS) ->
Balancer ! {request, self(), ARGS},
- receive
- Ret ->
- Ret
- end.
+ receive Ret -> Ret end.