diff src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java @ 412:372532ae5f4d

Add ErrorAnnounce
author innparusu
date Thu, 19 Nov 2015 16:53:50 +0900
parents cdab1354e227
children 3af5f4af2d63
line wrap: on
line diff
--- a/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Thu Nov 19 15:42:08 2015 +0900
+++ b/src/main/java/com/glavsoft/rfb/protocol/ReceiverTask.java	Thu Nov 19 16:53:50 2015 +0900
@@ -305,7 +305,7 @@
                         context.setFbHeight(rect.height);
                         repaintController.updateRemoteDesktopName(context);
                         reader.reset();
-                        // All children multicastqueue should be discarded hear.
+                        // All children multicastqueue should be discarded here.
 //                        rfb.clearChildrenTransmission();
                         rfb.readSendData(length + 20, reader, null, rect); // size of UpdateRectangleMessage with initData.
                         short id = (short) rect.x;
@@ -335,6 +335,20 @@
                     sendCheckDelayReply(rect.time, port, address);
                 } else if (rect.getEncodingType() == EncodingType.SOUND) {
                     // SOUNDを受信した時の処理を
+                } else if (rect.getEncodingType() == EncodingType.ERROR_ANNOUNCE) {
+                    short id = (short) rect.x;
+                    int length = reader.readInt32();
+                    byte[] errorMessage = new byte[length];
+                    reader.read(errorMessage);
+                    String errorMessageStr = new String(errorMessage, "UTF-8");
+                    if (id == rfb.getId()) {
+                        rfb.getViewer().getConnectionPresenter().showConnectionErrorDialog(errorMessageStr);
+                        rfb.getViewer().getConnectionPresenter().clearMessage();
+                    }
+                    if (!rfb.hasParent()) {
+                        reader.reset();
+                        rfb.readSendData(length + 20, reader, null, rect);
+                    }
                 } else
                     throw new CommonException("Unprocessed encoding: " + rect.toString());
             }