aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Lasseter <nathan.je.lasseter@googlemail.com>2011-01-27 22:35:34 +0000
committerNathan Lasseter <nathan.je.lasseter@googlemail.com>2011-01-27 22:35:34 +0000
commit7dfbde316104d06f8585e86c7fea284ad136a566 (patch)
tree4c3cadf49ce67225227fee03ae811c827b95fff9
parentd3dd0ee7cce770cc7b5089943d043a9b3da0af50 (diff)
Wrote simple readme
-rw-r--r--README19
-rw-r--r--erlbal.erl5
2 files changed, 21 insertions, 3 deletions
diff --git a/README b/README
index e69de29..5b4d3cd 100644
--- a/README
+++ b/README
@@ -0,0 +1,19 @@
+erlbal is an erlang load balancer.
+
+
+start_bal/0 spawns a balancer.
+stop_bal/1 takes a balancer and kills all of its servers and then kills the balancer.
+list_servers/1 takes a balancer and returns a list of the servers it balances over.
+
+start_server/2 takes a balancer and a function and spawns a server to serve the function.
+stop_server/2 takes a balancer and a server PID and stops the server and removes it from the balancer.
+
+make_request/2 takes a balancer and an argument and returns the response from the server.
+
+
+The balancer round robins requests between erlang processes.
+When it receives a request, it forwards it on to the next server in the round robin.
+The server then runs the function with the argument passed to it and returns a response to the balancer.
+The balancer forwards the response back to the requestor.
+
+The function arg could be anything, so you can pass multiple args in a tuple or list, etc.
diff --git a/erlbal.erl b/erlbal.erl
index e24dd26..decfc42 100644
--- a/erlbal.erl
+++ b/erlbal.erl
@@ -27,8 +27,7 @@ start_bal() ->
spawn(fun() -> bal_loop([], 1) end).
stop_bal(Balancer) ->
- Balancer ! die,
- unregister(Balancer).
+ Balancer ! die.
bal_loop(Serverlist, Nextserver) ->
receive
@@ -48,7 +47,7 @@ bal_loop(Serverlist, Nextserver) ->
NS > SLL ->
bal_loop(Serverlist, 1);
true ->
- bal_loop(Serverlist, Nextserver+1)
+ bal_loop(Serverlist, NS)
end;
{response, To, Ret} ->
To ! Ret,