kdecore Library API Documentation

kbufferedio.h

00001 /* 00002 * This file is part of the KDE libraries 00003 * Copyright (C) 2001 Thiago Macieira <thiago.macieira@kdemail.net> 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Library General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2 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 * Library General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Library General Public License 00016 * along with this library; see the file COPYING.LIB. If not, write to 00017 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00018 * Boston, MA 02111-1307, USA. 00019 */ 00020 00021 #ifndef KBUFFEREDIO_H 00022 #define KBUFFEREDIO_H 00023 00024 #include <qcstring.h> 00025 #include <qptrlist.h> 00026 #include "kasyncio.h" 00027 00028 class KBufferedIOPrivate; 00056 class KDECORE_EXPORT KBufferedIO: public KAsyncIO 00057 { 00058 Q_OBJECT 00059 00060 protected: 00061 // no default public constructor 00062 KBufferedIO(); 00063 00064 public: 00068 enum closeModes 00069 { 00070 availRead = 0x01, 00071 dirtyWrite = 0x02, 00072 involuntary = 0x10, 00073 delayed = 0x20, 00074 closedNow = 0x40 00075 }; 00076 00081 virtual ~KBufferedIO(); 00082 00091 virtual void closeNow() = 0; 00092 00114 virtual bool setBufferSize(int rsize, int wsize = -2); 00115 00120 virtual int bytesAvailable() const; 00121 00128 virtual int waitForMore(int msec) = 0; 00129 00134 virtual int bytesToWrite() const; 00135 00144 virtual bool canReadLine() const; 00145 00146 // readBlock, peekBlock and writeBlock are not defined in this class (thus, left 00147 // pure virtual) because this does not mean only reading and writing 00148 // to the buffers. It may be necessary to do I/O to complete the 00149 // transaction (e.g., user wants to read more than is in the buffer). 00150 // Reading and writing to the buffer are available for access through 00151 // protected member functions 00152 00165 virtual int peekBlock(char *data, uint maxlen) = 0; 00166 00179 virtual int unreadBlock(const char *data, uint len); 00180 00181 signals: 00186 void bytesWritten(int nbytes); 00187 00188 // There is no read signal here. We use the readyRead signal inherited 00189 // from KAsyncIO for that purpose 00190 00205 void closed(int state); 00206 00207 protected: 00212 QPtrList<QByteArray> inBuf; 00213 00218 QPtrList<QByteArray> outBuf; 00219 00220 unsigned inBufIndex, outBufIndex; 00221 00232 virtual unsigned consumeReadBuffer(unsigned nbytes, char *destbuffer, bool discard = true); 00233 00245 virtual void consumeWriteBuffer(unsigned nbytes); 00246 00258 virtual unsigned feedReadBuffer(unsigned nbytes, const char *buffer, bool atBeginning = false); 00259 00268 virtual unsigned feedWriteBuffer(unsigned nbytes, const char *buffer); 00269 00274 virtual unsigned readBufferSize() const; 00275 00280 virtual unsigned writeBufferSize() const; 00281 00282 protected: 00283 virtual void virtual_hook( int id, void* data ); 00284 private: 00285 KBufferedIOPrivate *d; 00286 }; 00287 00288 #endif // KBUFFEREDIO_H
KDE Logo
This file is part of the documentation for kdecore Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Apr 12 22:47:30 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003