// Path: XAppDbgServer/src/com/sonymobile/tools/xappdbg/Packet.java
// public class Packet {
// 
//     private boolean mReadable;
//     private boolean mWritable;
//     private int mLen;
//     private int mChannel;
//     private byte[] mData;
//     private ByteArrayOutputStream mBuff;
//     private DataOutputStream mBuffOS;
//     private DataOutputStream mOS;
//     private DataInputStream mBuffIS;
//     private DataInputStream mIS;
//     private boolean mSent;
// 
//     public Packet(int channel, DataInputStream is, DataOutputStream os) {
//         mReadable = false;
//         mWritable = true;
//         mChannel = channel;
//         mBuff = new ByteArrayOutputStream();
//         mBuffOS = new DataOutputStream(mBuff);
//         mIS = is;
//         mOS = os;
//     }
// 
//     /**
//      * Create an incomming packet
//      */
//     /* package */ Packet(DataInputStream is, DataOutputStream os) throws IOException {
//         mReadable = true;
//         mWritable = false;
//         // Read packet size
//         mLen = is.readInt();
//         // Read channel
//         mChannel = is.readInt();
//         // Read data
//         mData = new byte[mLen];
//         is.readFully(mData);
//         mBuffIS = new DataInputStream(new ByteArrayInputStream(mData));
//         // Store the output stream for reference
//         mOS = os;
//     }
// 
//     /* package */ void send(DataOutputStream os) throws IOException {
//         if (mSent) {
//             throw new RuntimeException("Packet already sent, refusing to send again!");
//         }
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         byte data[] = mBuff.toByteArray();
//         // Write packet size
//         os.writeInt(data.length);
//         // Write channel
//         os.writeInt(mChannel);
//         // Write data
//         os.write(data);
//         // Make sure the data is sent
//         os.flush();
//         mSent = true;
//     }
// 
//     public int getChannel() {
//         return mChannel;
//     }
// 
//     public Packet createReply() {
//         return new Packet(mChannel, null, mOS);
//     }
// 
//     private Packet getReply() throws IOException {
//         return new Packet(mIS, mOS);
//     }
// 
//     public void send() throws IOException {
//         send(mOS);
//     }
// 
//     public Packet sendAndReceive(String cmd) throws IOException {
//         mOS.writeUTF(cmd);
//         send(mOS);
//         return getReply();
//     }
// 
//     public int readInt() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readInt();
//     }
// 
//     public float readFloat() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readFloat();
//     }
// 
//     public boolean readBoolean() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readBoolean();
//     }
// 
//     public String readUTF() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readUTF();
//     }
// 
//     public void writeInt(int value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeInt(value);
//     }
// 
//     public void writeFloat(float value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeFloat(value);
//     }
// 
//     public void writeBoolean(boolean value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeBoolean(value);
//     }
// 
//     public void writeUTF(String value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeUTF(value);
//     }
// 
// }


import com.sonymobile.tools.xappdbg.Packet;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
        mListener.showDebugControls(true);

        mRunning = true;

        // just wait for now
        while (mRunning) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
        }
    }

    @Override
    public void close(boolean error) {
        if (mRunning) {
            try {
                mIs.close();
            } catch (IOException e) { }
            try {
                mOs.close();
            } catch (IOException e) { }
            mRunning = false;
            if (error) {
                mListener.onError("Connection failed");
            }
        }
    }

    @Override
// Path: XAppDbgServer/src/com/sonymobile/tools/xappdbg/Packet.java
// public class Packet {
// 
//     private boolean mReadable;
//     private boolean mWritable;
//     private int mLen;
//     private int mChannel;
//     private byte[] mData;
//     private ByteArrayOutputStream mBuff;
//     private DataOutputStream mBuffOS;
//     private DataOutputStream mOS;
//     private DataInputStream mBuffIS;
//     private DataInputStream mIS;
//     private boolean mSent;
// 
//     public Packet(int channel, DataInputStream is, DataOutputStream os) {
//         mReadable = false;
//         mWritable = true;
//         mChannel = channel;
//         mBuff = new ByteArrayOutputStream();
//         mBuffOS = new DataOutputStream(mBuff);
//         mIS = is;
//         mOS = os;
//     }
// 
//     /**
//      * Create an incomming packet
//      */
//     /* package */ Packet(DataInputStream is, DataOutputStream os) throws IOException {
//         mReadable = true;
//         mWritable = false;
//         // Read packet size
//         mLen = is.readInt();
//         // Read channel
//         mChannel = is.readInt();
//         // Read data
//         mData = new byte[mLen];
//         is.readFully(mData);
//         mBuffIS = new DataInputStream(new ByteArrayInputStream(mData));
//         // Store the output stream for reference
//         mOS = os;
//     }
// 
//     /* package */ void send(DataOutputStream os) throws IOException {
//         if (mSent) {
//             throw new RuntimeException("Packet already sent, refusing to send again!");
//         }
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         byte data[] = mBuff.toByteArray();
//         // Write packet size
//         os.writeInt(data.length);
//         // Write channel
//         os.writeInt(mChannel);
//         // Write data
//         os.write(data);
//         // Make sure the data is sent
//         os.flush();
//         mSent = true;
//     }
// 
//     public int getChannel() {
//         return mChannel;
//     }
// 
//     public Packet createReply() {
//         return new Packet(mChannel, null, mOS);
//     }
// 
//     private Packet getReply() throws IOException {
//         return new Packet(mIS, mOS);
//     }
// 
//     public void send() throws IOException {
//         send(mOS);
//     }
// 
//     public Packet sendAndReceive(String cmd) throws IOException {
//         mOS.writeUTF(cmd);
//         send(mOS);
//         return getReply();
//     }
// 
//     public int readInt() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readInt();
//     }
// 
//     public float readFloat() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readFloat();
//     }
// 
//     public boolean readBoolean() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readBoolean();
//     }
// 
//     public String readUTF() throws IOException {
//         if (!mReadable) {
//             throw new RuntimeException("Cannot read from a write-only packet");
//         }
//         return mBuffIS.readUTF();
//     }
// 
//     public void writeInt(int value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeInt(value);
//     }
// 
//     public void writeFloat(float value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeFloat(value);
//     }
// 
//     public void writeBoolean(boolean value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeBoolean(value);
//     }
// 
//     public void writeUTF(String value) throws IOException {
//         if (!mWritable) {
//             throw new RuntimeException("Cannot send a read-only packet");
//         }
//         mBuffOS.writeUTF(value);
//     }
// 
// }


// Path: XAppDbgClient/src/com/sonymobile/tools/xappdbg/client/ConnectionThread.java
import com.sonymobile.tools.xappdbg.Packet;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

        mListener.showDebugControls(true);

        mRunning = true;

        // just wait for now
        while (mRunning) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
        }
    }

    @Override
    public void close(boolean error) {
        if (mRunning) {
            try {
                mIs.close();
            } catch (IOException e) { }
            try {
                mOs.close();
            } catch (IOException e) { }
            mRunning = false;
            if (error) {
                mListener.onError("Connection failed");
            }
        }
    }

    @Override
    public Packet createPacket(int channel) {