18 package network.httppush.twinprimes;
20 import java.math.BigInteger;
26 import static ca.uqac.lif.cep.Connector.INPUT;
27 import static ca.uqac.lif.cep.Connector.LEFT;
28 import static ca.uqac.lif.cep.Connector.RIGHT;
29 import static ca.uqac.lif.cep.Connector.OUTPUT;
30 import ca.uqac.lif.cep.Connector;
31 import ca.uqac.lif.cep.ProcessorException;
32 import ca.uqac.lif.cep.UtilityMethods;
33 import ca.uqac.lif.cep.functions.CumulativeFunction;
34 import ca.uqac.lif.cep.functions.ApplyFunction;
35 import ca.uqac.lif.cep.functions.Cumulate;
36 import ca.uqac.lif.cep.http.HttpUpstreamGateway;
37 import ca.uqac.lif.cep.io.Print;
38 import ca.uqac.lif.cep.tmf.Filter;
39 import ca.uqac.lif.cep.tmf.Fork;
40 import ca.uqac.lif.cep.tmf.Pump;
41 import ca.uqac.lif.cep.tmf.QueueSource;
49 public static void main(String[] args)
throws ProcessorException
54 String push_url =
"http://localhost:12312/bigprime";
58 QueueSource source =
new QueueSource().addEvent(
new BigInteger(
"2"));
61 Pump pump =
new Pump(500);
62 Connector.connect(source, pump);
68 Cumulate counter =
new Cumulate(
69 new CumulativeFunction<BigInteger>(BigIntegerAdd.instance));
70 Connector.connect(pump, counter);
73 Fork fork1 =
new Fork(2);
74 Connector.connect(counter, fork1);
77 ApplyFunction prime_check =
new ApplyFunction(IsPrime.instance);
78 Connector.connect(fork1, LEFT, prime_check, INPUT);
83 Filter filter =
new Filter();
84 Connector.connect(fork1, RIGHT, filter, LEFT);
85 Connector.connect(prime_check, OUTPUT, filter, RIGHT);
89 Fork fork2 =
new Fork(2);
90 Connector.connect(filter, fork2);
91 Print print =
new Print();
92 Connector.connect(fork2, LEFT, print, INPUT);
96 ApplyFunction int_to_string =
97 new ApplyFunction(BigIntegerToString.instance);
98 HttpUpstreamGateway up_gateway =
new HttpUpstreamGateway(push_url);
99 Connector.connect(fork2, RIGHT, int_to_string, INPUT);
100 Connector.connect(int_to_string, up_gateway);
105 System.out.println(
"This is Machine A. Press Enter to start pushing numbers to Machine B.");
106 UtilityMethods.readLine();
107 System.out.println(
"Let's go! Pushing prime numbers to " + push_url);
108 System.out.println(
"Press Ctrl+C to stop.");
Send events from one processor to another over a network.
Contains a few utility functions for manipulating Java's BigInteger objects.
Use HTTP gateways in push mode.
Checks if a BigInteger is prime.
The code for Machine A in the twin prime example.
Converts a BigInteger into a string.
Compute twin primes by distributing the computation across two machines over a network.