start of new file
[IRC.git] / Robust / src / Benchmarks / TTT / TTTServerSocket.java
1 public class TTTServerSocket extends Socket {
2         // TTTServerSocket flags
3         flag TTTSInitialize;
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()
19         {
20                 byte b1[] = new byte[1024];
21                 read(b1);
22                 request = new String(b1);
23                 System.printString("request: ");
24                 System.printString(request);
25                 if (parseTransaction() == 1) {
26                         return 1;
27                 }
28                 return 0;
29         }
30
31         // Parse request
32         public int parseTransaction(){
33                 int start = request.indexOf('_');
34                 String s = request.subString(start+1);
35 //_move:3:3
36                 if (s.startsWith("move")==true){
37                         //Get row
38                         int i1 = s.indexOf(':');
39                         String rowStr = new String(s.subString(i1+1, i1+2));
40                         row = Integer.parseInt(rowStr);
41
42                         //Get col
43                         String s2 = new String(s.subString(i1+2));
44                         int i2 = s2.indexOf(':');
45                         String colStr = new String(s.subString(i2+1, i2+2));
46                         col = Integer.parseInt(colStr);
47                         return 1;
48                         
49                 }
50                 // Error transaction
51                 return -1;
52         }
53         
54         public int getRow(){
55                 return row;
56         }
57         public int getCol(){
58                 return col;
59         }
60         
61         public void sendBoardDisplay(Board theBoard) {
62                 StringBuffer line1 = new String ("display_");
63
64                 for (int i = 0; i < 3; i++) {
65                         for (int j = 0; j < 3; j++) {
66                                 if (theBoard.board[i][j] == 1)
67                                         line1.append("X");
68                                 else if (theBoard.board[i][j] == 2)
69                                         line1.append("O");
70                                 else
71                                         line1.append("-");
72                         }
73                         line1.append("_");
74                 }
75                 String towrite = new String(line1);
76                 write(towrite.getBytes());
77                 return;
78         }
79         
80         public void sendDone(int winner) {
81                 StringBuffer line1 = new String ("done_");
82                 if (winner == 0)
83                         line1.append("tie");
84                 else if (winner == 1)
85                         line1.append("player");
86                 else
87                         line1.append("computer");
88                         
89                 String towrite = new String(line1);
90                 write(towrite.getBytes());
91                 return;
92         }
93         
94         public void sendError() {
95                 StringBuffer line1 = new String ("error_wrongmove");
96                         
97                 String towrite = new String(line1);
98                 write(towrite.getBytes());
99                 return;
100         }
101 }