static void Main(string[] args) { Console.WriteLine("Successor Starts!"); //This Process runs after Delta Console.WriteLine("Please enter IP address for this node."); var successorNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Prefix."); var prefixNodeIP = Console.ReadLine(); var successorNodeAddr = new TCPIPNodeAddress(successorNodeIP, 3000); Node.getInstance().init(successorNodeAddr); var delta2sucessor = NetChannel.net2one(); var prefixNodeAddr = new TCPIPNodeAddress(prefixNodeIP, 3000); var successor2prefix = NetChannel.one2net(prefixNodeAddr, 51); //channel number 50 is already taken for delta2prefix Console.WriteLine("successor2prefix location = " + successor2prefix.getLocation().ToString()); //write to prefix successor is running so it can notify delta about it successor2prefix.write(0); Console.WriteLine("Network is good to run. Please refer to Consume process window"); new CSPParallel( new IamCSProcess[] { new Successor(delta2sucessor, successor2prefix) } ).run(); }
static void Main(string[] args) { Console.WriteLine("Delta Starts!"); //This process starts after Prefix Console.WriteLine("Please enter IP address for this node."); var deltaNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Prefix."); var prefixNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Consume."); var consumeNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Successor."); var successorNodeIP = Console.ReadLine(); var deltaNodeAddr = new TCPIPNodeAddress(deltaNodeIP, 3000); Node.getInstance().init(deltaNodeAddr); var prefix2delta = NetChannel.net2one(); //we need to notify prefix that delta exists before it can connect to it var prefixNodeAddr = new TCPIPNodeAddress(prefixNodeIP, 3000); var delta2prefix = NetChannel.one2net(prefixNodeAddr, 50); delta2prefix.write(0); //notify prefix delta is ready var consumeNodeAddr = new TCPIPNodeAddress(consumeNodeIP, 3300); var delta2consume = NetChannel.one2net(consumeNodeAddr, 50); //first write to the consume to make sure network works delta2consume.write(0); //Please start successor process now Console.WriteLine("Please start successor process now"); prefix2delta.read(); //when the signal from prefix comes back it means successor is already running var successorNodeAddr = new TCPIPNodeAddress(successorNodeIP, 3000); var delta2successor = NetChannel.one2net(successorNodeAddr, 50); Console.WriteLine("delta2consume location = " + delta2consume.getLocation().ToString()); Console.WriteLine("delta2successor location = " + delta2successor.getLocation().ToString()); Console.WriteLine("\nNetwork is good to run. Please refer to Consume process window"); new CSPParallel( new IamCSProcess[] { new Delta2(prefix2delta, delta2consume, delta2successor) } ).run(); }
static void Main(string[] args) { Console.WriteLine("Consume started!"); Console.WriteLine("Please enter IP address for this node."); var consumeNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Numbers."); var numbersNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Prefix."); var prefixNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Delta."); var deltaNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Successor."); var successorNodeIP = Console.ReadLine(); var consumeNodeAddr = new TCPIPNodeAddress(consumeNodeIP, 3300); Node.getInstance().init(consumeNodeAddr); var network2Consume = NetChannel.net2one(); Console.WriteLine("network2consume location = " + network2Consume.getLocation().ToString()); Console.WriteLine("Waiting for read from the numbers... Please start other processes nowi"); network2Consume.read(); Console.WriteLine("Read signal from numbers"); //====================== Running the test int nLoops = 10000; Console.WriteLine(nLoops + " loops ...\n"); new CSPParallel( new IamCSProcess[] { new Consume(nLoops, network2Consume) } ).run(); Console.ReadKey(); }
static void Main(string[] args) { Console.WriteLine("Please enter IP address for this Node."); var chefNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Canteen."); var canteenNodeIP = Console.ReadLine(); var chefNodeAddr = new TCPIPNodeAddress(chefNodeIP, 3003); Node.getInstance().init(chefNodeAddr); var canteenAddress = new TCPIPNodeAddress(canteenNodeIP, 3000); var cooked = NetChannel.one2net(canteenAddress, 50); Console.WriteLine("cooked location = " + cooked.getLocation()); IamCSProcess[] processList = { new Kitchen(supply: cooked) }; new CSPParallel(processList).run(); }
static void Main(string[] args) { Console.WriteLine("Prefix Starts!"); //It is the first process to run after the Consume Console.WriteLine("Please enter IP address for this node."); var prefixNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Delta."); var deltaNodeIP = Console.ReadLine(); var prefixNodeAddr = new TCPIPNodeAddress(prefixNodeIP, 3000); Node.getInstance().init(prefixNodeAddr); var delta2prefix = NetChannel.net2one(); var successor2prefix = NetChannel.net2one(); Console.WriteLine("Please start Delta process now"); delta2prefix.read(); //wait for the read from the delta to know that it exists Console.WriteLine("Read message from Delta"); var deltaNodeAddr = new TCPIPNodeAddress(deltaNodeIP, 3000); var prefix2delta = NetChannel.one2net(deltaNodeAddr, 50); Console.WriteLine("prefix2delta location = " + prefix2delta.getLocation().ToString()); successor2prefix.read(); //waiting for read from successor to now it is running prefix2delta.write(0); //notify delta sucessor is running Console.WriteLine("\nNetwork is good to run. Please refer to Consume process window"); new CSPParallel( new IamCSProcess[] { new Prefix(0, successor2prefix, prefix2delta) } ).run(); }
static void Main(string[] args) { Console.WriteLine("Numbers started!"); Console.WriteLine("Please enter IP address for this node."); var numbersNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Consume."); var consumeNodeIP = Console.ReadLine(); var numbersNodeAddr = new TCPIPNodeAddress(numbersNodeIP, 3000); Node.getInstance().init(numbersNodeAddr); var consumeNodeAddr = new TCPIPNodeAddress(consumeNodeIP, 3300); var numbers2network = NetChannel.one2net(consumeNodeAddr, 50); Console.WriteLine("network2consume location = " + numbers2network.getLocation().ToString()); Console.WriteLine("Sending signal to Consume..."); numbers2network.write(0); // signal from the numbers; Console.WriteLine("Sent signal to Consume"); //====================== Running the test One2OneChannel P2D = Channel.one2one(); One2OneChannel D2S = Channel.one2one(); One2OneChannel S2P = Channel.one2one(); new CSPParallel( new IamCSProcess[] { new Prefix(0, S2P.In(), P2D.Out()), new Delta2(P2D.In(), numbers2network, D2S.Out()), new Successor(D2S.In(), S2P.Out()), } ).run(); }
static void Main(string[] args) { Console.WriteLine("Please enter IP address for this node."); var canteenNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Philosophers."); var philosopherNodeIP = Console.ReadLine(); var canteenNodeAddr = new TCPIPNodeAddress(canteenNodeIP, 3000); Node.getInstance().init(canteenNodeAddr); var cooked = NetChannel.net2one(); Console.WriteLine("cooked location = " + cooked.getLocation().ToString()); var getOne = NetChannel.net2one(); Console.WriteLine("getOne location = " + getOne.getLocation().ToString()); Console.WriteLine("Waiting for read from the philosophers..."); getOne.read(); // signal from the philosophers; Console.WriteLine("Read signal from philosophers.\nCreating philosophers channel."); var philosopherAddr = new TCPIPNodeAddress(philosopherNodeIP, 3002); Console.WriteLine("Philosophers Address in canteen created."); var gotOne = NetChannel.one2net(philosopherAddr, 50); Console.WriteLine("Philosophers channel in canteen created."); IamCSProcess[] processList = { new ClockedQueuingServery(service: getOne, deliver: gotOne, supply: cooked) }; new CSPParallel(processList).run(); }
static void Main(string[] args) { Console.WriteLine("Please enter IP address for this Node."); var philosopherNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Canteen."); var canteenNodeIP = Console.ReadLine(); var philosopherNodeAddr = new TCPIPNodeAddress(philosopherNodeIP, 3002); Node.getInstance().init(philosopherNodeAddr); var gotOne = NetChannel.net2any(); Console.WriteLine("gotOne location = " + gotOne.getLocation().ToString()); var canteenAddress = new TCPIPNodeAddress(canteenNodeIP, 3000); var getOne = NetChannel.any2net(canteenAddress, 51); Console.WriteLine("getOne location = " + getOne.getLocation().ToString()); getOne.write(0); Console.WriteLine("Wrote signal to the canteen"); List <Philosopher> philosophersList = new List <Philosopher>(); for (int i = 0; i < 4; i++) { philosophersList.Add(new Philosopher(philosopherId: i, service: getOne, deliver: gotOne)); } IamCSProcess[] network = philosophersList.ToArray(); new CSPParallel(network).run(); }
static void Main(string[] args) { Console.WriteLine("Run Writers started."); int nChannels = 1; Console.WriteLine("Please enter number of writers per channel"); int nWritersPerChannel = Int32.Parse(Console.ReadLine()); int nMessages = 2; Console.WriteLine("Please enter writer ID"); int writerID = Int32.Parse(Console.ReadLine()); Console.WriteLine("Please enter IP address for this node."); var writersChannelNodeIP = Console.ReadLine(); Console.WriteLine("Please enter IP address for Reader."); var readerNodeIP = Console.ReadLine(); var readerNodeAddr = new TCPIPNodeAddress(readerNodeIP, 3300); var fromReader = NetChannel.net2one(); var writersChannelNodesAddresses = new TCPIPNodeAddress(writersChannelNodeIP, 3300); Node.getInstance().init(writersChannelNodesAddresses); var readersChannelNumberForThisWriter = Int32.Parse("5" + (writerID - 1)); var writers2network = NetChannel.any2net(readerNodeAddr, readersChannelNumberForThisWriter); Console.WriteLine("writers2network location = " + writers2network.getLocation().ToString()); Console.WriteLine("Informing reader that Writer" + writerID + " is ready and sending its IP"); //writers2network.write(GetLocalIPAddress.ConvertLocalIPAddressToString()); //use while all nodes are on different machines writers2network.write(writersChannelNodeIP); //use for local loopback addresses CSTimer timer = new CSTimer(); timer.sleep(2000); Console.WriteLine("Waiting for the signal from Reader..."); fromReader.read(); Console.WriteLine("Read signal from Reader"); //====================== Running the test StressedWriterPerformance[] writers = new StressedWriterPerformance[nChannels * nWritersPerChannel]; for (int channel = 0; channel < nChannels; channel++) { for (int i = 0; i < nWritersPerChannel; i++) { writers[(channel * nWritersPerChannel) + i] = new StressedWriterPerformance(writers2network, channel, i, writerID); writerID++; } } for (int i = 0; i < 100; i++) { new CSPParallel( new IamCSProcess[] { new CSPParallel(writers), } ).run(); } Console.WriteLine("Finished all"); }
static void Main(string[] args) { Console.WriteLine("Run Reader started"); Console.WriteLine("Please enter number of writers to be created"); int nChannels = Int32.Parse(Console.ReadLine()); Console.WriteLine("Please enter number of writers per channel"); int nWritersPerChannel = Int32.Parse(Console.ReadLine()); int nMessages = 2; Console.WriteLine("Please enter IP address for the reader."); var readerNodeIP = Console.ReadLine(); var readerNodeAddr = new TCPIPNodeAddress(readerNodeIP, 3300); Node.getInstance().init(readerNodeAddr); NetAltingChannelInput[] network2Reader = new NetAltingChannelInput[nChannels]; for (int i = 0; i < nChannels; i++) { network2Reader[i] = NetChannel.net2one(); Console.WriteLine("network2Reader location = " + network2Reader[i].getLocation().ToString()); } string[] writersNodesIPs = new string[nChannels]; Console.WriteLine("Wait for writers to confirm they are ready and send their IPs"); for (int i = 0; i < nChannels; i++) { writersNodesIPs[i] = (string)network2Reader[i].read(); } NetChannelOutput[] reader2allWriters = new NetChannelOutput[nChannels]; for (int i = 0; i < writersNodesIPs.Length; i++) { var writersChannelNodeAddress = new TCPIPNodeAddress(writersNodesIPs[i], 3300); reader2allWriters[i] = NetChannel.one2net(writersChannelNodeAddress, 50); //It's going to be always first read channel in the writer } Console.WriteLine("Writing to channels to notify them they are ready to start"); for (int i = 0; i < nChannels; i++) { reader2allWriters[i].write(0); } Console.WriteLine("Sent signal to Writers"); //====================== Running the test for (int i = 0; i < 100; i++) { new CSPParallel( new IamCSProcess[] { new NetworkedStressedReaderPerformance(network2Reader, nMessages, nChannels, nWritersPerChannel) } ).run(); } Console.WriteLine("Finished all"); Console.ReadKey(); }