It's to prevent VPN's from dropping idle connections.  I have to admit that
I don't use the java viewer in applet mode and mistakenly thought that
closing the browser ended the session.  Closing the browser does close the
client (which unlike the pre-1.2 viewer appears to be a standalone
application rather than embedded in the browser frame) but does not end the
session.  So in hindsight this feature does seem somewhat superfluous.
 However, it is off by default and only enabled via the command line, so as
long as these dummy framebuffer requests do not present a problem for the
protocol I have no objection to leaving this in (or taking it back out for
that matter).  I'm also not opposed to reverting back to the embedded
browser frame, assuming that it's not too much work.  Whatever people feel
is most useful.

-brian

On Thu, Feb 16, 2012 at 1:42 PM, DRC <dcomman...@users.sourceforge.net>wrote:

> I missed that part of the discussion on the tracker. What is the purpose
> of having this in the viewer?
>
> On Feb 16, 2012, at 6:44 AM, bph...@users.sourceforge.net wrote:
>
> > Revision: 4857
> >          http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4857&view=rev
> > Author:   bphinz
> > Date:     2012-02-16 12:44:51 +0000 (Thu, 16 Feb 2012)
> > Log Message:
> > -----------
> > adds keepAlive feature requested in #3482254 to java viewer
> >
> > Modified Paths:
> > --------------
> >    trunk/java/com/tigervnc/vncviewer/CConn.java
> >    trunk/java/com/tigervnc/vncviewer/VncViewer.java
> >
> > Modified: trunk/java/com/tigervnc/vncviewer/CConn.java
> > ===================================================================
> > --- trunk/java/com/tigervnc/vncviewer/CConn.java    2012-02-16 12:31:38
> UTC (rev 4856)
> > +++ trunk/java/com/tigervnc/vncviewer/CConn.java    2012-02-16 12:44:51
> UTC (rev 4857)
> > @@ -49,7 +49,8 @@
> > import java.net.InetSocketAddress;
> > import java.net.URL;
> > import java.net.SocketException;
> > -import java.util.*;
> > +import java.util.ArrayList;
> > +import java.util.Iterator;
> >
> > import com.tigervnc.rdr.*;
> > import com.tigervnc.rfb.*;
> > @@ -227,6 +228,18 @@
> >     setServerName(serverHost);
> >     setStreams(sock.inStream(), sock.outStream());
> >     initialiseProtocol();
> > +    int delay = viewer.keepAliveTimeout.getValue();
> > +    if (delay > 0) {
> > +      ActionListener keepAliveListener = new ActionListener() {
> > +        public void actionPerformed(ActionEvent evt) {
> > +          synchronized (writer()) {
> > +            writer().writeFramebufferUpdateRequest(new Rect(0,0,0,0),
> true);
> > +          }
> > +        }
> > +      };
> > +      keepAliveTimer = new Timer(1000*delay, keepAliveListener);
> > +      keepAliveTimer.start();
> > +    }
> >   }
> >
> >   public void refreshFramebuffer()
> > @@ -249,6 +262,8 @@
> >   // deleteWindow() is called when the user closes the desktop or menu
> windows.
> >
> >   void deleteWindow() {
> > +    if (keepAliveTimer != null)
> > +      keepAliveTimer.stop();
> >     if (viewport != null)
> >       viewport.dispose();
> >     viewport = null;
> > @@ -465,6 +480,8 @@
> >       }
> >
> >       firstUpdate = false;
> > +      if (keepAliveTimer != null)
> > +        keepAliveTimer.restart();
> >     }
> >
> >     // A format change has been scheduled and we are now past the update
> > @@ -779,6 +796,8 @@
> >     }
> >
> >     forceNonincremental = false;
> > +    if (keepAliveTimer != null)
> > +      keepAliveTimer.restart();
> >   }
> >
> >
> > @@ -1217,6 +1236,8 @@
> >   synchronized public void writeClientCutText(String str, int len) {
> >     if (state() != RFBSTATE_NORMAL) return;
> >     writer().writeClientCutText(str,len);
> > +    if (keepAliveTimer != null)
> > +      keepAliveTimer.restart();
> >   }
> >
> >   synchronized public void writeKeyEvent(int keysym, boolean down) {
> > @@ -1388,6 +1409,8 @@
> >     if ((m & Event.META_MASK) != (pressedModifiers & Event.META_MASK))
> >       writeKeyEvent(Keysyms.Meta_L, (m & Event.META_MASK) != 0);
> >     pressedModifiers = m;
> > +    if (keepAliveTimer != null)
> > +      keepAliveTimer.restart();
> >   }
> >
> >
> > @@ -1421,6 +1444,7 @@
> >   ImageIcon logo = new
> ImageIcon(cl.getResource("com/tigervnc/vncviewer/tigervnc.png"));
> >   public static UserPasswdGetter upg;
> >   public UserMsgBox msg;
> > +  Timer keepAliveTimer;
> >
> >   // shuttingDown is set by the GUI thread and only ever tested by the
> RFB
> >   // thread after the window has been destroyed.
> >
> > Modified: trunk/java/com/tigervnc/vncviewer/VncViewer.java
> > ===================================================================
> > --- trunk/java/com/tigervnc/vncviewer/VncViewer.java    2012-02-16
> 12:31:38 UTC (rev 4856)
> > +++ trunk/java/com/tigervnc/vncviewer/VncViewer.java    2012-02-16
> 12:44:51 UTC (rev 4857)
> > @@ -331,6 +331,14 @@
> >                                "Use specified compression level "+
> >                                "0 = Low, 6 = High",
> >                                1);
> > +  IntParameter keepAliveTimeout
> > +  = new IntParameter("KeepAliveTimeout",
> > +                           "Send dummy framebuffer update requests if
> no "+
> > +                     "network activity has occurred for more than "+
> > +                     "the specified number of seconds. This is to "+
> > +                     "prevent VPNs or other applications from "+
> > +                     "disconnecting due to inactivity. A value of "+
> > +                     "0 disables this feature.", 0);
> >   BoolParameter noJpeg
> >   = new BoolParameter("NoJPEG",
> >                           "Disable lossy JPEG compression in Tight
> encoding.", false);
> >
> > This was sent by the SourceForge.net collaborative development platform,
> the world's largest Open Source development site.
> >
> >
> >
> ------------------------------------------------------------------------------
> > Virtualization & Cloud Management Using Capacity Planning
> > Cloud computing makes use of virtualization - but cloud computing
> > also focuses on allowing computing to be delivered as a service.
> > http://www.accelacomm.com/jaw/sfnl/114/51521223/
> > _______________________________________________
> > Tigervnc-commits mailing list
> > tigervnc-comm...@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/tigervnc-commits
>
>
> ------------------------------------------------------------------------------
> Virtualization & Cloud Management Using Capacity Planning
> Cloud computing makes use of virtualization - but cloud computing
> also focuses on allowing computing to be delivered as a service.
> http://www.accelacomm.com/jaw/sfnl/114/51521223/
> _______________________________________________
> Tigervnc-devel mailing list
> Tigervnc-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/tigervnc-devel
>
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Tigervnc-devel mailing list
Tigervnc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tigervnc-devel

Reply via email to