CS 843 - Distributed Computing Systems - Program 3 - Name:_____________ Assgined: Monday, April 9, 2003 Due with bonus: Wednesday, April 30, 2003 Due: Monday, May 5, 2003 Revise: Tuesday, April 29 (Bonous Points Information) (100 points) o Put your name and add some necessary comments into these code when necessary. These are a part of grading in this assignment. o Write documents describing the programs you create including: (1) Software installation guide (README, makefile) (2) Protocol specifications (3) Software user guide (4) Experimental results and analysis o Use the handin system to submit all code and documents electronically. The submission ID is 3. o The following Grading policies are usually applied: Programs the program runs correctly 55% inline comments 10% readability of the program 5% common error checking 10% Design documents quality of design 10% readability of document 10% o Bonus Points (20 points) Programs are written in both Java and C++. o The maximum total bonus points incluing the early submission is 25 points. 1. Write an online "voting" system using CORBA. In this voting system, a CORBA server is used to accept requests from at least three different CORBA clients. CORBA server should be able to handle multiple clients at one time. A CORBA IDL file could be specified in the following way (For your implementation, you can specify your IDL file.): module VoteApp { struct name { string first_name; string last_name; }; typedef sequence strings; typedef sequence names; interface Vote { /* * login - pass the login name/password pair and return a list * of the election sessions. Only authorized persons are * allowed to log into the voting system. */ strings login (in strings log_pass); /* * list - pass the session number and return a list of * candidates in this session. Each session is * numbered so voters can select a session by its number. */ names list (in unsigned short number); /* * nominate - nominate a candidate and return the designated * number of the candidate in this session. */ unsigned short nominate (in name candidate); /* * withdraw - withdraw a candidate and return the total * candidates in this session. */ unsigned short withdraw (in unsigned short number); /* * vote - cast the vote (the designated number of the candidate) * and return the voting result if the result is available. */ string vote (in unsigned short number); }; }; Intialially, a file (files) including the voter/password list, voting sessions, and their vaild duration is (are) read by the server. There should the deadline for nomination and voting in the file (files). The client is used to log into the system, select the election session, nominate/withdraw the candiate, list the candidate, cast the vote and show the result. In client, input of "q" or "quit" should cause the client to terminate. Possible files: voters jleno:Jay Leno:abc123 jdoe:Jane Doe:123abc . . session President:03/03/03, 03/04/03 Senator:03/03/03, 03/04/03 . . Note: Each voter can only cast one vote.