minimal changes to get the code to start up outside an applet environment
[rsa2client.git] / src / mcsClient / MessageReader.java
1 // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
2 // Jad home page: http://www.kpdus.com/jad.html
3 // Decompiler options: packimports(3) fieldsfirst nonlb space 
4
5 package mcsClient;
6
7 import java.io.DataInputStream;
8 import java.net.*;
9 import java.util.logging.Level;
10 import java.util.logging.Logger;
11 import javax.swing.JFrame;
12 import javax.swing.JOptionPane;
13
14 // Referenced classes of package mcsClient:
15 //            McsTcpConnection, LockingKeyStateManager, McsVersion
16
17 public class MessageReader
18     implements Runnable {
19
20     private DataInputStream socketInput;
21     private int localPort;
22     private InetAddress localAddress;
23     private McsVersion mcsVersion;
24     private LockingKeyStateManager lockingKeyStateManager;
25     private DatagramSocket dgSocket;
26     private boolean firstIdleTime;
27     private int idleTimer1;
28     private int savedIdleTimer1;
29     private int roundTripTime;
30     private static Logger logger = Logger.getAnonymousLogger();
31
32     public MessageReader(McsTcpConnection mcstcpconnection, McsVersion mcsversion, LockingKeyStateManager lockingkeystatemanager) {
33         firstIdleTime = true;
34         idleTimer1 = 0;
35         socketInput = mcstcpconnection.getSocketInput();
36         localPort = mcstcpconnection.getLocalPort();
37         localAddress = mcstcpconnection.getLocalAddress();
38         mcsVersion = mcsversion;
39         lockingKeyStateManager = lockingkeystatemanager;
40         logger.setLevel(Level.WARNING);
41         String s = System.getProperty("mcs.debug");
42         if (s != null && s.equalsIgnoreCase("true"))
43             logger.setLevel(Level.ALL);
44         try {
45             dgSocket = new DatagramSocket(0, localAddress);
46         }
47         catch (Exception exception) {
48             logger.warning(exception.toString());
49         }
50     }
51
52     private void cleanupThread() {
53         if (dgSocket != null) {
54             dgSocket.disconnect();
55             dgSocket.close();
56         }
57         dgSocket = null;
58         socketInput = null;
59     }
60
61     private void process() {
62         boolean flag = false;
63         boolean flag1 = false;
64         boolean flag2 = false;
65         boolean flag3 = false;
66         boolean flag4 = false;
67         boolean flag5 = false;
68         Object obj = null;
69         Thread thread = Thread.currentThread();
70         do {
71             Thread _tmp = thread;
72             if (!Thread.interrupted()) {
73                 int i;
74                 int j;
75                 try {
76                     i = socketInput.readInt();
77                     j = socketInput.readInt();
78                 }
79                 catch (Exception exception) {
80                     logger.info("Message Reader - Socket closed");
81                     return;
82                 }
83                 if (i > 1458) {
84                     logger.warning("Message Reader - invalid message length = " + i + ", command = " + j);
85                     JOptionPane.showMessageDialog(new JFrame(), "Invalid message data", "Remote Console Data Communication Error", 0);
86                     return;
87                 }
88                 Thread _tmp1 = thread;
89                 if (Thread.interrupted()) {
90                     logger.info("MessageReader interrupted.  Exiting.");
91                     return;
92                 }
93                 switch (j & 0x3f) {
94                 case 2: // '\002'
95                 case 3: // '\003'
96                 case 4: // '\004'
97                 case 6: // '\006'
98                 case 23: // '\027'
99                 case 25: // '\031'
100                     byte abyte0[] = new byte[1458];
101                     abyte0[2] = (byte)(i >> 8);
102                     abyte0[3] = (byte)i;
103                     abyte0[7] = (byte)j;
104                     DatagramPacket datagrampacket;
105                     try {
106                         if (i > 8)
107                             socketInput.readFully(abyte0, 8, i - 8);
108                         datagrampacket = new DatagramPacket(abyte0, i, dgSocket.getLocalAddress(), localPort);
109                     }
110                     catch (Exception exception1) {
111                         logger.severe("Message Reader - error reading video datagram - " + exception1 + ", length = " + i);
112                         JOptionPane.showMessageDialog(new JFrame(), "Error reading video data.  Exit and start again.", "Remote Console Data Communication Error", 0);
113                         return;
114                     }
115                     try {
116                         dgSocket.send(datagrampacket);
117                         break;
118                     }
119                     catch (Exception exception2) {
120                         exception2.printStackTrace();
121                         logger.severe("Message Reader - error sending video datagram - " + exception2);
122                         JOptionPane.showMessageDialog(new JFrame(), "Error sending video data.  Exit and start again.", "Remote Console Data Communication Error", 0);
123                         return;
124                     }
125
126                 case 9: // '\t'
127                     try {
128                         int k = socketInput.readInt();
129                         logger.info("Message Reader got keyboard state " + Integer.toHexString(k & 0xff));
130                         lockingKeyStateManager.setTargetKeyState(k);
131                         break;
132                     }
133                     catch (Exception exception3) {
134                         logger.severe("Message Reader - error seting key state - " + exception3);
135                     }
136                     JOptionPane.showMessageDialog(new JFrame(), "Error setting key states.  Exit and start again.", "Remote Console Data Communication Error", 0);
137                     return;
138
139                 case 16: // '\020'
140                     try {
141                         idleTimer1 = socketInput.readInt();
142                     }
143                     catch (Exception exception4) {
144                         logger.severe("Message Reader - error reading idle time - " + exception4);
145                         JOptionPane.showMessageDialog(new JFrame(), "Error idle time data.  Exit and start again.", "Remote Console Data Communication Error", 0);
146                         return;
147                     }
148                     if (!firstIdleTime)
149                         logger.info("Idle Time1 (%): " + ((idleTimer1 - savedIdleTimer1) * 1000) / 0x16052);
150                     else
151                         firstIdleTime = false;
152                     savedIdleTimer1 = idleTimer1;
153                     break;
154
155                 case 12: // '\f'
156                     int l;
157                     try {
158                         l = socketInput.readInt();
159                     }
160                     catch (Exception exception5) {
161                         logger.severe("Message Reader - error reading keepalive - " + exception5);
162                         JOptionPane.showMessageDialog(new JFrame(), "Error reading keep-alive message.  Exit and start again.", "Remote Console Data Communication Error", 0);
163                         return;
164                     }
165                     roundTripTime = (int)System.currentTimeMillis() - l;
166                     logger.info("Round trip time (ms) = " + roundTripTime);
167                     break;
168
169                 case 13: // '\r'
170                     try {
171                         mcsVersion.setServerMajorRev(socketInput.readInt());
172                         mcsVersion.setServerMinorRev(socketInput.readInt());
173                         break;
174                     }
175                     catch (Exception exception6) {
176                         logger.severe("Message Reader - error reading server version - " + exception6);
177                     }
178                     JOptionPane.showMessageDialog(new JFrame(), "Error reading application version information.  Exit and start again.", "Remote Console Data Communication Error", 0);
179                     return;
180
181                 case 5: // '\005'
182                 case 7: // '\007'
183                 case 8: // '\b'
184                 case 10: // '\n'
185                 case 11: // '\013'
186                 case 14: // '\016'
187                 case 15: // '\017'
188                 case 17: // '\021'
189                 case 18: // '\022'
190                 case 19: // '\023'
191                 case 20: // '\024'
192                 case 21: // '\025'
193                 case 22: // '\026'
194                 case 24: // '\030'
195                 default:
196                     logger.warning("MessageReader - unexpected message code " + j);
197                     if (i <= 8)
198                         break;
199                     byte abyte1[] = new byte[i - 8];
200                     try {
201                         socketInput.read(abyte1, 0, abyte1.length);
202                         break;
203                     }
204                     catch (Exception exception7) {
205                         logger.severe("Message Reader - error reading socket - " + exception7);
206                     }
207                     JOptionPane.showMessageDialog(new JFrame(), "Error reading data from server.  Exit and start again.", "Remote Console Data Communication Error", 0);
208                     return;
209                 }
210             } else {
211                 return;
212             }
213         } while (true);
214     }
215
216     public void run() {
217         process();
218         cleanupThread();
219     }
220
221     protected void finalize() throws Throwable {
222         cleanupThread();
223     }
224
225 }