From 2db1bbcde1e0e643a85619a1be350225264d3c10 Mon Sep 17 00:00:00 2001 From: Nathan Lasseter Date: Fri, 23 Dec 2011 10:11:12 +0000 Subject: Started work on erlbal_n. Changed names to reflect. --- erlbal.erl | 59 ----------------------------------------------------------- 1 file changed, 59 deletions(-) delete mode 100644 erlbal.erl (limited to 'erlbal.erl') 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. -- cgit v1.2.1