kopete/protocols/messenger/libpapillon
bytestream.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef CS_BYTESTREAM_H
00022 #define CS_BYTESTREAM_H
00023
00024 #include <Papillon/Macros>
00025
00026 #include <QtCore/QObject>
00027 #include <QtCore/QByteArray>
00028
00029
00030
00031 namespace Papillon
00032 {
00033
00034
00035 class PAPILLON_EXPORT ByteStream : public QObject
00036 {
00037 Q_OBJECT
00038 public:
00039 enum Error { ErrRead, ErrWrite, ErrCustom = 10 };
00040 ByteStream(QObject *parent=0);
00041 virtual ~ByteStream()=0;
00042
00043 virtual bool isOpen() const;
00044 virtual void close();
00045 virtual void write(const QByteArray &);
00046 virtual QByteArray read(int bytes=0);
00047 virtual int bytesAvailable() const;
00048 virtual int bytesToWrite() const;
00049
00050 static void appendArray(QByteArray *a, const QByteArray &b);
00051 static QByteArray takeArray(QByteArray *from, int size=0, bool del=true);
00052
00053 signals:
00054 void connectionClosed();
00055 void delayedCloseFinished();
00056 void readyRead();
00057 void bytesWritten(int);
00058 void error(int);
00059
00060 protected:
00061 void clearReadBuffer();
00062 void clearWriteBuffer();
00063 void appendRead(const QByteArray &);
00064 void appendWrite(const QByteArray &);
00065 QByteArray takeRead(int size=0, bool del=true);
00066 QByteArray takeWrite(int size=0, bool del=true);
00067 QByteArray & readBuf();
00068 QByteArray & writeBuf();
00069 virtual int tryWrite();
00070
00071 private:
00073 class Private;
00074 Private *d;
00076 };
00077
00078 }
00079
00080
00081
00082 #endif