summaryrefslogtreecommitdiffstats
path: root/common/rfb/VNCSConnectionST.h
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2011-11-15 12:08:30 +0000
committerPierre Ossman <ossman@cendio.se>2011-11-15 12:08:30 +0000
commit1b478e517749ba0a426fa4dd5a3b5ec8c502c7d8 (patch)
treebcc55063864a43dca5d43d30e28dfa935b27200e /common/rfb/VNCSConnectionST.h
parent3c837139f1872a3d966ca146d4ed6ae9b8f0b722 (diff)
downloadtigervnc-1b478e517749ba0a426fa4dd5a3b5ec8c502c7d8.tar.gz
tigervnc-1b478e517749ba0a426fa4dd5a3b5ec8c502c7d8.zip
Server implementation of continuous updates, including advanced flow control.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4803 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'common/rfb/VNCSConnectionST.h')
-rw-r--r--common/rfb/VNCSConnectionST.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/common/rfb/VNCSConnectionST.h b/common/rfb/VNCSConnectionST.h
index e06522b9..8742fa67 100644
--- a/common/rfb/VNCSConnectionST.h
+++ b/common/rfb/VNCSConnectionST.h
@@ -34,6 +34,8 @@
#include <rfb/VNCServerST.h>
#include <rfb/Timer.h>
+struct RTTInfo;
+
namespace rfb {
class VNCSConnectionST : public SConnection,
public WriteSetCursorCallback,
@@ -134,8 +136,11 @@ namespace rfb {
const ScreenSet& layout);
virtual void setInitialColourMap();
virtual void fence(rdr::U32 flags, unsigned len, const char data[]);
+ virtual void enableContinuousUpdates(bool enable,
+ int x, int y, int w, int h);
virtual void supportsLocalCursor();
virtual void supportsFence();
+ virtual void supportsContinuousUpdates();
// setAccessRights() allows a security package to limit the access rights
// of a VNCSConnectioST to the server. These access rights are applied
@@ -151,7 +156,11 @@ namespace rfb {
// Internal methods
+ // Congestion control
+ void writeRTTPing();
+ void handleRTTPong(const struct RTTInfo &rttInfo);
bool isCongested();
+ void updateCongestion();
// writeFramebufferUpdate() attempts to write a framebuffer update to the
// client.
@@ -175,12 +184,23 @@ namespace rfb {
unsigned fenceDataLen;
char *fenceData;
+ unsigned baseRTT;
+ unsigned congWindow;
+ int ackedOffset, sentOffset;
+
+ unsigned minRTT;
+ bool seenCongestion;
+ unsigned pingCounter;
+ Timer congestionTimer;
+
VNCServerST* server;
SimpleUpdateTracker updates;
TransImageGetter image_getter;
Region requested;
bool drawRenderedCursor, removeRenderedCursor;
Rect renderedCursorRect;
+ bool continuousUpdates;
+ Region cuRegion;
Timer updateTimer;