]> source.dussan.org Git - tigervnc.git/commitdiff
Changes to allow compiling on JDK7
authorBrian Hinz <bphinz@users.sourceforge.net>
Sun, 22 Jul 2012 20:25:57 +0000 (20:25 +0000)
committerBrian Hinz <bphinz@users.sourceforge.net>
Sun, 22 Jul 2012 20:25:57 +0000 (20:25 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4948 3789f03b-4d11-0410-bbf8-ca57d06f2519

java/com/tigervnc/network/SocketDescriptor.java
java/com/tigervnc/network/TcpListener.java
java/com/tigervnc/network/TcpSocket.java
java/com/tigervnc/vncviewer/CConn.java
java/com/tigervnc/vncviewer/F8Menu.java

index eb2679d9fb000da0b08001e80f54222421e6a2f6..3517a99f0917549bf04c8ebf893999ff130680e0 100644 (file)
@@ -29,11 +29,10 @@ import java.util.Iterator;
 
 import com.tigervnc.rdr.Exception;
 
-public class SocketDescriptor extends SocketChannel 
-                              implements FileDescriptor {
+public class SocketDescriptor implements FileDescriptor {
 
   public SocketDescriptor() throws Exception {
-    super(DefaultSelectorProvider());
+    DefaultSelectorProvider();
     try {
       channel = SocketChannel.open();
       channel.configureBlocking(false);
@@ -50,6 +49,14 @@ public class SocketDescriptor extends SocketChannel
     }
   }
 
+  public void close() throws IOException {
+    try {
+      channel.close();
+    } catch(IOException e) {
+      throw new IOException(e.toString());
+    }
+  }
+
   private static SelectorProvider DefaultSelectorProvider() {
     // kqueue() selector provider on OS X is not working, fall back to select() for now
     String os = System.getProperty("os.name");
@@ -165,6 +172,18 @@ public class SocketDescriptor extends SocketChannel
   public java.net.Socket socket() {
     return channel.socket();
   }
+  public SocketAddress getRemoteAddress() throws IOException {
+    if (isConnected())
+      return channel.socket().getRemoteSocketAddress();
+    return null;
+  }
+
+  public SocketAddress getLocalAddress() throws IOException {
+    if (isConnected())
+      return channel.socket().getLocalSocketAddress();
+    return null;
+  }
 
   public boolean isConnectionPending() {
     return channel.isConnectionPending();
index d6e92ab973616039bf1fb1d9464a79ab9904bad0..959d5459d6e33a47316355ba92c8387cf74f5584 100644 (file)
@@ -118,7 +118,11 @@ public class TcpListener extends SocketListener  {
     }
 
     // Disable Nagle's algorithm, to reduce latency
-    TcpSocket.enableNagles(new_sock, false);
+    try {
+      new_sock.socket().setTcpNoDelay(true);
+    } catch (java.net.SocketException e) {
+      throw new SocketException(e.toString());
+    }
 
     // Create the socket object & check connection is allowed
     SocketDescriptor fd = null;
index c4c1a8cf4c11d30407fdc8276e551aaaad9e71cb..ac53aaf787a4249fc751bba12a99d3087b2740b6 100644 (file)
@@ -142,23 +142,32 @@ public class TcpSocket extends Socket {
     return address+"::"+port;
   }
 
-  public boolean sameMachine() {
-    SocketAddress peeraddr = ((SocketDescriptor)getFd()).socket().getRemoteSocketAddress();
-    SocketAddress myaddr = ((SocketDescriptor)getFd()).socket().getLocalSocketAddress();
-    return myaddr.equals(peeraddr);
+  public boolean sameMachine() throws Exception {
+    try {
+      SocketAddress peeraddr = ((SocketDescriptor)getFd()).getRemoteAddress();
+      SocketAddress myaddr = ((SocketDescriptor)getFd()).getLocalAddress();
+      return myaddr.equals(peeraddr);
+    } catch (IOException e) {
+      throw new Exception(e.toString());
+    }
   }
 
-  public void shutdown() {
-    super.shutdown();
+  public void shutdown() throws Exception {
+    try {
+      close();
+      super.shutdown();
+    } catch (IOException e) {
+      throw new Exception(e.toString());
+    }
   }
   
   public void close() throws IOException {
     ((SocketDescriptor)getFd()).close();
   }
   
-  public static boolean enableNagles(SocketChannel sock, boolean enable) {
+  public static boolean enableNagles(SocketDescriptor sock, boolean enable) {
     try {
-      sock.socket().setTcpNoDelay(!enable);
+      sock.channel.socket().setTcpNoDelay(!enable);
     } catch(java.net.SocketException e) {
       vlog.error("unable to setsockopt TCP_NODELAY: "+e.getMessage());
       return false;
index 736994b1732bc3f0a20f5b55eb0264c57163e827..2faf787d21aea5df9657a553bd9c10474821a6f5 100644 (file)
@@ -776,9 +776,8 @@ public class CConn extends CConnection
   // close() closes the socket, thus waking up the RFB thread.
   public void close() {
     shuttingDown = true;
-    sock.shutdown();
     try {
-      sock.close();
+      sock.shutdown();
     } catch (java.lang.Exception e) {
       throw new Exception(e.toString());
     }
index ca09ac200eee8cc2f465d3c54847f3379691b878..317caf3574878ebe8a9b5645ca023920d352a445 100644 (file)
@@ -85,7 +85,7 @@ public class F8Menu extends JPopupMenu implements ActionListener {
 
   public void actionPerformed(ActionEvent ev) {
     if (actionMatch(ev, exit)) {
-      cc.close();
+      cc.deleteWindow();
     } else if (actionMatch(ev, fullScreen)) {
       cc.toggleFullScreen();
     } else if (actionMatch(ev, restore)) {