changeset 31:872d9bcbfe56

Before changing the Viewer.
author one
date Sat, 01 Sep 2012 21:23:30 +0900
parents 0c08cdc4b572
children 758d025ee24b
files src/main/java/jp/ac/u_ryukyu/treevnc/AcceptThread.java src/main/java/jp/ac/u_ryukyu/treevnc/client/AcceptThread.java src/main/java/jp/ac/u_ryukyu/treevnc/client/MyRfbProtoClient.java src/main/java/jp/ac/u_ryukyu/treevnc/client/MyVncClient.java src/main/java/jp/ac/u_ryukyu/treevnc/server/AcceptThread.java src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java src/main/java/jp/ac/u_ryukyu/treevnc/server/VncProxyService.java src/main/java/jp/ac/u_ryukyu/treevnc/test/MyRfbProto.java
diffstat 8 files changed, 69 insertions(+), 385 deletions(-) [+]
line wrap: on
line diff
--- /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);
+			}
+		}
+	}
+}
--- 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);
-			}
-		}
-	}
-}
--- 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<LinkedList<ByteBuffer>> multicastqueue = new MulticastQueue<LinkedList<ByteBuffer>>();
 	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<LinkedList<ByteBuffer>> 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<ByteBuffer> 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<ByteBuffer> 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());
--- 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) {
--- 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);
-			}
-		}
-	}
-}
--- 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<LinkedList<ByteBuffer>> multicastqueue = new
 	// MostRecentMultiCast<LinkedList<ByteBuffer>>(10);
 	private MulticastQueue<LinkedList<ByteBuffer>> multicastqueue = new MulticastQueue<LinkedList<ByteBuffer>>();
-	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<LinkedList<ByteBuffer>> 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<ByteBuffer> 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<ByteBuffer> 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<ByteBuffer> bufs) {
 		int len = 0;
 		for (ByteBuffer b : bufs)
--- 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;
--- 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) {
+		
+	}
 }