Enchancing the tempo compiler to support java-sockets/TCP -based communication
AuthorPloutarchou, Christos C.
PublisherΠανεπιστήμιο Κύπρου, Σχολή Θετικών και Εφαρμοσμένων Επιστημών / University of Cyprus, Faculty of Pure and Applied Sciences
Place of publicationΚύπρος
Google Scholar check
MetadataShow full item record
The term automated implementation of distributed algorithms refers to the process during which an algorithm written in Input/Output Automata (IOA) and/or Timed IOA is automatically translated to executable code. The Tempo toolkit provides a connection with the IOA compiler and using particular plug-ins makes the above feasible. In that way, simple algorithms such as LCR Leader Election or even more complex such as Lamport's Paxos algorithm for the consensus problem can be translated very easily from TIOA to Java executable code using the toolkit, with the generated code preserving and keeping the correctness of the specification. The mediator between IOA compiler and Tempo is the Eclipse environment, which under the certain configuration and setup, is used for the desired translation. So far, the generated code by the toolkit was able to run on several workstations that were communicating via the Message Passing Interface. Even though MPI is very powerful, it has certain limitations and restrictions such as that is suitable for WANs, nor it supports dynamic ad hoc connections. Hence, there was an urgency of finding a mechanism to overcome those limitations and enhance the toolkit with more capabilities. In this Thesis we enhance the Tempo toolkit to support Java TCP connections between the communicating nodes. For this purpose, we created several classes imitating the behavior of the .Net package of Java. For certain reasons, which will be mentioned later, classes such as Socket and ServerSocket could not be used directly and hence we ended up creating our own classes.To provide evidence of the correctness of our implementation we firstly tested the model using a very simple algorithm that uses two communicating nodes. The first machine, A, was a Sender and the other one, B, was the Receiver, managing successfully to send a message from A to B and print that in B. Then, we tested our implementation with the well known Paxos algorithm. The algorithm was translated and run correctly suggesting that our implementation does what it should; this is a strong indication that Tempo has been successfully enhanced to support Java/TCP Sockets.