//
//     Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
//     may also apply


//                 Generated by preSip
//            module tdecore  version KDE 3.5.3


// This software 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 library; see the file COPYING.
// If not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.


class TDEBufferedIO : KAsyncIO
{
%TypeHeaderCode
#include <kbufferedio.h>
%End


protected:
                         TDEBufferedIO ();

public:

    enum closeModes
    {
        availRead, 
        dirtyWrite, 
        involuntary, 
        delayed, 
        closedNow
    };

    virtual void         closeNow ()  = 0;
    virtual bool         setBufferSize (int, int = -2);
    virtual int          bytesAvailable () const;
    virtual int          waitForMore (int)  = 0;
    virtual int          bytesToWrite () const;
    virtual bool         canReadLine () const;
    virtual int          peekBlock (char*, uint)  = 0;
    virtual int          unreadBlock (const char*, uint);

signals:
    void                 bytesWritten (int);
    void                 closed (int);

protected:
    virtual uint         consumeReadBuffer (uint, char*, bool = 1);
    virtual void         consumeWriteBuffer (uint);
    virtual uint         feedReadBuffer (uint, const char*, bool = 0);
    virtual uint         feedWriteBuffer (uint, const char*);
    virtual uint         readBufferSize () const;
    virtual uint         writeBufferSize () const;

protected:
//igx     virtual void         virtual_hook (int, void*);

};  // class TDEBufferedIO

