Browse Source

Provide dummy output for dummy client connections

The CConnection base class wants to be able to write things these days,
so we need to provide it a place to do so.
tags/v1.10.90
Pierre Ossman 4 years ago
parent
commit
954ad21da2
2 changed files with 54 additions and 2 deletions
  1. 48
    1
      tests/perf/decperf.cxx
  2. 6
    1
      tests/perf/encperf.cxx

+ 48
- 1
tests/perf/decperf.cxx View File

@@ -31,9 +31,11 @@

#include <rdr/Exception.h>
#include <rdr/FileInStream.h>
#include <rdr/OutStream.h>

#include <rfb/CConnection.h>
#include <rfb/CMsgReader.h>
#include <rfb/CMsgWriter.h>
#include <rfb/PixelBuffer.h>
#include <rfb/PixelFormat.h>

@@ -42,6 +44,20 @@
// FIXME: Files are always in this format
static const rfb::PixelFormat filePF(32, 24, false, true, 255, 255, 255, 0, 8, 16);

class DummyOutStream : public rdr::OutStream {
public:
DummyOutStream();

virtual size_t length();
virtual void flush();

private:
virtual size_t overrun(size_t itemSize, size_t nItems);

int offset;
rdr::U8 buf[131072];
};

class CConn : public rfb::CConnection {
public:
CConn(const char *filename);
@@ -61,24 +77,55 @@ public:

protected:
rdr::FileInStream *in;
DummyOutStream *out;
};

DummyOutStream::DummyOutStream()
{
offset = 0;
ptr = buf;
end = buf + sizeof(buf);
}

size_t DummyOutStream::length()
{
flush();
return offset;
}

void DummyOutStream::flush()
{
offset += ptr - buf;
ptr = buf;
}

size_t DummyOutStream::overrun(size_t itemSize, size_t nItems)
{
flush();
if (itemSize * nItems > (size_t)(end - ptr))
nItems = (end - ptr) / itemSize;
return nItems;
}

CConn::CConn(const char *filename)
{
cpuTime = 0.0;

in = new rdr::FileInStream(filename);
setStreams(in, NULL);
out = new DummyOutStream;
setStreams(in, out);

// Need to skip the initial handshake
setState(RFBSTATE_INITIALISATION);
// That also means that the reader and writer weren't setup
setReader(new rfb::CMsgReader(this, in));
setWriter(new rfb::CMsgWriter(&server, out));
}

CConn::~CConn()
{
delete in;
delete out;
}

void CConn::initDone()

+ 6
- 1
tests/perf/encperf.cxx View File

@@ -39,6 +39,7 @@

#include <rfb/CConnection.h>
#include <rfb/CMsgReader.h>
#include <rfb/CMsgWriter.h>
#include <rfb/UpdateTracker.h>

#include <rfb/EncodeManager.h>
@@ -104,6 +105,7 @@ public:

protected:
rdr::FileInStream *in;
DummyOutStream *out;
rfb::SimpleUpdateTracker updates;
class SConn *sc;
};
@@ -167,12 +169,14 @@ CConn::CConn(const char *filename)
encodeTime = 0.0;

in = new rdr::FileInStream(filename);
setStreams(in, NULL);
out = new DummyOutStream;
setStreams(in, out);

// Need to skip the initial handshake and ServerInit
setState(RFBSTATE_NORMAL);
// That also means that the reader and writer weren't setup
setReader(new rfb::CMsgReader(this, in));
setWriter(new rfb::CMsgWriter(&server, out));
// Nor the frame buffer size and format
rfb::PixelFormat pf;
pf.parse(format);
@@ -188,6 +192,7 @@ CConn::~CConn()
{
delete sc;
delete in;
delete out;
}

void CConn::getStats(double& ratio, unsigned long long& bytes,

Loading…
Cancel
Save