kdecore Library API Documentation

kbufferedio.h

00001 /* 00002 * This file is part of the KDE libraries 00003 * Copyright (C) 2001 Thiago Macieira <thiagom@mail.com> 00004 * 00005 * $Id: kbufferedio.h,v 1.12 2003/08/16 19:44:57 coolo Exp $ 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Library General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Library General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Library General Public License 00018 * along with this library; see the file COPYING.LIB. If not, write to 00019 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00020 * Boston, MA 02111-1307, USA. 00021 */ 00022 00023 #ifndef KBUFFEREDIO_H 00024 #define KBUFFEREDIO_H 00025 00026 #include <qcstring.h> 00027 #include <qptrlist.h> 00028 #include "kasyncio.h" 00029 00030 class KBufferedIOPrivate; 00059 class KBufferedIO: public KAsyncIO 00060 { 00061 Q_OBJECT 00062 00063 protected: 00064 // no default public constructor 00065 KBufferedIO(); 00066 00067 public: 00071 enum closeModes 00072 { 00073 availRead = 0x01, 00074 dirtyWrite = 0x02, 00075 involuntary = 0x10, 00076 delayed = 0x20, 00077 closedNow = 0x40 00078 }; 00079 00084 virtual ~KBufferedIO(); 00085 00094 virtual void closeNow() = 0; 00095 00117 virtual bool setBufferSize(int rsize, int wsize = -2); 00118 00123 virtual int bytesAvailable() const; 00124 00131 virtual int waitForMore(int msec) = 0; 00132 00137 virtual int bytesToWrite() const; 00138 00147 virtual bool canReadLine() const; 00148 00149 // readBlock, peekBlock and writeBlock are not defined in this class (thus, left 00150 // pure virtual) because this does not mean only reading and writing 00151 // to the buffers. It may be necessary to do I/O to complete the 00152 // transaction (e.g., user wants to read more than is in the buffer). 00153 // Reading and writing to the buffer are available for access through 00154 // protected member functions 00155 00168 virtual int peekBlock(char *data, uint maxlen) = 0; 00169 00182 virtual int unreadBlock(const char *data, uint len); 00183 00184 signals: 00189 void bytesWritten(int nbytes); 00190 00191 // There is no read signal here. We use the readyRead signal inherited 00192 // from KAsyncIO for that purpose 00193 00208 void closed(int state); 00209 00210 protected: 00215 QPtrList<QByteArray> inBuf; 00216 00221 QPtrList<QByteArray> outBuf; 00222 00223 unsigned inBufIndex, outBufIndex; 00224 00235 virtual unsigned consumeReadBuffer(unsigned nbytes, char *destbuffer, bool discard = true); 00236 00248 virtual void consumeWriteBuffer(unsigned nbytes); 00249 00261 virtual unsigned feedReadBuffer(unsigned nbytes, const char *buffer, bool atBeginning = false); 00262 00271 virtual unsigned feedWriteBuffer(unsigned nbytes, const char *buffer); 00272 00277 virtual unsigned readBufferSize() const; 00278 00283 virtual unsigned writeBufferSize() const; 00284 00285 protected: 00286 virtual void virtual_hook( int id, void* data ); 00287 private: 00288 KBufferedIOPrivate *d; 00289 }; 00290 00291 #endif // KBUFFEREDIO_H
KDE Logo
This file is part of the documentation for kdecore Library Version 3.2.3.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 16 17:21:40 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003