]> source.dussan.org Git - tigervnc.git/commitdiff
Add method to query how long since we last wrote something to a fd.
authorPierre Ossman <ossman@cendio.se>
Tue, 15 Nov 2011 12:07:43 +0000 (12:07 +0000)
committerPierre Ossman <ossman@cendio.se>
Tue, 15 Nov 2011 12:07:43 +0000 (12:07 +0000)
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4802 3789f03b-4d11-0410-bbf8-ca57d06f2519

common/rdr/FdOutStream.cxx
common/rdr/FdOutStream.h

index a6b85e2165263ea3e840bc025d985ce7dd4bf166..533faa3ff4cee19f6ac21b79ae713448aed89ac8 100644 (file)
@@ -1,4 +1,5 @@
 /* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved.
+ * Copyright 2011 Pierre Ossman for Cendio AB
  * 
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -44,6 +45,7 @@
 
 #include <rdr/FdOutStream.h>
 #include <rdr/Exception.h>
+#include <rfb/util.h>
 
 
 using namespace rdr;
@@ -56,6 +58,8 @@ FdOutStream::FdOutStream(int fd_, bool blocking_, int timeoutms_, int bufSize_)
 {
   ptr = start = sentUpTo = new U8[bufSize];
   end = start + bufSize;
+
+  gettimeofday(&lastWrite, NULL);
 }
 
 FdOutStream::~FdOutStream()
@@ -86,6 +90,11 @@ int FdOutStream::bufferUsage()
   return ptr - sentUpTo;
 }
 
+unsigned FdOutStream::getIdleTime()
+{
+  return rfb::msSince(&lastWrite);
+}
+
 void FdOutStream::flush()
 {
   int timeoutms_;
@@ -218,5 +227,7 @@ int FdOutStream::writeWithTimeout(const void* data, int length, int timeoutms)
 
   if (n < 0) throw SystemException("write",errno);
 
+  gettimeofday(&lastWrite, NULL);
+
   return n;
 }
index daa88b24dbc8850787e05d55aeb6e1cb90bb5be3..b7f6cb01548bbb1e6699664a6b1fdb2b955c4e19 100644 (file)
@@ -1,4 +1,5 @@
 /* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved.
+ * Copyright 2011 Pierre Ossman for Cendio AB
  * 
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -23,6 +24,8 @@
 #ifndef __RDR_FDOUTSTREAM_H__
 #define __RDR_FDOUTSTREAM_H__
 
+#include <sys/time.h>
+
 #include <rdr/OutStream.h>
 
 namespace rdr {
@@ -43,6 +46,8 @@ namespace rdr {
 
     int bufferUsage();
 
+    unsigned getIdleTime();
+
   private:
     int overrun(int itemSize, int nItems);
     int writeWithTimeout(const void* data, int length, int timeoutms);
@@ -53,6 +58,7 @@ namespace rdr {
     int offset;
     U8* start;
     U8* sentUpTo;
+    struct timeval lastWrite;
   };
 
 }