aboutsummaryrefslogtreecommitdiff
path: root/erlbal.erl
diff options
context:
space:
mode:
authorNathan Lasseter <nathan.je.lasseter@googlemail.com>2011-12-23 10:11:12 +0000
committerNathan Lasseter <nathan.je.lasseter@googlemail.com>2011-12-23 10:11:12 +0000
commit2db1bbcde1e0e643a85619a1be350225264d3c10 (patch)
treeb37a1a962156aaab7664c2823c791f156a8a63db /erlbal.erl
parentfd028462bcc8b7a4c4d054bfb87d853ef26335f3 (diff)
Started work on erlbal_n. Changed names to reflect.
Diffstat (limited to 'erlbal.erl')
-rw-r--r--erlbal.erl59
1 files changed, 0 insertions, 59 deletions
diff --git a/erlbal.erl b/erlbal.erl
deleted file mode 100644
index a8b8713..0000000
--- a/erlbal.erl
+++ /dev/null
@@ -1,59 +0,0 @@
--module(erlbal).
--export([make_request/2, start_bal/0, stop_bal/1, start_server/4, stop_server/2, list_servers/1]).
-
-start_server(Balancer, Node, Fun, INITSTATE) when is_function(Fun, 2) andalso is_list(INITSTATE) ->
- PID = spawn(Node, fun() -> server_loop(Fun, INITSTATE) 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(Fun, STATE) ->
- receive
- {request, From, ARGS} ->
- {Ret, NEWSTATE} = Fun(ARGS, STATE),
- From ! Ret,
- server_loop(Fun, NEWSTATE);
- die ->
- ok
- end.
-
-start_bal() ->
- spawn(fun() -> bal_loop([], 1) end).
-
-stop_bal(Balancer) ->
- Balancer ! die.
-
-bal_loop(Serverlist, Nextserver) ->
- receive
- {add_node, PID} ->
- bal_loop(Serverlist ++ [PID], Nextserver);
- {del_node, PID} ->
- bal_loop(Serverlist -- [PID], Nextserver);
- {list_nodes, From} ->
- From ! Serverlist,
- bal_loop(Serverlist, Nextserver);
- {request, From, ARGS} ->
- Serv = lists:nth(Nextserver, Serverlist),
- Serv ! {request, From, ARGS},
- NS = Nextserver + 1,
- SLL = length(Serverlist),
- if
- NS > SLL ->
- bal_loop(Serverlist, 1);
- true ->
- bal_loop(Serverlist, NS)
- end;
- die ->
- ok
- end.
-
-
-make_request(Balancer, ARGS) when is_list(ARGS)->
- Balancer ! {request, self(), ARGS},
- receive Ret -> Ret end.