Browse Source

Added ebb_par module.

Paul Downen 13 years ago
parent
commit
e933b9b719
1 changed files with 29 additions and 0 deletions
  1. 29 0
      src/ebb_par.erl

+ 29 - 0
src/ebb_par.erl

@@ -0,0 +1,29 @@
+-module(ebb_par).
+-export([scatter/2, scatter/1,
+	 parallel/2, parallel/1]).
+
+scatter(Task1, Task2) ->
+    flow_graph:parallel([Task1, Task2]).
+
+scatter([Task]) ->
+    Task;
+scatter(Tasks = [_|_]) ->
+    flow_graph:parallel(Tasks).
+
+parallel(Op1, Op2) ->
+    flow_graph:parallel([Op1, Op2]).
+
+parallel([Op]) ->
+    Op;
+parallel(Ops = [_|_]) ->
+    flow_graph:parallel(Ops).
+
+fanout(Op1, Op2) ->
+    flow_graph:pipe([flow_graph:route(1, [1, 1]),
+		     flow_graph:parallel([Op1, Op2])]).
+
+fanout([Op]) ->
+    Op;
+fanout(Ops = [_|_]) ->
+    flow_graph:pipe([flow_graph:route(1, lists:duplicate(length(Ops), 1)),
+		     flow_graph:parallel(Ops)]).