changeset 26:73b13bc335c2

add ZRLEESender.java, NullRenderer.java and NullRepaintController.java
author one
date Thu, 30 Aug 2012 16:51:46 +0900
parents 8c15ff5f0f8e
children 85958cba5d15
files src/main/java/com/glavsoft/rfb/encoding/decoder/DecodersContainer.java src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java src/main/java/com/glavsoft/rfb/protocol/NullRenderer.java src/main/java/com/glavsoft/rfb/protocol/NullRepaintController.java src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java src/main/java/com/glavsoft/rfb/protocol/TreeTask.java src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java
diffstat 7 files changed, 119 insertions(+), 65 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/encoding/decoder/DecodersContainer.java	Thu Aug 30 15:14:31 2012 +0900
+++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/DecodersContainer.java	Thu Aug 30 16:51:46 2012 +0900
@@ -83,6 +83,10 @@
 		return decoders.get(type);
 	}
 
+	public void setDecoderByType(EncodingType type, Decoder decoder) {
+		decoders.put(type, decoder);
+	}
+	
 	public void resetDecoders() {
 		for (Decoder decoder : decoders.values()) {
 			if (decoder != null) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java	Thu Aug 30 16:51:46 2012 +0900
@@ -0,0 +1,38 @@
+package com.glavsoft.rfb.encoding.decoder;
+
+import jp.ac.u_ryukyu.treevnc.server.MyRfbProtoProxy;
+
+import com.glavsoft.drawing.Renderer;
+import com.glavsoft.exceptions.TransportException;
+import com.glavsoft.rfb.encoding.EncodingType;
+import com.glavsoft.transport.Reader;
+
+public class ZRLEESender extends Decoder {
+	
+	private MyRfbProtoProxy rfb;
+
+	public ZRLEESender(MyRfbProtoProxy rfb) {
+		this.rfb = rfb;
+	}
+
+	@Override
+	public void decode(Reader reader, Renderer renderer,
+			FramebufferUpdateRectangle rect) throws TransportException {
+		int dataLen = getZrleLength(rect,reader);
+		reader.reset();
+		rfb.readSendData(dataLen, reader);
+	}
+
+	private int getZrleLength(FramebufferUpdateRectangle rect,Reader reader)
+			throws TransportException {
+		int zrleLength = 0;
+		if (rect.getEncodingType() == EncodingType.ZRLE
+				|| rect.getEncodingType() == EncodingType.ZRLEE
+				|| rect.getEncodingType() == EncodingType.ZLIB) {
+			zrleLength = reader.readInt32();
+		}
+		return zrleLength + 20;
+	}
+
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/com/glavsoft/rfb/protocol/NullRenderer.java	Thu Aug 30 16:51:46 2012 +0900
@@ -0,0 +1,15 @@
+package com.glavsoft.rfb.protocol;
+
+import com.glavsoft.drawing.Renderer;
+import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle;
+
+public class NullRenderer extends Renderer {
+
+	@Override
+	public void drawJpegImage(byte[] bytes, int offset, int jpegBufferLength,
+			FramebufferUpdateRectangle rect) {
+		// TODO Auto-generated method stub
+
+	}
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/java/com/glavsoft/rfb/protocol/NullRepaintController.java	Thu Aug 30 16:51:46 2012 +0900
@@ -0,0 +1,48 @@
+package com.glavsoft.rfb.protocol;
+
+import com.glavsoft.core.SettingsChangedEvent;
+import com.glavsoft.drawing.Renderer;
+import com.glavsoft.rfb.IRepaintController;
+import com.glavsoft.rfb.encoding.PixelFormat;
+import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle;
+import com.glavsoft.transport.Reader;
+
+public class NullRepaintController implements IRepaintController {
+
+	@Override
+	public void settingsChanged(SettingsChangedEvent event) {
+
+	}
+
+	@Override
+	public void repaintBitmap(FramebufferUpdateRectangle rect) {
+
+	}
+
+	@Override
+	public void repaintBitmap(int x, int y, int width, int height) {
+
+	}
+
+	@Override
+	public void repaintCursor() {
+
+	}
+
+	@Override
+	public void updateCursorPosition(short x, short y) {
+
+	}
+
+	@Override
+	public Renderer createRenderer(Reader reader, int width, int height,
+			PixelFormat pixelFormat) {
+		return new NullRenderer();
+	}
+
+	@Override
+	public void setPixelFormat(PixelFormat pixelFormat) {
+
+	}
+
+}
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Thu Aug 30 15:14:31 2012 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Thu Aug 30 16:51:46 2012 +0900
@@ -111,8 +111,8 @@
 					break;
 				case BELL:
 					logger.fine("Server message: Bell");
-					System.out.print("\0007");
-				    System.out.flush();
+//					System.out.print("\0007");
+//				    System.out.flush();
 					break;
 				case SERVER_CUT_TEXT:
 					logger.fine("Server message: CutText (3)");
--- a/src/main/java/com/glavsoft/rfb/protocol/TreeTask.java	Thu Aug 30 15:14:31 2012 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/TreeTask.java	Thu Aug 30 16:51:46 2012 +0900
@@ -2,32 +2,29 @@
 
 import jp.ac.u_ryukyu.treevnc.server.*;
 
-import com.glavsoft.exceptions.CommonException;
-import com.glavsoft.exceptions.TransportException;
 import com.glavsoft.rfb.ClipboardController;
 import com.glavsoft.rfb.IRepaintController;
-import com.glavsoft.rfb.client.FramebufferUpdateRequestMessage;
-import com.glavsoft.rfb.client.SetPixelFormatMessage;
 import com.glavsoft.rfb.encoding.EncodingType;
 import com.glavsoft.rfb.encoding.decoder.Decoder;
 import com.glavsoft.rfb.encoding.decoder.DecodersContainer;
-import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle;
-import com.glavsoft.rfb.encoding.decoder.RichCursorDecoder;
 import com.glavsoft.transport.Reader;
+import com.glavsoft.rfb.encoding.decoder.ZRLEESender;
 
 public class TreeTask extends ReceiverTask {
 	final static String versionMsg_3_855 = "RFB 003.855\n";
-	private MyRfbProtoProxy rfb;
 
 	public TreeTask(Reader reader, IRepaintController repaintController,
 			ClipboardController clipboardController,
-			DecodersContainer decoders, ProtocolContext context, MyRfbProtoProxy _rfb) {
-		super(reader, repaintController, clipboardController, decoders,
+			DecodersContainer decoders, ProtocolContext context, MyRfbProtoProxy rfb) {
+		super(reader, new NullRepaintController(), clipboardController, decoders,
 				context, true);
-		rfb = _rfb;
+		Decoder decoder = new ZRLEESender(rfb);
+		decoders.setDecoderByType(EncodingType.ZLIB, decoder);
+		decoders.setDecoderByType(EncodingType.ZRLE, decoder);
 	}
 
-	/*
+	/*  public void framebufferUpdateMessage() throws CommonException {
+	 * 
 	 *  (non-Javadoc)
 	 *  proxy
 	 *  	no Repaint
@@ -38,54 +35,6 @@
 	 *  	no context.send();
 	 *  	if necessary ZRLEE -> ZRLE
 	 *  	readSendData();    
+	 *  	
 	 */
-	@Override
-	public void framebufferUpdateMessage() throws CommonException {
-		reader.readByte(); // padding
-		int numberOfRectangles = reader.readUInt16(); // number of rectangles
-		
-		while (numberOfRectangles-- > 0) {
-			FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle();
-			rect.fill(reader);
-
-			Decoder decoder = decoders.getDecoderByType(rect.getEncodingType());
-			logger.finest(rect.toString() + (0 == numberOfRectangles ? "\n---" : ""));
-			if (decoder != null) {
-				int zrleLength = getZrleLength(rect);
-				reader.reset();
-				rfb.readSendData(zrleLength, reader);
-			} else if (rect.getEncodingType() == EncodingType.RICH_CURSOR) {
-			} else if (rect.getEncodingType() == EncodingType.CURSOR_POS) {
-			} else if (rect.getEncodingType() == EncodingType.DESKTOP_SIZE) {
-				fullscreenFbUpdateIncrementalRequest =
-					new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, true);
-				context.sendMessage(new FramebufferUpdateRequestMessage(0, 0, rect.width, rect.height, false));
-			} else
-				throw new CommonException("Unprocessed encoding: " + rect.toString());
-		}
-		synchronized (this) {
-			if (needSendPixelFormat) {
-				needSendPixelFormat = false;
-				context.setPixelFormat(pixelFormat);
-				context.sendMessage(new SetPixelFormatMessage(pixelFormat));
-				logger.fine("sent: "+pixelFormat);
-				context.sendRefreshMessage();
-				logger.fine("sent: nonincremental fb update");
-			} else {
-				context.sendMessage(fullscreenFbUpdateIncrementalRequest);
-			}
-		}
-	}
-
-	private int getZrleLength(FramebufferUpdateRectangle rect)
-			throws TransportException {
-		int zrleLength = 0;
-		if (rect.getEncodingType() == EncodingType.ZRLE
-				|| rect.getEncodingType() == EncodingType.ZRLEE
-				|| rect.getEncodingType() == EncodingType.ZLIB) {
-			zrleLength = reader.readInt32();
-		}
-		return zrleLength + 20;
-	}
-
 }
--- a/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java	Thu Aug 30 15:14:31 2012 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java	Thu Aug 30 16:51:46 2012 +0900
@@ -270,7 +270,7 @@
 	 * @throws TransportException
 	 */
 
-	public void readSendData(int dataLen, Reader is) throws CommonException {
+	public void readSendData(int dataLen, Reader is) throws TransportException {
 		LinkedList<ByteBuffer> bufs = new LinkedList<ByteBuffer>();
 		ByteBuffer header = ByteBuffer.allocate(16);
 		is.readBytes(header.array(), 0, 16);
@@ -305,9 +305,9 @@
 					unzip(inflater, inputs, 0, out, INFLATE_BUFSIZE);
 					len2 = zip(nDeflater, out, 0, bufs);
 				} catch (DataFormatException e) {
-					throw new CommonException(e);
+					throw new TransportException(e);
 				} catch (IOException e) {
-					throw new CommonException(e);
+					throw new TransportException(e);
 				}
 				
 				ByteBuffer blen = ByteBuffer.allocate(4);