• Skip to content
  • Skip to link menu
KDE 4.0 API Reference
  • KDE API Reference
  • kdenetwork
  • Sitemap
  • Contact Us
 

kopete/protocols/messenger/libpapillon

bytestream.cpp

Go to the documentation of this file.
00001 /*
00002  * bytestream.cpp - base class for bytestreams
00003  * Copyright (C) 2003  Justin Karneges
00004  *
00005  * This library is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU Lesser General Public
00007  * License as published by the Free Software Foundation; either
00008  * version 2.1 of the License, or (at your option) any later version.
00009  *
00010  * This library is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  * Lesser General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU Lesser General Public
00016  * License along with this library; if not, write to the Free Software
00017  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00018  *
00019  */
00020 
00021 #include "Papillon/Base/ByteStream"
00022 
00023 // CS_NAMESPACE_BEGIN
00024 
00057 
00058 namespace Papillon
00059 {
00060 
00061 class ByteStream::Private
00062 {
00063 public:
00064     Private() {}
00065 
00066     QByteArray readBuf, writeBuf;
00067 };
00068 
00071 ByteStream::ByteStream(QObject *parent)
00072 :QObject(parent)
00073 {
00074     d = new Private;
00075 }
00076 
00079 ByteStream::~ByteStream()
00080 {
00081     delete d;
00082 }
00083 
00086 bool ByteStream::isOpen() const
00087 {
00088     return false;
00089 }
00090 
00096 void ByteStream::close()
00097 {
00098 }
00099 
00102 void ByteStream::write(const QByteArray &a)
00103 {
00104     if(!isOpen())
00105         return;
00106 
00107     bool doWrite = bytesToWrite() == 0 ? true: false;
00108     appendWrite(a);
00109     if(doWrite)
00110         tryWrite();
00111 }
00112 
00116 QByteArray ByteStream::read(int bytes)
00117 {
00118     return takeRead(bytes);
00119 }
00120 
00123 int ByteStream::bytesAvailable() const
00124 {
00125     return d->readBuf.size();
00126 }
00127 
00130 int ByteStream::bytesToWrite() const
00131 {
00132     return d->writeBuf.size();
00133 }
00134 
00137 void ByteStream::clearReadBuffer()
00138 {
00139     d->readBuf.resize(0);
00140 }
00141 
00144 void ByteStream::clearWriteBuffer()
00145 {
00146     d->writeBuf.resize(0);
00147 }
00148 
00151 void ByteStream::appendRead(const QByteArray &block)
00152 {
00153     appendArray(&d->readBuf, block);
00154 }
00155 
00158 void ByteStream::appendWrite(const QByteArray &block)
00159 {
00160     appendArray(&d->writeBuf, block);
00161 }
00162 
00167 QByteArray ByteStream::takeRead(int size, bool del)
00168 {
00169     return takeArray(&d->readBuf, size, del);
00170 }
00171 
00176 QByteArray ByteStream::takeWrite(int size, bool del)
00177 {
00178     return takeArray(&d->writeBuf, size, del);
00179 }
00180 
00183 QByteArray & ByteStream::readBuf()
00184 {
00185     return d->readBuf;
00186 }
00187 
00190 QByteArray & ByteStream::writeBuf()
00191 {
00192     return d->writeBuf;
00193 }
00194 
00198 int ByteStream::tryWrite()
00199 {
00200     return -1;
00201 }
00202 
00205 void ByteStream::appendArray(QByteArray *a, const QByteArray &b)
00206 {
00207     int oldsize = a->size();
00208     a->resize(oldsize + b.size());
00209     memcpy(a->data() + oldsize, b.data(), b.size());
00210 }
00211 
00216 QByteArray ByteStream::takeArray(QByteArray *from, int size, bool del)
00217 {
00218     QByteArray a;
00219     if(size == 0) {
00220         a = *from;
00221         if(del)
00222             from->resize(0);
00223     }
00224     else {
00225         if(size > (int)from->size())
00226             size = from->size();
00227         a.resize(size);
00228         char *r = from->data();
00229         memcpy(a.data(), r, size);
00230         if(del) {
00231             int newsize = from->size()-size;
00232             memmove(r, r+size, newsize);
00233             from->resize(newsize);
00234         }
00235     }
00236     return a;
00237 }
00238 /*
00239     void connectionClosed();
00240     void delayedCloseFinished();
00241     void readyRead();
00242     void bytesWritten(int);
00243     void error(int);
00244 
00247 
00251 
00254 
00258 
00262 */
00263 
00264 }
00265 // CS_NAMESPACE_END
00266 
00267 #include "bytestream.moc"

kopete/protocols/messenger/libpapillon

Skip menu "kopete/protocols/messenger/libpapillon"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdenetwork

Skip menu "kdenetwork"
  • kget
  • kopete
  •   kopete
  •   libkopete
  •       libpapillon
  • krfb
Generated for kdenetwork by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal