Browse Source

Add method to query how long since we last wrote something to a fd.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4802 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v1.1.90
Pierre Ossman 12 years ago
parent
commit
3c837139f1
2 changed files with 17 additions and 0 deletions
  1. 11
    0
      common/rdr/FdOutStream.cxx
  2. 6
    0
      common/rdr/FdOutStream.h

+ 11
- 0
common/rdr/FdOutStream.cxx View 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;
}

+ 6
- 0
common/rdr/FdOutStream.h View 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;
};

}

Loading…
Cancel
Save