# HG changeset patch # User one # Date 1346313106 -32400 # Node ID 73b13bc335c260ce7cf2c5ac07ff7fda7f2d9edb # Parent 8c15ff5f0f8ebb5f0023a06110b32bba9d97eaea add ZRLEESender.java, NullRenderer.java and NullRepaintController.java diff -r 8c15ff5f0f8e -r 73b13bc335c2 src/main/java/com/glavsoft/rfb/encoding/decoder/DecodersContainer.java --- 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) { diff -r 8c15ff5f0f8e -r 73b13bc335c2 src/main/java/com/glavsoft/rfb/encoding/decoder/ZRLEESender.java --- /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; + } + + +} diff -r 8c15ff5f0f8e -r 73b13bc335c2 src/main/java/com/glavsoft/rfb/protocol/NullRenderer.java --- /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 + + } + +} diff -r 8c15ff5f0f8e -r 73b13bc335c2 src/main/java/com/glavsoft/rfb/protocol/NullRepaintController.java --- /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) { + + } + +} diff -r 8c15ff5f0f8e -r 73b13bc335c2 src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java --- 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)"); diff -r 8c15ff5f0f8e -r 73b13bc335c2 src/main/java/com/glavsoft/rfb/protocol/TreeTask.java --- 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; - } - } diff -r 8c15ff5f0f8e -r 73b13bc335c2 src/main/java/jp/ac/u_ryukyu/treevnc/server/MyRfbProtoProxy.java --- 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 bufs = new LinkedList(); 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);