diff options
author | Nathan Lasseter <nathan.je.lasseter@googlemail.com> | 2011-12-23 10:11:12 +0000 |
---|---|---|
committer | Nathan Lasseter <nathan.je.lasseter@googlemail.com> | 2011-12-23 10:11:12 +0000 |
commit | 2db1bbcde1e0e643a85619a1be350225264d3c10 (patch) | |
tree | b37a1a962156aaab7664c2823c791f156a8a63db /erlbal.erl | |
parent | fd028462bcc8b7a4c4d054bfb87d853ef26335f3 (diff) |
Started work on erlbal_n. Changed names to reflect.
Diffstat (limited to 'erlbal.erl')
-rw-r--r-- | erlbal.erl | 59 |
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. |