Mercurial > hg > Applications > TreeVNC
diff src/main/java/com/glavsoft/rfb/protocol/Protocol.java @ 233:26b7c0a6d91b
fix indent.
author | oc |
---|---|
date | Fri, 10 Oct 2014 23:43:06 +0900 |
parents | b31903e5b02d |
children | e6abf4b0c92e |
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/protocol/Protocol.java Fri Oct 10 23:39:44 2014 +0900 +++ b/src/main/java/com/glavsoft/rfb/protocol/Protocol.java Fri Oct 10 23:43:06 2014 +0900 @@ -43,143 +43,143 @@ import jp.ac.u_ryukyu.treevnc.TreeRFBProto; public class Protocol implements ProtocolContext, IChangeSettingsListener { - private ProtocolState state; - private final Logger logger; - private final IPasswordRetriever passwordRetriever; - private final ProtocolSettings settings; - private int fbWidth; - private int fbHeight; - private PixelFormat pixelFormat; - private final Reader reader; - private final Writer writer; - private String remoteDesktopName; - private MessageQueue messageQueue; - private final DecodersContainer decoders; - private SenderTask senderTask; - private ReceiverTask receiverTask; - private IRfbSessionListener rfbSessionListener; - private IRepaintController repaintController; - private PixelFormat serverPixelFormat; - private Thread senderThread; - private Thread receiverThread; - private boolean isTight; - private String protocolVersion; - private byte[] initData; - private boolean isRetina = false; + private ProtocolState state; + private final Logger logger; + private final IPasswordRetriever passwordRetriever; + private final ProtocolSettings settings; + private int fbWidth; + private int fbHeight; + private PixelFormat pixelFormat; + private final Reader reader; + private final Writer writer; + private String remoteDesktopName; + private MessageQueue messageQueue; + private final DecodersContainer decoders; + private SenderTask senderTask; + private ReceiverTask receiverTask; + private IRfbSessionListener rfbSessionListener; + private IRepaintController repaintController; + private PixelFormat serverPixelFormat; + private Thread senderThread; + private Thread receiverThread; + private boolean isTight; + private String protocolVersion; + private byte[] initData; + private boolean isRetina = false; public Protocol(Reader reader, Writer writer, - IPasswordRetriever passwordRetriever, ProtocolSettings settings) { - this.reader = reader; - this.writer = writer; - this.passwordRetriever = passwordRetriever; - this.settings = settings; - decoders = new DecodersContainer(); - decoders.instantiateDecodersWhenNeeded(settings.encodings); - state = new HandshakeState(this); + IPasswordRetriever passwordRetriever, ProtocolSettings settings) { + this.reader = reader; + this.writer = writer; + this.passwordRetriever = passwordRetriever; + this.settings = settings; + decoders = new DecodersContainer(); + decoders.instantiateDecodersWhenNeeded(settings.encodings); + state = new HandshakeState(this); logger = Logger.getLogger(getClass().getName()); } - + - @Override - public void changeStateTo(ProtocolState state) { - this.state = state; - } + @Override + public void changeStateTo(ProtocolState state) { + this.state = state; + } - public void handshake() throws UnsupportedProtocolVersionException, UnsupportedSecurityTypeException, - AuthenticationFailedException, TransportException, FatalException { - while (state.next()) { - // continue; - } - this.messageQueue = new MessageQueue(); - } - - @Override - public PixelFormat getPixelFormat() { - return pixelFormat; - } + public void handshake() throws UnsupportedProtocolVersionException, UnsupportedSecurityTypeException, + AuthenticationFailedException, TransportException, FatalException { + while (state.next()) { + // continue; + } + this.messageQueue = new MessageQueue(); + } - @Override - public void setPixelFormat(PixelFormat pixelFormat) { - this.pixelFormat = pixelFormat; - if (repaintController != null) { - repaintController.setPixelFormat(pixelFormat); - } - } - - @Override - public String getRemoteDesktopName() { - return remoteDesktopName; - } - - @Override - public void setRemoteDesktopName(String name) { - remoteDesktopName = name; - } + @Override + public PixelFormat getPixelFormat() { + return pixelFormat; + } - @Override - public int getFbWidth() { - return fbWidth; - } + @Override + public void setPixelFormat(PixelFormat pixelFormat) { + this.pixelFormat = pixelFormat; + if (repaintController != null) { + repaintController.setPixelFormat(pixelFormat); + } + } - @Override - public void setFbWidth(int fbWidth) { - if(!isRetina) - this.fbWidth = fbWidth; - } - - @Override - public int getFbHeight() { - return fbHeight; - } + @Override + public String getRemoteDesktopName() { + return remoteDesktopName; + } - @Override - public byte[] getInitData() { - return initData; - } - - @Override - public void setInitData(byte[] initData) { - this.initData = initData; - } - - @Override - public void setFbHeight(int fbHeight) { - if(!isRetina) - this.fbHeight = fbHeight; - } + @Override + public void setRemoteDesktopName(String name) { + remoteDesktopName = name; + } - @Override - public IPasswordRetriever getPasswordRetriever() { - return passwordRetriever; - } + @Override + public int getFbWidth() { + return fbWidth; + } - @Override - public ProtocolSettings getSettings() { - return settings; - } + @Override + public void setFbWidth(int fbWidth) { + if(!isRetina) + this.fbWidth = fbWidth; + } @Override - public Writer getWriter() { - return writer; - } + public int getFbHeight() { + return fbHeight; + } + + @Override + public byte[] getInitData() { + return initData; + } - @Override - public Reader getReader() { - return reader; - } + @Override + public void setInitData(byte[] initData) { + this.initData = initData; + } + + @Override + public void setFbHeight(int fbHeight) { + if(!isRetina) + this.fbHeight = fbHeight; + } + + @Override + public IPasswordRetriever getPasswordRetriever() { + return passwordRetriever; + } - /** - * Following the server initialisation message it's up to the client to send - * whichever protocol messages it wants. Typically it will send a - * SetPixelFormat message and a SetEncodings message, followed by a - * FramebufferUpdateRequest. From then on the server will send - * FramebufferUpdate messages in response to the client's - * FramebufferUpdateRequest messages. The client should send - * FramebufferUpdateRequest messages with incremental set to true when it has - * finished processing one FramebufferUpdate and is ready to process another. - * With a fast client, the rate at which FramebufferUpdateRequests are sent - * should be regulated to avoid hogging the network. - */ + @Override + public ProtocolSettings getSettings() { + return settings; + } + + @Override + public Writer getWriter() { + return writer; + } + + @Override + public Reader getReader() { + return reader; + } + + /** + * Following the server initialisation message it's up to the client to send + * whichever protocol messages it wants. Typically it will send a + * SetPixelFormat message and a SetEncodings message, followed by a + * FramebufferUpdateRequest. From then on the server will send + * FramebufferUpdate messages in response to the client's + * FramebufferUpdateRequest messages. The client should send + * FramebufferUpdateRequest messages with incremental set to true when it has + * finished processing one FramebufferUpdate and is ready to process another. + * With a fast client, the rate at which FramebufferUpdateRequests are sent + * should be regulated to avoid hogging the network. + */ public void startNormalHandling(IRfbSessionListener rfbSessionListener, IRepaintController repaintController, ClipboardController clipboardController, TreeRFBProto rfb) @@ -190,32 +190,32 @@ decoders, this, rfb); startNormalHandling1(rfbSessionListener, repaintController, clipboardController); } - + public void startNormalHandling1(IRfbSessionListener rfbSessionListener, - IRepaintController repaintController, ClipboardController clipboardController) { - this.rfbSessionListener = rfbSessionListener; - this.repaintController = repaintController; -// if (settings.getColorDepth() == 0) { -// settings.setColorDepth(pixelFormat.depth); // the same the server sent when not initialized yet -// } - serverPixelFormat = pixelFormat; + IRepaintController repaintController, ClipboardController clipboardController) { + this.rfbSessionListener = rfbSessionListener; + this.repaintController = repaintController; + // if (settings.getColorDepth() == 0) { + // settings.setColorDepth(pixelFormat.depth); // the same the server sent when not initialized yet + // } + serverPixelFormat = pixelFormat; correctServerPixelFormat(); - setPixelFormat(createPixelFormat(settings)); - sendMessage(new SetPixelFormatMessage(pixelFormat)); - logger.fine("sent: " + pixelFormat); + setPixelFormat(createPixelFormat(settings)); + sendMessage(new SetPixelFormatMessage(pixelFormat)); + logger.fine("sent: " + pixelFormat); - sendSupportedEncodingsMessage(settings); - settings.addListener(this); // to support pixel format (color depth), and encodings changes - settings.addListener(repaintController); - sendRefreshMessage(); - senderTask = new SenderTask(messageQueue, writer, this); - senderThread = new Thread(senderTask, "RfbSenderTask"); - senderThread.start(); - decoders.resetDecoders(); + sendSupportedEncodingsMessage(settings); + settings.addListener(this); // to support pixel format (color depth), and encodings changes + settings.addListener(repaintController); + sendRefreshMessage(); + senderTask = new SenderTask(messageQueue, writer, this); + senderThread = new Thread(senderTask, "RfbSenderTask"); + senderThread.start(); + decoders.resetDecoders(); - receiverThread = new Thread(receiverTask, "RfbReceiverTask"); - receiverThread.start(); - } + receiverThread = new Thread(receiverTask, "RfbReceiverTask"); + receiverThread.start(); + } private void correctServerPixelFormat() { // correct true color flag - we don't support color maps, so always set it up @@ -233,89 +233,89 @@ } @Override - public void sendMessage(ClientToServerMessage message) { - messageQueue.put(message); - } + public void sendMessage(ClientToServerMessage message) { + messageQueue.put(message); + } - private void sendSupportedEncodingsMessage(ProtocolSettings settings) { - decoders.instantiateDecodersWhenNeeded(settings.encodings); - SetEncodingsMessage encodingsMessage = new SetEncodingsMessage(settings.encodings); - sendMessage(encodingsMessage); - logger.fine("sent: " + encodingsMessage.toString()); - } + private void sendSupportedEncodingsMessage(ProtocolSettings settings) { + decoders.instantiateDecodersWhenNeeded(settings.encodings); + SetEncodingsMessage encodingsMessage = new SetEncodingsMessage(settings.encodings); + sendMessage(encodingsMessage); + logger.fine("sent: " + encodingsMessage.toString()); + } - /** - * create pixel format by bpp - */ - private PixelFormat createPixelFormat(ProtocolSettings settings) { - int serverBigEndianFlag = serverPixelFormat.bigEndianFlag; - switch (settings.getColorDepth()) { - case ProtocolSettings.COLOR_DEPTH_24: - return PixelFormat.create24bitColorDepthPixelFormat(serverBigEndianFlag); - case ProtocolSettings.COLOR_DEPTH_16: - return PixelFormat.create16bitColorDepthPixelFormat(serverBigEndianFlag); - case ProtocolSettings.COLOR_DEPTH_8: - return PixelFormat.create8bitColorDepthBGRPixelFormat(serverBigEndianFlag); - case ProtocolSettings.COLOR_DEPTH_6: - return PixelFormat.create6bitColorDepthPixelFormat(serverBigEndianFlag); - case ProtocolSettings.COLOR_DEPTH_3: - return PixelFormat.create3bppPixelFormat(serverBigEndianFlag); - case ProtocolSettings.COLOR_DEPTH_SERVER_SETTINGS: - return serverPixelFormat; - default: - // unsupported bpp, use default - return PixelFormat.create24bitColorDepthPixelFormat(serverBigEndianFlag); - } - } + /** + * create pixel format by bpp + */ + private PixelFormat createPixelFormat(ProtocolSettings settings) { + int serverBigEndianFlag = serverPixelFormat.bigEndianFlag; + switch (settings.getColorDepth()) { + case ProtocolSettings.COLOR_DEPTH_24: + return PixelFormat.create24bitColorDepthPixelFormat(serverBigEndianFlag); + case ProtocolSettings.COLOR_DEPTH_16: + return PixelFormat.create16bitColorDepthPixelFormat(serverBigEndianFlag); + case ProtocolSettings.COLOR_DEPTH_8: + return PixelFormat.create8bitColorDepthBGRPixelFormat(serverBigEndianFlag); + case ProtocolSettings.COLOR_DEPTH_6: + return PixelFormat.create6bitColorDepthPixelFormat(serverBigEndianFlag); + case ProtocolSettings.COLOR_DEPTH_3: + return PixelFormat.create3bppPixelFormat(serverBigEndianFlag); + case ProtocolSettings.COLOR_DEPTH_SERVER_SETTINGS: + return serverPixelFormat; + default: + // unsupported bpp, use default + return PixelFormat.create24bitColorDepthPixelFormat(serverBigEndianFlag); + } + } - @Override - public void settingsChanged(SettingsChangedEvent e) { - ProtocolSettings settings = (ProtocolSettings) e.getSource(); - if (settings.isChangedEncodings()) { - sendSupportedEncodingsMessage(settings); - } - if (settings.isChangedColorDepth() && receiverTask != null) { - receiverTask.queueUpdatePixelFormat(createPixelFormat(settings)); - } - } + @Override + public void settingsChanged(SettingsChangedEvent e) { + ProtocolSettings settings = (ProtocolSettings) e.getSource(); + if (settings.isChangedEncodings()) { + sendSupportedEncodingsMessage(settings); + } + if (settings.isChangedColorDepth() && receiverTask != null) { + receiverTask.queueUpdatePixelFormat(createPixelFormat(settings)); + } + } - @Override - public void sendRefreshMessage() { - sendMessage(new FramebufferUpdateRequestMessage(0, 0, fbWidth, fbHeight, false)); - logger.fine("sent: full FB Refresh"); - } + @Override + public void sendRefreshMessage() { + sendMessage(new FramebufferUpdateRequestMessage(0, 0, fbWidth, fbHeight, false)); + logger.fine("sent: full FB Refresh"); + } - @Override - public void cleanUpSession(String message) { - cleanUpSession(); - if (message!=null) - rfbSessionListener.rfbSessionStopped(message); - } + @Override + public void cleanUpSession(String message) { + cleanUpSession(); + if (message!=null) + rfbSessionListener.rfbSessionStopped(message); + } - public synchronized void cleanUpSession() { - if (senderTask != null) { - senderTask.stopTask(); - try { - senderThread.join(1000); - } catch (InterruptedException e) { - // nop - } - senderTask = null; - } - stopReceiverTask(); - } + public synchronized void cleanUpSession() { + if (senderTask != null) { + senderTask.stopTask(); + try { + senderThread.join(1000); + } catch (InterruptedException e) { + // nop + } + senderTask = null; + } + stopReceiverTask(); + } - @Override + @Override public void stopReceiverTask() { if (receiverTask != null) { - receiverTask.stopTask(); - try { - receiverThread.join(); - } catch (InterruptedException e) { - // nop - } - receiverTask = null; - } + receiverTask.stopTask(); + try { + receiverThread.join(); + } catch (InterruptedException e) { + // nop + } + receiverTask = null; + } } @Override @@ -339,7 +339,7 @@ } - + @Override public void resetDecoder() {