This commit was manufactured by cvs2svn to create tag 'buildscript'.
[IRC.git] /
1 /* Startup object is generated with the initialstate flag set by the
2  *  system to start the computation up */
3
4 // Create ServerSocket
5 task Startup(StartupObject s {initialstate}) {
6         System.printString("TTT Server Starting...\n");
7         ServerSocket ss = new ServerSocket(8000);
8         System.printString("Creating ServerSocket\n");
9         Board tttBoard = new Board() {init};
10         taskexit(s {!initialstate}); // Turn off initial state flag
11 }
12
13 //Listen for a request and accept request 
14 task AcceptConnection(ServerSocket ss{SocketPending}) {
15         System.printString("Waiting for connection...\n");
16         tag t=new tag(connect);
17         TTTServerSocket ttts = new TTTServerSocket() {ReceiveRequest}{t};
18         System.printString("Calling accept...\n");
19         ss.accept(t);
20         System.printString("Connected...\n");
21 }
22
23 // Process incoming requests
24 task ProcessRequest(TTTServerSocket ttts{ReceiveRequest}{connect l}, Socket s{IOPending}{connect l}) {
25         System.printString("Request received...");
26         int action = ttts.receive(s);
27         if (action == 1) { // Make move
28                 taskexit(ttts {!ReceiveRequest,MakeMove});
29         }
30         else { // Send Error
31                 taskexit(ttts {!ReceiveRequest,SendError});
32         }
33 }
34
35 task ProcessMove(TTTServerSocket ttts{MakeMove}, Board tttBoard{init}) {
36         System.printString("Processing player's move...");
37         int result = tttBoard.makeMove(ttts.getRow(), ttts.getCol());
38         if (result == 1) { //Move made, send board display
39                 taskexit(ttts {!MakeMove, SendBoard});
40         }
41         else if (result == 2) { //Move made, game over
42                 taskexit(ttts {!MakeMove, SendDone});
43         }
44         else {// Error
45                 taskexit(ttts {!MakeMove, SendError});
46         }
47 }
48
49 task SendBoardDisplay(TTTServerSocket ttts{SendBoard}{connect l}, Board tttBoard{init}, Socket s{}{connect l}) {
50         ttts.sendBoardDisplay(tttBoard, s);
51         taskexit(ttts {/*!SendBoard,*/ ReceiveRequest});
52         
53 }
54
55 task GameOver(TTTServerSocket ttts{SendDone}{connect l}, Board tttBoard{init}, Socket s{}{connect l}) {
56         ttts.sendDone(tttBoard.winner(), s);
57 //      taskexit(ttts {!SendDone},tttBoard{!init});
58
59 }
60
61 task SendErrorMessage(TTTServerSocket ttts{SendError}{connect l}, Board tttBoard{init}, Socket s{}{connect l}) {
62         //System.printString("Error\n");
63         ttts.sendError(s);
64         taskexit(ttts {/*!SendError,*/ ReceiveRequest});
65
66 }