add src files decompiled via jad
[rsa2client.git] / src / mcsClient / MessageReader.java
diff --git a/src/mcsClient/MessageReader.java b/src/mcsClient/MessageReader.java
new file mode 100644 (file)
index 0000000..b1846aa
--- /dev/null
@@ -0,0 +1,225 @@
+// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
+// Jad home page: http://www.kpdus.com/jad.html
+// Decompiler options: packimports(3) fieldsfirst nonlb space 
+
+package mcsClient;
+
+import java.io.DataInputStream;
+import java.net.*;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+
+// Referenced classes of package mcsClient:
+//            McsTcpConnection, LockingKeyStateManager, McsVersion
+
+public class MessageReader
+    implements Runnable {
+
+    private DataInputStream socketInput;
+    private int localPort;
+    private InetAddress localAddress;
+    private McsVersion mcsVersion;
+    private LockingKeyStateManager lockingKeyStateManager;
+    private DatagramSocket dgSocket;
+    private boolean firstIdleTime;
+    private int idleTimer1;
+    private int savedIdleTimer1;
+    private int roundTripTime;
+    private static Logger logger = Logger.getAnonymousLogger();
+
+    public MessageReader(McsTcpConnection mcstcpconnection, McsVersion mcsversion, LockingKeyStateManager lockingkeystatemanager) {
+        firstIdleTime = true;
+        idleTimer1 = 0;
+        socketInput = mcstcpconnection.getSocketInput();
+        localPort = mcstcpconnection.getLocalPort();
+        localAddress = mcstcpconnection.getLocalAddress();
+        mcsVersion = mcsversion;
+        lockingKeyStateManager = lockingkeystatemanager;
+        logger.setLevel(Level.WARNING);
+        String s = System.getProperty("mcs.debug");
+        if (s != null && s.equalsIgnoreCase("true"))
+            logger.setLevel(Level.ALL);
+        try {
+            dgSocket = new DatagramSocket(0, localAddress);
+        }
+        catch (Exception exception) {
+            logger.warning(exception.toString());
+        }
+    }
+
+    private void cleanupThread() {
+        if (dgSocket != null) {
+            dgSocket.disconnect();
+            dgSocket.close();
+        }
+        dgSocket = null;
+        socketInput = null;
+    }
+
+    private void process() {
+        boolean flag = false;
+        boolean flag1 = false;
+        boolean flag2 = false;
+        boolean flag3 = false;
+        boolean flag4 = false;
+        boolean flag5 = false;
+        Object obj = null;
+        Thread thread = Thread.currentThread();
+        do {
+            Thread _tmp = thread;
+            if (!Thread.interrupted()) {
+                int i;
+                int j;
+                try {
+                    i = socketInput.readInt();
+                    j = socketInput.readInt();
+                }
+                catch (Exception exception) {
+                    logger.info("Message Reader - Socket closed");
+                    return;
+                }
+                if (i > 1458) {
+                    logger.warning("Message Reader - invalid message length = " + i + ", command = " + j);
+                    JOptionPane.showMessageDialog(new JFrame(), "Invalid message data", "Remote Console Data Communication Error", 0);
+                    return;
+                }
+                Thread _tmp1 = thread;
+                if (Thread.interrupted()) {
+                    logger.info("MessageReader interrupted.  Exiting.");
+                    return;
+                }
+                switch (j & 0x3f) {
+                case 2: // '\002'
+                case 3: // '\003'
+                case 4: // '\004'
+                case 6: // '\006'
+                case 23: // '\027'
+                case 25: // '\031'
+                    byte abyte0[] = new byte[1458];
+                    abyte0[2] = (byte)(i >> 8);
+                    abyte0[3] = (byte)i;
+                    abyte0[7] = (byte)j;
+                    DatagramPacket datagrampacket;
+                    try {
+                        if (i > 8)
+                            socketInput.readFully(abyte0, 8, i - 8);
+                        datagrampacket = new DatagramPacket(abyte0, i, dgSocket.getLocalAddress(), localPort);
+                    }
+                    catch (Exception exception1) {
+                        logger.severe("Message Reader - error reading video datagram - " + exception1 + ", length = " + i);
+                        JOptionPane.showMessageDialog(new JFrame(), "Error reading video data.  Exit and start again.", "Remote Console Data Communication Error", 0);
+                        return;
+                    }
+                    try {
+                        dgSocket.send(datagrampacket);
+                        break;
+                    }
+                    catch (Exception exception2) {
+                        exception2.printStackTrace();
+                        logger.severe("Message Reader - error sending video datagram - " + exception2);
+                        JOptionPane.showMessageDialog(new JFrame(), "Error sending video data.  Exit and start again.", "Remote Console Data Communication Error", 0);
+                        return;
+                    }
+
+                case 9: // '\t'
+                    try {
+                        int k = socketInput.readInt();
+                        logger.info("Message Reader got keyboard state " + Integer.toHexString(k & 0xff));
+                        lockingKeyStateManager.setTargetKeyState(k);
+                        break;
+                    }
+                    catch (Exception exception3) {
+                        logger.severe("Message Reader - error seting key state - " + exception3);
+                    }
+                    JOptionPane.showMessageDialog(new JFrame(), "Error setting key states.  Exit and start again.", "Remote Console Data Communication Error", 0);
+                    return;
+
+                case 16: // '\020'
+                    try {
+                        idleTimer1 = socketInput.readInt();
+                    }
+                    catch (Exception exception4) {
+                        logger.severe("Message Reader - error reading idle time - " + exception4);
+                        JOptionPane.showMessageDialog(new JFrame(), "Error idle time data.  Exit and start again.", "Remote Console Data Communication Error", 0);
+                        return;
+                    }
+                    if (!firstIdleTime)
+                        logger.info("Idle Time1 (%): " + ((idleTimer1 - savedIdleTimer1) * 1000) / 0x16052);
+                    else
+                        firstIdleTime = false;
+                    savedIdleTimer1 = idleTimer1;
+                    break;
+
+                case 12: // '\f'
+                    int l;
+                    try {
+                        l = socketInput.readInt();
+                    }
+                    catch (Exception exception5) {
+                        logger.severe("Message Reader - error reading keepalive - " + exception5);
+                        JOptionPane.showMessageDialog(new JFrame(), "Error reading keep-alive message.  Exit and start again.", "Remote Console Data Communication Error", 0);
+                        return;
+                    }
+                    roundTripTime = (int)System.currentTimeMillis() - l;
+                    logger.info("Round trip time (ms) = " + roundTripTime);
+                    break;
+
+                case 13: // '\r'
+                    try {
+                        mcsVersion.setServerMajorRev(socketInput.readInt());
+                        mcsVersion.setServerMinorRev(socketInput.readInt());
+                        break;
+                    }
+                    catch (Exception exception6) {
+                        logger.severe("Message Reader - error reading server version - " + exception6);
+                    }
+                    JOptionPane.showMessageDialog(new JFrame(), "Error reading application version information.  Exit and start again.", "Remote Console Data Communication Error", 0);
+                    return;
+
+                case 5: // '\005'
+                case 7: // '\007'
+                case 8: // '\b'
+                case 10: // '\n'
+                case 11: // '\013'
+                case 14: // '\016'
+                case 15: // '\017'
+                case 17: // '\021'
+                case 18: // '\022'
+                case 19: // '\023'
+                case 20: // '\024'
+                case 21: // '\025'
+                case 22: // '\026'
+                case 24: // '\030'
+                default:
+                    logger.warning("MessageReader - unexpected message code " + j);
+                    if (i <= 8)
+                        break;
+                    byte abyte1[] = new byte[i - 8];
+                    try {
+                        socketInput.read(abyte1, 0, abyte1.length);
+                        break;
+                    }
+                    catch (Exception exception7) {
+                        logger.severe("Message Reader - error reading socket - " + exception7);
+                    }
+                    JOptionPane.showMessageDialog(new JFrame(), "Error reading data from server.  Exit and start again.", "Remote Console Data Communication Error", 0);
+                    return;
+                }
+            } else {
+                return;
+            }
+        } while (true);
+    }
+
+    public void run() {
+        process();
+        cleanupThread();
+    }
+
+    protected void finalize() throws Throwable {
+        cleanupThread();
+    }
+
+}