# HG changeset patch # User one # Date 1346502210 -32400 # Node ID 872d9bcbfe569dfd3c04c2ff23674d2bc5e3bf8b # Parent 0c08cdc4b572beba4c6891783c51b1c67f822584 Before changing the Viewer. diff -r 0c08cdc4b572 -r 872d9bcbfe56 src/main/java/jp/ac/u_ryukyu/treevnc/AcceptThread.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/AcceptThread.java Sat Sep 01 21:23:30 2012 +0900 @@ -0,0 +1,48 @@ +package jp.ac.u_ryukyu.treevnc; +import java.net.Socket; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import jp.ac.u_ryukyu.treevnc.server.MyRfbProtoProxy; +import jp.ac.u_ryukyu.treevnc.test.MyRfbProto; + +import com.glavsoft.transport.Reader; +import com.glavsoft.transport.Writer; + +public class AcceptThread implements Runnable { + MyRfbProto rfb = null; + byte[] imageBytes; + int port; + + public AcceptThread(MyRfbProto _rfb) { + rfb = _rfb; + } + + + public AcceptThread(MyRfbProto _rfb, int p) { + rfb = _rfb; + port = p; + } + + public void changeRfb(MyRfbProto _rfb) { + rfb = _rfb; + } + + public void run() { + rfb.selectPort(port); + + while (true) { + try { + Socket newCli = rfb.accept(); + + OutputStream os = newCli.getOutputStream(); + InputStream is = newCli.getInputStream(); + rfb.newClient(this, newCli, new Writer(os), new Reader(is)); + } catch (IOException e) { + e.printStackTrace(); + System.out.println(e); + } + } + } +} diff -r 0c08cdc4b572 -r 872d9bcbfe56 src/main/java/jp/ac/u_ryukyu/treevnc/client/AcceptThread.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/AcceptThread.java Sat Sep 01 20:33:48 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -package jp.ac.u_ryukyu.treevnc.client; -import java.net.Socket; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -public class AcceptThread implements Runnable { - MyRfbProtoClient rfb = null; - byte[] imageBytes; - int port; - - AcceptThread(MyRfbProtoClient _rfb) { - rfb = _rfb; - } - - - AcceptThread(MyRfbProtoClient _rfb, int p) { - rfb = _rfb; - port = p; - } - - public void changeRfb(MyRfbProtoClient _rfb) { - rfb = _rfb; - } - - public void run() { - rfb.selectPort(port); - - while (true) { - try { - Socket newCli = rfb.accept(); - - OutputStream os = newCli.getOutputStream(); - InputStream is = newCli.getInputStream(); - rfb.newClient(this, newCli, os, is); - } catch (IOException e) { - e.printStackTrace(); - System.out.println(e); - } - } - } -} diff -r 0c08cdc4b572 -r 872d9bcbfe56 src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java Sat Sep 01 20:33:48 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java Sat Sep 01 21:23:30 2012 +0900 @@ -36,10 +36,8 @@ Socket clientSocket, sock; DataInputStream is; OutputStream os; - private ContainerManager containerManager; private ServerSocket servSock; private ProtocolContext context; - private int clients = 0; private MulticastQueue> multicastqueue = new MulticastQueue>(); boolean proxyFlag = false; int serverMajor, serverMinor; @@ -47,6 +45,10 @@ private Inflater inflater = new Inflater(); private Deflater deflater = new Deflater(); + + public MyRfbProtoClient() { + + } public MyRfbProtoClient(Reader reader, String host, String port) { this.reader = reader; @@ -114,6 +116,7 @@ return sock; } + @Override public Socket accept() throws IOException { return servSock.accept(); } @@ -123,6 +126,7 @@ acceptPort = port; } + @Override public void selectPort(int p) { int port = p; while (true) { @@ -139,150 +143,6 @@ System.out.println("accept port = " + port); } - public void newClient(AcceptThread acceptThread, final Socket newCli, - final OutputStream os, final InputStream is) throws IOException { - // createBimgFlag = true; - // rfb.addSockTmp(newCli); - // addSock(newCli); - final int myId = clients; - final MulticastQueue.Client> c = multicastqueue - .newClient(); - final AtomicInteger writerRunning = new AtomicInteger(); - writerRunning.set(1); - /** - * Timeout thread. If a client is suspended, it has top of queue - * indefinitely, which caused memory overflow. After the timeout, we - * poll the queue and discard it. Start long wait if writer is running. - */ - final Runnable timer = new Runnable() { - public void run() { - int count = 0; - for (;;) { - long timeout = 40000 / 8; - try { - synchronized (this) { - int state, flag; - writerRunning.set(0); - wait(timeout); - flag = 0; - while ((state = writerRunning.get()) == 0) { - c.poll(); // discard, should be timeout - count++; - if (flag == 0) { - System.out.println("Discarding " + myId - + " count=" + count); - flag = 1; - } - wait(10); // if this is too short, writer cannot - // take the poll, if this is too - // long, memory will overflow... - } - if (flag == 1) - System.out.println("Resuming " + myId - + " count=" + count); - if (state != 1) { - System.out.println("Client died " + myId); - break; - } - } - } catch (InterruptedException e) { - } - } - } - }; - new Thread(timer).start(); - /** - * discard all incoming from clients - */ - final Runnable reader = new Runnable() { - public void run() { - byte b[] = new byte[4096]; - for (;;) { - try { - int c = is.read(b); - if (c <= 0) - throw new IOException(); - // System.out.println("client read "+c); - } catch (IOException e) { - try { - writerRunning.set(2); - os.close(); - is.close(); - } catch (IOException e1) { - } - return; - } - } - } - }; - /** - * send packets to a client - */ - Runnable sender = new Runnable() { - public void run() { - writerRunning.set(1); - try { - /** - * initial connection of RFB protocol - */ - sendRfbVersion(os); - // readVersionMsg(is); - int rfbMinor = readVersionMsg(is, os); - sendSecurityType(os); - readSecType(is); - sendSecResult(os); - readClientInit(is); - sendInitData(os); - new Thread(reader).start(); // discard incoming packet here - // after. - if (rfbMinor == 855) { - // checkDilay(os); - // send jpeg data of full screen. - // sendFullScreen("jpeg" ,os); - } else { - // send raw data of full screen. - - } - for (;;) { - LinkedList bufs = c.poll(); - int inputIndex = 0; - ByteBuffer header = bufs.get(inputIndex); - if (header == null) - continue; - if (header.get(0) == CheckDelay) { - System.out.println("--------------------"); - // writeToClient(os, bufs, inputIndex); - } - if (header.get(0) == FramebufferUpdate) { - // System.out.println("client "+ myId); - } - writeToClient(os, bufs, inputIndex); - writerRunning.set(1); // yes my client is awaking. - } - } catch (IOException e) { - try { - writerRunning.set(2); - os.close(); - } catch (IOException e1) { - /* if socket closed cliList.remove(newCli); */ - } - } - } - - public void writeToClient(final OutputStream os, - LinkedList bufs, int inputIndex) - throws IOException { - while (inputIndex < bufs.size()) { - ByteBuffer b = bufs.get(inputIndex++); - os.write(b.array(), b.position(), b.limit()); - } - os.flush(); - } - }; - clients++; - new Thread(sender).start(); - - } void sendRfbVersion(OutputStream os) throws IOException { os.write(versionMsg_3_855.getBytes()); diff -r 0c08cdc4b572 -r 872d9bcbfe56 src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java Sat Sep 01 20:33:48 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java Sat Sep 01 21:23:30 2012 +0900 @@ -6,6 +6,8 @@ import javax.swing.SwingUtilities; +import jp.ac.u_ryukyu.treevnc.test.MyRfbProto; + import com.glavsoft.rfb.IChangeSettingsListener; import com.glavsoft.rfb.IRfbSessionListener; @@ -32,6 +34,7 @@ private final ProtocolSettings settings; private final UiSettings uiSettings; private TreeConnectionManager treeConnectionManager; + private MyRfbProto rfb; public MyVncClient() { @@ -39,6 +42,7 @@ settings = ProtocolSettings.getDefaultSettings(); uiSettings = super.uiSettings; treeConnectionManager = new TreeConnectionManager(this, isApplet); + rfb = new MyRfbProtoClient(); } public MyVncClient(Parser parser) { diff -r 0c08cdc4b572 -r 872d9bcbfe56 src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptThread.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptThread.java Sat Sep 01 20:33:48 2012 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -package jp.ac.u_ryukyu.treevnc.server; -import java.net.Socket; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import com.glavsoft.transport.Reader; -import com.glavsoft.transport.Writer; - -public class AcceptThread implements Runnable { - MyRfbProtoProxy rfb = null; - byte[] imageBytes; - int port; - - AcceptThread(MyRfbProtoProxy _rfb) { - rfb = _rfb; - } - - - AcceptThread(MyRfbProtoProxy _rfb, int p) { - rfb = _rfb; - port = p; - } - - public void changeRfb(MyRfbProtoProxy _rfb) { - rfb = _rfb; - } - - public void run() { - rfb.selectPort(port); - - while (true) { - try { - Socket newCli = rfb.accept(); - - OutputStream os = newCli.getOutputStream(); - InputStream is = newCli.getInputStream(); - rfb.newClient(this, newCli, new Writer(os), new Reader(is)); - } catch (IOException e) { - e.printStackTrace(); - System.out.println(e); - } - } - } -} diff -r 0c08cdc4b572 -r 872d9bcbfe56 src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java Sat Sep 01 20:33:48 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java Sat Sep 01 21:23:30 2012 +0900 @@ -23,7 +23,6 @@ //import myVncProxy.MulticastQueue.Client; import java.util.concurrent.ExecutorService; -import java.util.concurrent.atomic.AtomicInteger; import java.util.zip.DataFormatException; import java.util.zip.Deflater; import java.util.zip.Inflater; @@ -67,7 +66,6 @@ // private MulticastQueue> multicastqueue = new // MostRecentMultiCast>(10); private MulticastQueue> multicastqueue = new MulticastQueue>(); - private int clients = 0; private Inflater inflater = new Inflater(); private Deflater deflater = new Deflater(); // private Thread requestThread; @@ -350,155 +348,6 @@ // here. } - public void newClient(AcceptThread acceptThread, final Socket newCli, - final Writer os, final Reader is) throws IOException { - // createBimgFlag = true; - // rfb.addSockTmp(newCli); - // addSock(newCli); - final int myId = clients; - final MulticastQueue.Client> c = multicastqueue.newClient(); - final AtomicInteger writerRunning = new AtomicInteger(); - writerRunning.set(1); - /** - * Timeout thread. If a client is suspended, it has top of queue - * indefinitely, which caused memory overflow. After the timeout, we - * poll the queue and discard it. Start long wait if writer is running. - */ - final Runnable timer = new Runnable() { - public void run() { - int count = 0; - for (;;) { - long timeout = 50000 / 8; - try { - synchronized (this) { - int state, flag; - writerRunning.set(0); - wait(timeout); - flag = 0; - while ((state = writerRunning.get()) == 0) { - c.poll(); // discard, should be timeout - count++; - if (flag == 0) { - System.out.println("Discarding " + myId - + " count=" + count); - flag = 1; - } - wait(10); // if this is too short, writer cannot - // take the poll, if this is too - // long, memory will overflow... - } - if (flag == 1) - System.out.println("Resuming " + myId - + " count=" + count); - if (state != 1) { - System.out.println("Client died " + myId); - break; - } - } - } catch (InterruptedException e) { - } - } - } - }; - new Thread(timer).start(); - /** - * discard all incoming from clients - */ - final Runnable reader = new Runnable() { - public void run() { - byte b[] = new byte[4096]; - for (;;) { - try { - int c = is.readByte(b); - if (c <= 0) - throw new IOException(); - // System.out.println("client read "+c); - } catch (IOException e) { - try { - writerRunning.set(2); - os.close(); - is.close(); - } catch (IOException e1) { - } catch (TransportException e1) { - e1.printStackTrace(); - } - return; - } catch (TransportException e) { - e.printStackTrace(); - } - } - } - }; - /** - * send packets to a client - */ - Runnable sender = new Runnable() { - public void run() { - writerRunning.set(1); - try { - requestThreadNotify(); - // rThread.checkDelay(); - - /** - * initial connection of RFB protocol - */ - sendRfbVersion(os); - // readVersionMsg(is); - readVersionMsg(is, os); - sendSecurityType(os); - readSecType(is); - sendSecResult(os); - readClientInit(is); - sendInitData(os); - new Thread(reader).start(); // discard incoming packet here - // after. - // writeFramebufferUpdateRequest(0,0, framebufferWidth, - // framebufferHeight, false ); - for (;;) { - LinkedList bufs = c.poll(); - int inputIndex = 0; - ByteBuffer header = bufs.get(inputIndex); - if (header == null) - continue; - else if (header.get(0) == CheckDelay) { - writeToClient(os, bufs, inputIndex); - continue; - } else if (header.get(0) == FramebufferUpdate) { - // System.out.println("client "+ myId); - } - /* - * if(i%20==0){ sendDataCheckDelay(); } i++; - */ - writeToClient(os, bufs, inputIndex); - writerRunning.set(1); // yes my client is awaking. - } - } catch (IOException e) { - try { - writerRunning.set(2); - os.close(); - } catch (IOException e1) { - } - /* if socket closed cliList.remove(newCli); */ - } catch (TransportException e) { - e.printStackTrace(); - } - } - - public void writeToClient(final Writer os, - LinkedList bufs, int inputIndex) - throws TransportException { - while (inputIndex < bufs.size()) { - ByteBuffer b = bufs.get(inputIndex++); - os.write(b.array(), b.position(), b.limit()); - } - os.flush(); - } - }; - clients++; - new Thread(sender).start(); - - } - public void dump32(LinkedList bufs) { int len = 0; for (ByteBuffer b : bufs) diff -r 0c08cdc4b572 -r 872d9bcbfe56 src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java Sat Sep 01 20:33:48 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java Sat Sep 01 21:23:30 2012 +0900 @@ -4,6 +4,8 @@ import java.io.*; import java.util.logging.Logger; +import jp.ac.u_ryukyu.treevnc.AcceptThread; + import com.glavsoft.exceptions.AuthenticationFailedException; diff -r 0c08cdc4b572 -r 872d9bcbfe56 src/main/java/jp/ac/u_ryukyu/treevnc/test/MyRfbProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/test/MyRfbProto.java Sat Sep 01 20:33:48 2012 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/test/MyRfbProto.java Sat Sep 01 21:23:30 2012 +0900 @@ -6,8 +6,8 @@ import java.util.LinkedList; import java.util.concurrent.atomic.AtomicInteger; +import jp.ac.u_ryukyu.treevnc.AcceptThread; import jp.ac.u_ryukyu.treevnc.MulticastQueue; -import jp.ac.u_ryukyu.treevnc.server.AcceptThread; import jp.ac.u_ryukyu.treevnc.server.RequestScreenThread; import com.glavsoft.exceptions.TransportException; @@ -278,4 +278,12 @@ public void readSendData(int dataLen, Reader reader) throws TransportException { } + + public Socket accept() throws IOException { + return null; + } + + public void selectPort(int port) { + + } }