diff options
author | markmc <markmc> | 2003-09-11 16:08:19 +0000 |
---|---|---|
committer | markmc <markmc> | 2003-09-11 16:08:19 +0000 |
commit | 9edf7e56bbe5d396abbd47d4ed9fc1a14c64531c (patch) | |
tree | 04476b12c5715ad5698281a5bf710160369e7dad /rdr | |
parent | 937b906f0d8cd1b70521ea1ac8f20b457a22c3bb (diff) | |
download | libtdevnc-9edf7e56bbe5d396abbd47d4ed9fc1a14c64531c.tar.gz libtdevnc-9edf7e56bbe5d396abbd47d4ed9fc1a14c64531c.zip |
2003-09-11 Mark McLoughlin <mark@skynet.ie>
* rdr/Exception.h, rdr/FdInStream.cxx, rdr/FdInStream.h,
rdr/FdOutStream.cxx, rdr/FdOutStream.h, rdr/FixedMemOutStream.h,
rdr/InStream.cxx, rdr/InStream.h, rdr/MemInStream.h,
rdr/MemOutStream.h, rdr/NullOutStream.cxx, rdr/NullOutStream.h,
rdr/OutStream.h, rdr/ZlibInStream.cxx, rdr/ZlibInStream.h,
rdr/ZlibOutStream.cxx, rdr/ZlibOutStream.h, rdr/types.h,
zrle.cxx, zrleDecode.h, zrleEncode.h: remove original
C++ ZRLE implementation. Its been ported to C.
* NEWS: copy the existing ChangeLog to here and make
this a more detailed ChangeLog.
Diffstat (limited to 'rdr')
-rw-r--r-- | rdr/Exception.h | 71 | ||||
-rw-r--r-- | rdr/FdInStream.cxx | 251 | ||||
-rw-r--r-- | rdr/FdInStream.h | 72 | ||||
-rw-r--r-- | rdr/FdOutStream.cxx | 113 | ||||
-rw-r--r-- | rdr/FdOutStream.h | 53 | ||||
-rw-r--r-- | rdr/FixedMemOutStream.h | 52 | ||||
-rw-r--r-- | rdr/InStream.cxx | 35 | ||||
-rw-r--r-- | rdr/InStream.h | 143 | ||||
-rw-r--r-- | rdr/MemInStream.h | 47 | ||||
-rw-r--r-- | rdr/MemOutStream.h | 82 | ||||
-rw-r--r-- | rdr/NullOutStream.cxx | 60 | ||||
-rw-r--r-- | rdr/NullOutStream.h | 42 | ||||
-rw-r--r-- | rdr/OutStream.h | 152 | ||||
-rw-r--r-- | rdr/ZlibInStream.cxx | 121 | ||||
-rw-r--r-- | rdr/ZlibInStream.h | 59 | ||||
-rw-r--r-- | rdr/ZlibOutStream.cxx | 144 | ||||
-rw-r--r-- | rdr/ZlibOutStream.h | 57 | ||||
-rw-r--r-- | rdr/types.h | 33 |
18 files changed, 0 insertions, 1587 deletions
diff --git a/rdr/Exception.h b/rdr/Exception.h deleted file mode 100644 index 49c59d9..0000000 --- a/rdr/Exception.h +++ /dev/null @@ -1,71 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#ifndef __RDR_EXCEPTION_H__ -#define __RDR_EXCEPTION_H__ - -#include <stdio.h> -#include <string.h> - -namespace rdr { - - struct Exception { - enum { len = 256 }; - char str_[len]; - Exception(const char* s=0, const char* e="rdr::Exception") { - str_[0] = 0; - strncat(str_, e, len-1); - if (s) { - strncat(str_, ": ", len-1-strlen(str_)); - strncat(str_, s, len-1-strlen(str_)); - } - } - virtual const char* str() const { return str_; } - }; - - struct SystemException : public Exception { - int err; - SystemException(const char* s, int err_) : err(err_) { - str_[0] = 0; - strncat(str_, "rdr::SystemException: ", len-1); - strncat(str_, s, len-1-strlen(str_)); - strncat(str_, ": ", len-1-strlen(str_)); - strncat(str_, strerror(err), len-1-strlen(str_)); - strncat(str_, " (", len-1-strlen(str_)); - char buf[20]; - sprintf(buf,"%d",err); - strncat(str_, buf, len-1-strlen(str_)); - strncat(str_, ")", len-1-strlen(str_)); - } - }; - - struct TimedOut : public Exception { - TimedOut(const char* s=0) : Exception(s,"rdr::TimedOut") {} - }; - - struct EndOfStream : public Exception { - EndOfStream(const char* s=0) : Exception(s,"rdr::EndOfStream") {} - }; - - struct FrameException : public Exception { - FrameException(const char* s=0) : Exception(s,"rdr::FrameException") {} - }; - -} - -#endif diff --git a/rdr/FdInStream.cxx b/rdr/FdInStream.cxx deleted file mode 100644 index b8248a0..0000000 --- a/rdr/FdInStream.cxx +++ /dev/null @@ -1,251 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#include <stdio.h> -#include <string.h> -#include <errno.h> -#include <sys/types.h> -#ifdef _WIN32 -#include <winsock.h> -#include <sys/timeb.h> -#define read(s,b,l) recv(s,(char*)b,l,0) -#undef errno -#define errno WSAGetLastError() -#else -#include <unistd.h> -#include <sys/time.h> -#endif - -// XXX should use autoconf HAVE_SYS_SELECT_H -#ifdef _AIX -#include <sys/select.h> -#endif - -#include <rdr/FdInStream.h> -#include <rdr/Exception.h> - -extern "C" { - extern void rfbLog(const char *format, ...); -} - -using namespace rdr; - -enum { DEFAULT_BUF_SIZE = 8192, - MIN_BULK_SIZE = 1024 }; - -FdInStream::FdInStream(int fd_, int timeout_, int bufSize_) - : fd(fd_), timeout(timeout_), blockCallback(0), blockCallbackArg(0), - timing(false), timeWaitedIn100us(5), timedKbits(0), - bufSize(bufSize_ ? bufSize_ : DEFAULT_BUF_SIZE), offset(0) -{ - ptr = end = start = new U8[bufSize]; -} - -FdInStream::FdInStream(int fd_, void (*blockCallback_)(void*), - void* blockCallbackArg_, int bufSize_) - : fd(fd_), timeout(0), blockCallback(blockCallback_), - blockCallbackArg(blockCallbackArg_), - timing(false), timeWaitedIn100us(5), timedKbits(0), - bufSize(bufSize_ ? bufSize_ : DEFAULT_BUF_SIZE), offset(0) -{ - ptr = end = start = new U8[bufSize]; -} - -FdInStream::~FdInStream() -{ - delete [] start; -} - - -int FdInStream::pos() -{ - return offset + ptr - start; -} - -void FdInStream::readBytes(void* data, int length) -{ - if (length < MIN_BULK_SIZE) { - InStream::readBytes(data, length); - return; - } - - U8* dataPtr = (U8*)data; - - int n = end - ptr; - if (n > length) n = length; - - memcpy(dataPtr, ptr, n); - dataPtr += n; - length -= n; - ptr += n; - - while (length > 0) { - n = readWithTimeoutOrCallback(dataPtr, length); - dataPtr += n; - length -= n; - offset += n; - } -} - - -int FdInStream::overrun(int itemSize, int nItems) -{ - if (itemSize > bufSize) - throw Exception("FdInStream overrun: max itemSize exceeded"); - - if (end - ptr != 0) - memmove(start, ptr, end - ptr); - - offset += ptr - start; - end -= ptr - start; - ptr = start; - - while (end < start + itemSize) { - int n = readWithTimeoutOrCallback((U8*)end, start + bufSize - end); - end += n; - } - - if (itemSize * nItems > end - ptr) - nItems = (end - ptr) / itemSize; - - return nItems; -} - -int FdInStream::checkReadable(int fd, int timeout) -{ - while (true) { - fd_set rfds; - struct timeval tv; - - tv.tv_sec = timeout / 1000; - tv.tv_usec = (timeout % 1000) * 1000; - - FD_ZERO(&rfds); - FD_SET(fd, &rfds); - int n = select(fd+1, &rfds, 0, 0, &tv); - if (n != -1 || errno != EINTR) - return n; - rfbLog("select returned EINTR\n"); - } -} - -#ifdef _WIN32 -static void gettimeofday(struct timeval* tv, void*) -{ - LARGE_INTEGER counts, countsPerSec; - static double usecPerCount = 0.0; - - if (QueryPerformanceCounter(&counts)) { - if (usecPerCount == 0.0) { - QueryPerformanceFrequency(&countsPerSec); - usecPerCount = 1000000.0 / countsPerSec.QuadPart; - } - - LONGLONG usecs = (LONGLONG)(counts.QuadPart * usecPerCount); - tv->tv_usec = (long)(usecs % 1000000); - tv->tv_sec = (long)(usecs / 1000000); - - } else { - struct timeb tb; - ftime(&tb); - tv->tv_sec = tb.time; - tv->tv_usec = tb.millitm * 1000; - } -} -#endif - -int FdInStream::readWithTimeoutOrCallback(void* buf, int len) -{ - struct timeval before, after; - if (timing) - gettimeofday(&before, 0); - - int n = checkReadable(fd, timeout); - - if (n < 0) throw SystemException("select",errno); - - if (n == 0) { - if (timeout) throw TimedOut(); - if (blockCallback) (*blockCallback)(blockCallbackArg); - } - - while (true) { - n = ::read(fd, buf, len); - if (n != -1 || errno != EINTR) - break; - rfbLog("read returned EINTR\n"); - } - - if (n < 0) throw SystemException("read",errno); - if (n == 0) throw EndOfStream(); - - if (timing) { - gettimeofday(&after, 0); -// rfbLog("%d.%06d\n",(after.tv_sec - before.tv_sec), -// (after.tv_usec - before.tv_usec)); - int newTimeWaited = ((after.tv_sec - before.tv_sec) * 10000 + - (after.tv_usec - before.tv_usec) / 100); - int newKbits = n * 8 / 1000; - -// if (newTimeWaited == 0) { -// rfbLog("new kbps infinite t %d k %d\n", -// newTimeWaited, newKbits); -// } else { -// rfbLog("new kbps %d t %d k %d\n", -// newKbits * 10000 / newTimeWaited, newTimeWaited, newKbits); -// } - - // limit rate to between 10kbit/s and 40Mbit/s - - if (newTimeWaited > newKbits*1000) newTimeWaited = newKbits*1000; - if (newTimeWaited < newKbits/4) newTimeWaited = newKbits/4; - - timeWaitedIn100us += newTimeWaited; - timedKbits += newKbits; - } - - return n; -} - -void FdInStream::startTiming() -{ - timing = true; - - // Carry over up to 1s worth of previous rate for smoothing. - - if (timeWaitedIn100us > 10000) { - timedKbits = timedKbits * 10000 / timeWaitedIn100us; - timeWaitedIn100us = 10000; - } -} - -void FdInStream::stopTiming() -{ - timing = false; - if (timeWaitedIn100us < timedKbits/2) - timeWaitedIn100us = timedKbits/2; // upper limit 20Mbit/s -} - -unsigned int FdInStream::kbitsPerSecond() -{ - // The following calculation will overflow 32-bit arithmetic if we have - // received more than about 50Mbytes (400Mbits) since we started timing, so - // it should be OK for a single RFB update. - - return timedKbits * 10000 / timeWaitedIn100us; -} diff --git a/rdr/FdInStream.h b/rdr/FdInStream.h deleted file mode 100644 index 5a1ed43..0000000 --- a/rdr/FdInStream.h +++ /dev/null @@ -1,72 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// -// FdInStream streams from a file descriptor. -// - -#ifndef __RDR_FDINSTREAM_H__ -#define __RDR_FDINSTREAM_H__ - -#include <rdr/InStream.h> - -namespace rdr { - - class FdInStream : public InStream { - - public: - - FdInStream(int fd, int timeout=0, int bufSize=0); - FdInStream(int fd, void (*blockCallback)(void*), void* blockCallbackArg=0, - int bufSize=0); - virtual ~FdInStream(); - - int getFd() { return fd; } - int pos(); - void readBytes(void* data, int length); - int bytesInBuf() { return end - ptr; } - - void startTiming(); - void stopTiming(); - unsigned int kbitsPerSecond(); - unsigned int timeWaited() { return timeWaitedIn100us; } - - protected: - int overrun(int itemSize, int nItems); - - private: - int checkReadable(int fd, int timeout); - int readWithTimeoutOrCallback(void* buf, int len); - - int fd; - int timeout; - void (*blockCallback)(void*); - void* blockCallbackArg; - - bool timing; - unsigned int timeWaitedIn100us; - unsigned int timedKbits; - - int bufSize; - int offset; - U8* start; - }; - -} // end of namespace rdr - -#endif diff --git a/rdr/FdOutStream.cxx b/rdr/FdOutStream.cxx deleted file mode 100644 index 40e7ac0..0000000 --- a/rdr/FdOutStream.cxx +++ /dev/null @@ -1,113 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#include <stdio.h> -#include <string.h> -#include <errno.h> -#include <sys/types.h> -#ifdef _WIN32 -#include <winsock.h> -#define write(s,b,l) send(s,(const char*)b,l,0) -#undef errno -#define errno WSAGetLastError() -#else -#include <unistd.h> -#include <sys/time.h> -#endif - -#include <rdr/FdOutStream.h> -#include <rdr/Exception.h> - - -using namespace rdr; - -enum { DEFAULT_BUF_SIZE = 16384, - MIN_BULK_SIZE = 1024 }; - -FdOutStream::FdOutStream(int fd_, int bufSize_) - : fd(fd_), bufSize(bufSize_ ? bufSize_ : DEFAULT_BUF_SIZE), offset(0) -{ - ptr = start = new U8[bufSize]; - end = start + bufSize; -} - -FdOutStream::~FdOutStream() -{ - try { - flush(); - } catch (Exception&) { - } - delete [] start; -} - - -void FdOutStream::writeBytes(const void* data, int length) -{ - if (length < MIN_BULK_SIZE) { - OutStream::writeBytes(data, length); - return; - } - - const U8* dataPtr = (const U8*)data; - - flush(); - - while (length > 0) { - int n = write(fd, dataPtr, length); - - if (n < 0) throw SystemException("write",errno); - - length -= n; - dataPtr += n; - offset += n; - } -} - -int FdOutStream::length() -{ - return offset + ptr - start; -} - -void FdOutStream::flush() -{ - U8* sentUpTo = start; - while (sentUpTo < ptr) { - int n = write(fd, (const void*) sentUpTo, ptr - sentUpTo); - - if (n < 0) throw SystemException("write",errno); - - sentUpTo += n; - offset += n; - } - - ptr = start; -} - - -int FdOutStream::overrun(int itemSize, int nItems) -{ - if (itemSize > bufSize) - throw Exception("FdOutStream overrun: max itemSize exceeded"); - - flush(); - - if (itemSize * nItems > end - ptr) - nItems = (end - ptr) / itemSize; - - return nItems; -} diff --git a/rdr/FdOutStream.h b/rdr/FdOutStream.h deleted file mode 100644 index e338852..0000000 --- a/rdr/FdOutStream.h +++ /dev/null @@ -1,53 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// -// FdOutStream streams to a file descriptor. -// - -#ifndef __RDR_FDOUTSTREAM_H__ -#define __RDR_FDOUTSTREAM_H__ - -#include <rdr/OutStream.h> - -namespace rdr { - - class FdOutStream : public OutStream { - - public: - - FdOutStream(int fd, int bufSize=0); - virtual ~FdOutStream(); - - int getFd() { return fd; } - - void flush(); - int length(); - void writeBytes(const void* data, int length); - - private: - int overrun(int itemSize, int nItems); - int fd; - int bufSize; - int offset; - U8* start; - }; - -} - -#endif diff --git a/rdr/FixedMemOutStream.h b/rdr/FixedMemOutStream.h deleted file mode 100644 index 5503505..0000000 --- a/rdr/FixedMemOutStream.h +++ /dev/null @@ -1,52 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// -// A FixedMemOutStream writes to a buffer of a fixed length. -// - -#ifndef __RDR_FIXEDMEMOUTSTREAM_H__ -#define __RDR_FIXEDMEMOUTSTREAM_H__ - -#include <rdr/OutStream.h> -#include <rdr/Exception.h> - -namespace rdr { - - class FixedMemOutStream : public OutStream { - - public: - - FixedMemOutStream(void* buf, int len) { - ptr = start = (U8*)buf; - end = start + len; - } - - int length() { return ptr - start; } - void reposition(int pos) { ptr = start + pos; } - const void* data() { return (const void*)start; } - - private: - - int overrun(int itemSize, int nItems) { throw EndOfStream(); } - U8* start; - }; - -} - -#endif diff --git a/rdr/InStream.cxx b/rdr/InStream.cxx deleted file mode 100644 index b5bf509..0000000 --- a/rdr/InStream.cxx +++ /dev/null @@ -1,35 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#include <rdr/InStream.h> -#include <rdr/Exception.h> - -using namespace rdr; - -U32 InStream::maxStringLength = 65535; - -char* InStream::readString() -{ - U32 len = readU32(); - if (len > maxStringLength) - throw Exception("InStream max string length exceeded"); - char* str = new char[len+1]; - readBytes(str, len); - str[len] = 0; - return str; -} diff --git a/rdr/InStream.h b/rdr/InStream.h deleted file mode 100644 index 2e2159e..0000000 --- a/rdr/InStream.h +++ /dev/null @@ -1,143 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// -// rdr::InStream marshalls data from a buffer stored in RDR (RFB Data -// Representation). -// - -#ifndef __RDR_INSTREAM_H__ -#define __RDR_INSTREAM_H__ - -#include <rdr/types.h> -#include <string.h> // for memcpy - -namespace rdr { - - class InStream { - - public: - - virtual ~InStream() {} - - // check() ensures there is buffer data for at least one item of size - // itemSize bytes. Returns the number of items in the buffer (up to a - // maximum of nItems). - - inline int check(int itemSize, int nItems=1) - { - if (ptr + itemSize * nItems > end) { - if (ptr + itemSize > end) - return overrun(itemSize, nItems); - - nItems = (end - ptr) / itemSize; - } - return nItems; - } - - // readU/SN() methods read unsigned and signed N-bit integers. - - inline U8 readU8() { check(1); return *ptr++; } - inline U16 readU16() { check(2); int b0 = *ptr++; int b1 = *ptr++; - return b0 << 8 | b1; } - inline U32 readU32() { check(4); int b0 = *ptr++; int b1 = *ptr++; - int b2 = *ptr++; int b3 = *ptr++; - return b0 << 24 | b1 << 16 | b2 << 8 | b3; } - - inline S8 readS8() { return (S8) readU8(); } - inline S16 readS16() { return (S16)readU16(); } - inline S32 readS32() { return (S32)readU32(); } - - // readString() reads a string - a U32 length followed by the data. - // Returns a null-terminated string - the caller should delete[] it - // afterwards. - - char* readString(); - - // maxStringLength protects against allocating a huge buffer. Set it - // higher if you need longer strings. - - static U32 maxStringLength; - - inline void skip(int bytes) { - while (bytes > 0) { - int n = check(1, bytes); - ptr += n; - bytes -= n; - } - } - - // readBytes() reads an exact number of bytes. - - virtual void readBytes(void* data, int length) { - U8* dataPtr = (U8*)data; - U8* dataEnd = dataPtr + length; - while (dataPtr < dataEnd) { - int n = check(1, dataEnd - dataPtr); - memcpy(dataPtr, ptr, n); - ptr += n; - dataPtr += n; - } - } - - // readOpaqueN() reads a quantity without byte-swapping. - - inline U8 readOpaque8() { return readU8(); } - inline U16 readOpaque16() { check(2); U16 r; ((U8*)&r)[0] = *ptr++; - ((U8*)&r)[1] = *ptr++; return r; } - inline U32 readOpaque32() { check(4); U32 r; ((U8*)&r)[0] = *ptr++; - ((U8*)&r)[1] = *ptr++; ((U8*)&r)[2] = *ptr++; - ((U8*)&r)[3] = *ptr++; return r; } - inline U32 readOpaque24A() { check(3); U32 r=0; ((U8*)&r)[0] = *ptr++; - ((U8*)&r)[1] = *ptr++; ((U8*)&r)[2] = *ptr++; - return r; } - inline U32 readOpaque24B() { check(3); U32 r=0; ((U8*)&r)[1] = *ptr++; - ((U8*)&r)[2] = *ptr++; ((U8*)&r)[3] = *ptr++; - return r; } - - // pos() returns the position in the stream. - - virtual int pos() = 0; - - // getptr(), getend() and setptr() are "dirty" methods which allow you to - // manipulate the buffer directly. This is useful for a stream which is a - // wrapper around an underlying stream. - - inline const U8* getptr() const { return ptr; } - inline const U8* getend() const { return end; } - inline void setptr(const U8* p) { ptr = p; } - - private: - - // overrun() is implemented by a derived class to cope with buffer overrun. - // It ensures there are at least itemSize bytes of buffer data. Returns - // the number of items in the buffer (up to a maximum of nItems). itemSize - // is supposed to be "small" (a few bytes). - - virtual int overrun(int itemSize, int nItems) = 0; - - protected: - - InStream() {} - const U8* ptr; - const U8* end; - }; - -} - -#endif diff --git a/rdr/MemInStream.h b/rdr/MemInStream.h deleted file mode 100644 index 0167949..0000000 --- a/rdr/MemInStream.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#ifndef __RDR_MEMINSTREAM_H__ -#define __RDR_MEMINSTREAM_H__ - -#include <rdr/InStream.h> -#include <rdr/Exception.h> - -namespace rdr { - - class MemInStream : public InStream { - - public: - - MemInStream(const void* data, int len) { - ptr = start = (const U8*)data; - end = start + len; - } - - int pos() { return ptr - start; } - void reposition(int pos) { ptr = start + pos; } - - private: - - int overrun(int itemSize, int nItems) { throw EndOfStream(); } - const U8* start; - }; - -} - -#endif diff --git a/rdr/MemOutStream.h b/rdr/MemOutStream.h deleted file mode 100644 index 0031388..0000000 --- a/rdr/MemOutStream.h +++ /dev/null @@ -1,82 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// -// A MemOutStream grows as needed when data is written to it. -// - -#ifndef __RDR_MEMOUTSTREAM_H__ -#define __RDR_MEMOUTSTREAM_H__ - -#include <rdr/OutStream.h> - -namespace rdr { - - class MemOutStream : public OutStream { - - public: - - MemOutStream(int len=1024) { - start = ptr = new U8[len]; - end = start + len; - } - - virtual ~MemOutStream() { - delete [] start; - } - - void writeBytes(const void* data, int length) { - check(length); - memcpy(ptr, data, length); - ptr += length; - } - - int length() { return ptr - start; } - void clear() { ptr = start; }; - void reposition(int pos) { ptr = start + pos; } - - // data() returns a pointer to the buffer. - - const void* data() { return (const void*)start; } - - private: - - // overrun() either doubles the buffer or adds enough space for nItems of - // size itemSize bytes. - - int overrun(int itemSize, int nItems) { - int len = ptr - start + itemSize * nItems; - if (len < (end - start) * 2) - len = (end - start) * 2; - - U8* newStart = new U8[len]; - memcpy(newStart, start, ptr - start); - ptr = newStart + (ptr - start); - delete [] start; - start = newStart; - end = newStart + len; - - return nItems; - } - - U8* start; - }; - -} - -#endif diff --git a/rdr/NullOutStream.cxx b/rdr/NullOutStream.cxx deleted file mode 100644 index aae999d..0000000 --- a/rdr/NullOutStream.cxx +++ /dev/null @@ -1,60 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#include <rdr/NullOutStream.h> -#include <rdr/Exception.h> - -using namespace rdr; - -static const int bufferSize = 1024; - -NullOutStream::NullOutStream() - : offset(0) -{ - start = ptr = new U8[bufferSize]; - end = start + bufferSize; -} - -NullOutStream::~NullOutStream() -{ - delete [] start; -} - -int NullOutStream::length() -{ - return offset + ptr - start; -} - -void NullOutStream::writeBytes(const void* data, int length) -{ - offset += length; -} - -int NullOutStream::overrun(int itemSize, int nItems) -{ - if (itemSize > bufferSize) - throw Exception("NullOutStream overrun: max itemSize exceeded"); - - offset += ptr - start; - ptr = start; - - if (itemSize * nItems > end - ptr) - nItems = (end - ptr) / itemSize; - - return nItems; -} diff --git a/rdr/NullOutStream.h b/rdr/NullOutStream.h deleted file mode 100644 index 15c588b..0000000 --- a/rdr/NullOutStream.h +++ /dev/null @@ -1,42 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#ifndef __RDR_NULLOUTSTREAM_H__ -#define __RDR_NULLOUTSTREAM_H__ - -#include <rdr/OutStream.h> - -namespace rdr { - - class NullOutStream : public OutStream { - - public: - NullOutStream(); - virtual ~NullOutStream(); - int length(); - void writeBytes(const void* data, int length); - - private: - int overrun(int itemSize, int nItems); - int offset; - U8* start; - }; - -} - -#endif diff --git a/rdr/OutStream.h b/rdr/OutStream.h deleted file mode 100644 index 9aae80c..0000000 --- a/rdr/OutStream.h +++ /dev/null @@ -1,152 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// -// rdr::OutStream marshalls data into a buffer stored in RDR (RFB Data -// Representation). -// - -#ifndef __RDR_OUTSTREAM_H__ -#define __RDR_OUTSTREAM_H__ - -#include <rdr/types.h> -#include <string.h> // for memcpy - -namespace rdr { - - class OutStream { - - protected: - - OutStream() {} - - public: - - virtual ~OutStream() {} - - // check() ensures there is buffer space for at least one item of size - // itemSize bytes. Returns the number of items which fit (up to a maximum - // of nItems). - - inline int check(int itemSize, int nItems=1) - { - if (ptr + itemSize * nItems > end) { - if (ptr + itemSize > end) - return overrun(itemSize, nItems); - - nItems = (end - ptr) / itemSize; - } - return nItems; - } - - // writeU/SN() methods write unsigned and signed N-bit integers. - - inline void writeU8( U8 u) { check(1); *ptr++ = u; } - inline void writeU16(U16 u) { check(2); *ptr++ = u >> 8; *ptr++ = (U8)u; } - inline void writeU32(U32 u) { check(4); *ptr++ = u >> 24; *ptr++ = u >> 16; - *ptr++ = u >> 8; *ptr++ = u; } - - inline void writeS8( S8 s) { writeU8((U8)s); } - inline void writeS16(S16 s) { writeU16((U16)s); } - inline void writeS32(S32 s) { writeU32((U32)s); } - - // writeString() writes a string - a U32 length followed by the data. The - // given string should be null-terminated (but the terminating null is not - // written to the stream). - - inline void writeString(const char* str) { - U32 len = strlen(str); - writeU32(len); - writeBytes(str, len); - } - - inline void pad(int bytes) { - while (bytes-- > 0) writeU8(0); - } - - inline void skip(int bytes) { - while (bytes > 0) { - int n = check(1, bytes); - ptr += n; - bytes -= n; - } - } - - // writeBytes() writes an exact number of bytes. - - virtual void writeBytes(const void* data, int length) { - const U8* dataPtr = (const U8*)data; - const U8* dataEnd = dataPtr + length; - while (dataPtr < dataEnd) { - int n = check(1, dataEnd - dataPtr); - memcpy(ptr, dataPtr, n); - ptr += n; - dataPtr += n; - } - } - - // writeOpaqueN() writes a quantity without byte-swapping. - - inline void writeOpaque8( U8 u) { writeU8(u); } - inline void writeOpaque16(U16 u) { check(2); *ptr++ = ((U8*)&u)[0]; - *ptr++ = ((U8*)&u)[1]; } - inline void writeOpaque32(U32 u) { check(4); *ptr++ = ((U8*)&u)[0]; - *ptr++ = ((U8*)&u)[1]; - *ptr++ = ((U8*)&u)[2]; - *ptr++ = ((U8*)&u)[3]; } - inline void writeOpaque24A(U32 u) { check(3); *ptr++ = ((U8*)&u)[0]; - *ptr++ = ((U8*)&u)[1]; - *ptr++ = ((U8*)&u)[2]; } - inline void writeOpaque24B(U32 u) { check(3); *ptr++ = ((U8*)&u)[1]; - *ptr++ = ((U8*)&u)[2]; - *ptr++ = ((U8*)&u)[3]; } - - // length() returns the length of the stream. - - virtual int length() = 0; - - // flush() requests that the stream be flushed. - - virtual void flush() {} - - // getptr(), getend() and setptr() are "dirty" methods which allow you to - // manipulate the buffer directly. This is useful for a stream which is a - // wrapper around an underlying stream. - - inline U8* getptr() { return ptr; } - inline U8* getend() { return end; } - inline void setptr(U8* p) { ptr = p; } - - private: - - // overrun() is implemented by a derived class to cope with buffer overrun. - // It ensures there are at least itemSize bytes of buffer space. Returns - // the number of items which fit (up to a maximum of nItems). itemSize is - // supposed to be "small" (a few bytes). - - virtual int overrun(int itemSize, int nItems) = 0; - - protected: - - U8* ptr; - U8* end; - }; - -} - -#endif diff --git a/rdr/ZlibInStream.cxx b/rdr/ZlibInStream.cxx deleted file mode 100644 index d4d1f1f..0000000 --- a/rdr/ZlibInStream.cxx +++ /dev/null @@ -1,121 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#include <rdr/ZlibInStream.h> -#include <rdr/Exception.h> -#include <zlib.h> - -using namespace rdr; - -enum { DEFAULT_BUF_SIZE = 16384 }; - -ZlibInStream::ZlibInStream(int bufSize_) - : underlying(0), bufSize(bufSize_ ? bufSize_ : DEFAULT_BUF_SIZE), offset(0), - bytesIn(0) -{ - zs = new z_stream; - zs->zalloc = Z_NULL; - zs->zfree = Z_NULL; - zs->opaque = Z_NULL; - zs->next_in = Z_NULL; - zs->avail_in = 0; - if (inflateInit(zs) != Z_OK) { - delete zs; - throw Exception("ZlibInStream: inflateInit failed"); - } - ptr = end = start = new U8[bufSize]; -} - -ZlibInStream::~ZlibInStream() -{ - delete [] start; - inflateEnd(zs); - delete zs; -} - -void ZlibInStream::setUnderlying(InStream* is, int bytesIn_) -{ - underlying = is; - bytesIn = bytesIn_; - ptr = end = start; -} - -int ZlibInStream::pos() -{ - return offset + ptr - start; -} - -void ZlibInStream::reset() -{ - ptr = end = start; - if (!underlying) return; - - while (bytesIn > 0) { - decompress(); - end = start; // throw away any data - } - underlying = 0; -} - -int ZlibInStream::overrun(int itemSize, int nItems) -{ - if (itemSize > bufSize) - throw Exception("ZlibInStream overrun: max itemSize exceeded"); - if (!underlying) - throw Exception("ZlibInStream overrun: no underlying stream"); - - if (end - ptr != 0) - memmove(start, ptr, end - ptr); - - offset += ptr - start; - end -= ptr - start; - ptr = start; - - while (end - ptr < itemSize) { - decompress(); - } - - if (itemSize * nItems > end - ptr) - nItems = (end - ptr) / itemSize; - - return nItems; -} - -// decompress() calls the decompressor once. Note that this won't necessarily -// generate any output data - it may just consume some input data. - -void ZlibInStream::decompress() -{ - zs->next_out = (U8*)end; - zs->avail_out = start + bufSize - end; - - underlying->check(1); - zs->next_in = (U8*)underlying->getptr(); - zs->avail_in = underlying->getend() - underlying->getptr(); - if ((int)zs->avail_in > bytesIn) - zs->avail_in = bytesIn; - - int rc = inflate(zs, Z_SYNC_FLUSH); - if (rc != Z_OK) { - throw Exception("ZlibInStream: inflate failed"); - } - - bytesIn -= zs->next_in - underlying->getptr(); - end = zs->next_out; - underlying->setptr(zs->next_in); -} diff --git a/rdr/ZlibInStream.h b/rdr/ZlibInStream.h deleted file mode 100644 index 14ad6f0..0000000 --- a/rdr/ZlibInStream.h +++ /dev/null @@ -1,59 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// -// ZlibInStream streams from a compressed data stream ("underlying"), -// decompressing with zlib on the fly. -// - -#ifndef __RDR_ZLIBINSTREAM_H__ -#define __RDR_ZLIBINSTREAM_H__ - -#include <rdr/InStream.h> - -struct z_stream_s; - -namespace rdr { - - class ZlibInStream : public InStream { - - public: - - ZlibInStream(int bufSize=0); - virtual ~ZlibInStream(); - - void setUnderlying(InStream* is, int bytesIn); - void reset(); - int pos(); - - private: - - int overrun(int itemSize, int nItems); - void decompress(); - - InStream* underlying; - int bufSize; - int offset; - z_stream_s* zs; - int bytesIn; - U8* start; - }; - -} // end of namespace rdr - -#endif diff --git a/rdr/ZlibOutStream.cxx b/rdr/ZlibOutStream.cxx deleted file mode 100644 index e324998..0000000 --- a/rdr/ZlibOutStream.cxx +++ /dev/null @@ -1,144 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#include <rdr/ZlibOutStream.h> -#include <rdr/Exception.h> -#include <zlib.h> - -extern "C" { - extern void rfbLog(const char *format, ...); -} - -using namespace rdr; - -enum { DEFAULT_BUF_SIZE = 16384 }; - -ZlibOutStream::ZlibOutStream(OutStream* os, int bufSize_) - : underlying(os), bufSize(bufSize_ ? bufSize_ : DEFAULT_BUF_SIZE), offset(0) -{ - zs = new z_stream; - zs->zalloc = Z_NULL; - zs->zfree = Z_NULL; - zs->opaque = Z_NULL; - if (deflateInit(zs, Z_DEFAULT_COMPRESSION) != Z_OK) { - delete zs; - throw Exception("ZlibOutStream: deflateInit failed"); - } - ptr = start = new U8[bufSize]; - end = start + bufSize; -} - -ZlibOutStream::~ZlibOutStream() -{ - try { - flush(); - } catch (Exception&) { - } - delete [] start; - deflateEnd(zs); - delete zs; -} - -void ZlibOutStream::setUnderlying(OutStream* os) -{ - underlying = os; -} - -int ZlibOutStream::length() -{ - return offset + ptr - start; -} - -void ZlibOutStream::flush() -{ - zs->next_in = start; - zs->avail_in = ptr - start; - -// rfbLog("zos flush: avail_in %d\n",zs->avail_in); - - while (zs->avail_in != 0) { - - do { - underlying->check(1); - zs->next_out = underlying->getptr(); - zs->avail_out = underlying->getend() - underlying->getptr(); - -// rfbLog("zos flush: calling deflate, avail_in %d, avail_out %d\n", -// zs->avail_in,zs->avail_out); - int rc = deflate(zs, Z_SYNC_FLUSH); - if (rc != Z_OK) throw Exception("ZlibOutStream: deflate failed"); - -// rfbLog("zos flush: after deflate: %d bytes\n", -// zs->next_out-underlying->getptr()); - - underlying->setptr(zs->next_out); - } while (zs->avail_out == 0); - } - - offset += ptr - start; - ptr = start; -} - -int ZlibOutStream::overrun(int itemSize, int nItems) -{ -// rfbLog("ZlibOutStream overrun\n"); - - if (itemSize > bufSize) - throw Exception("ZlibOutStream overrun: max itemSize exceeded"); - - while (end - ptr < itemSize) { - zs->next_in = start; - zs->avail_in = ptr - start; - - do { - underlying->check(1); - zs->next_out = underlying->getptr(); - zs->avail_out = underlying->getend() - underlying->getptr(); - -// rfbLog("zos overrun: calling deflate, avail_in %d, avail_out %d\n", -// zs->avail_in,zs->avail_out); - - int rc = deflate(zs, 0); - if (rc != Z_OK) throw Exception("ZlibOutStream: deflate failed"); - -// rfbLog("zos overrun: after deflate: %d bytes\n", -// zs->next_out-underlying->getptr()); - - underlying->setptr(zs->next_out); - } while (zs->avail_out == 0); - - // output buffer not full - - if (zs->avail_in == 0) { - offset += ptr - start; - ptr = start; - } else { - // but didn't consume all the data? try shifting what's left to the - // start of the buffer. - rfbLog("z out buf not full, but in data not consumed\n"); - memmove(start, zs->next_in, ptr - zs->next_in); - offset += zs->next_in - start; - ptr -= zs->next_in - start; - } - } - - if (itemSize * nItems > end - ptr) - nItems = (end - ptr) / itemSize; - - return nItems; -} diff --git a/rdr/ZlibOutStream.h b/rdr/ZlibOutStream.h deleted file mode 100644 index 72f5239..0000000 --- a/rdr/ZlibOutStream.h +++ /dev/null @@ -1,57 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -// -// ZlibOutStream streams to a compressed data stream (underlying), compressing -// with zlib on the fly. -// - -#ifndef __RDR_ZLIBOUTSTREAM_H__ -#define __RDR_ZLIBOUTSTREAM_H__ - -#include <rdr/OutStream.h> - -struct z_stream_s; - -namespace rdr { - - class ZlibOutStream : public OutStream { - - public: - - ZlibOutStream(OutStream* os=0, int bufSize=0); - virtual ~ZlibOutStream(); - - void setUnderlying(OutStream* os); - void flush(); - int length(); - - private: - - int overrun(int itemSize, int nItems); - - OutStream* underlying; - int bufSize; - int offset; - z_stream_s* zs; - U8* start; - }; - -} // end of namespace rdr - -#endif diff --git a/rdr/types.h b/rdr/types.h deleted file mode 100644 index 00b5c40..0000000 --- a/rdr/types.h +++ /dev/null @@ -1,33 +0,0 @@ -// -// Copyright (C) 2002 RealVNC Ltd. All Rights Reserved. -// -// This is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; either version 2 of the License, or -// (at your option) any later version. -// -// This software is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this software; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -// USA. - -#ifndef __RDR_TYPES_H__ -#define __RDR_TYPES_H__ - -namespace rdr { - - typedef unsigned char U8; - typedef unsigned short U16; - typedef unsigned int U32; - typedef signed char S8; - typedef signed short S16; - typedef signed int S32; - -} // end of namespace rdr - -#endif |