helpful progress reporting
[IRC.git] / Robust / src / Benchmarks / TTTTag / TTTServerSocket.java
1 public class TTTServerSocket {
2         // TTTServerSocket flags
3         flag ReceiveRequest;
4
5         flag MakeMove;
6         flag SendError;
7         flag SendBoard;
8         flag SendDone;
9         
10         String request;
11         int row, col;
12                 
13         //Constructor
14         public TTTServerSocket(){
15                 System.printString("Constructing TTTServerSocket....\n");
16         }
17
18         public int receive(Socket s)
19         {
20                 byte b1[] = new byte[1024];
21                 s.read(b1);
22                 request = new String(b1);
23                 System.printString("request: ");
24                 System.printString(request);
25                 if (parseTransaction() == 1) {
26                         System.printString(request);
27                         return 1;
28                 }
29                 System.printString("Error receiving...\n");
30                 return 0;
31         }
32
33         // Parse request
34         public int parseTransaction(){
35                 int start = request.indexOf('_');
36                 //System.printString("start parse");
37                 String s = request.subString(start+1);
38                 //System.printString("before checking the string");
39 //_move:3:3
40                 if (s.startsWith("move")==true){
41                         //Get row
42                         int i1 = s.indexOf(':');
43                         String rowStr = new String(s.subString(i1+1, i1+2));
44                         row = Integer.parseInt(rowStr);
45                         
46                         //System.printString("row");
47
48                         //Get col
49                         String s2 = new String(s.subString(i1+2));
50                         int i2 = s2.indexOf(':');
51                         String colStr = new String(s2.subString(i2+1, i2+2));
52                         col = Integer.parseInt(colStr);
53                         return 1;
54                         
55                         
56                         
57                 }
58                 // Error transaction
59                 return -1;
60         }
61         
62         public int getRow(){
63                 return row;
64         }
65         public int getCol(){
66                 return col;
67         }
68         
69         public void sendBoardDisplay(Board theBoard, Socket s) {
70                 StringBuffer line1 = new StringBuffer("\n\n");
71                 
72                 for (int i = 0; i < 3; i++) {
73                         for (int j = 0; j < 3; j++) {
74                                 if (theBoard.board[i][j] == 1)
75                                         line1.append("X");
76                                 else if (theBoard.board[i][j] == 2)
77                                         line1.append("O");
78                                 else
79                                         line1.append("-");
80                         }
81                         line1.append("\n");
82                 }
83                 String towrite = new String(line1);
84                 s.write(towrite.getBytes());
85                 return;
86         }
87         
88         public void sendDone(int winner, Socket s) {
89                 StringBuffer line1 = new StringBuffer ("done_");
90                 if (winner == 0)
91                         line1.append("tie");
92                 else if (winner == 1)
93                         line1.append("player");
94                 else
95                         line1.append("computer");
96                         
97                 String towrite = new String(line1);
98                 s.write(towrite.getBytes());
99                 return;
100         }
101         
102         public void sendError(Socket s) {
103                 StringBuffer line1 = new StringBuffer ("error_wrongmove");
104                         
105                 String towrite = new String(line1);
106                 s.write(towrite.getBytes());
107                 return;
108         }
109 }