/* * The Unix Channel * * by Michel Beaudouin-Lafon * * Copyright 1990-1997 * Laboratoire de Recherche en Informatique (LRI) * * Buffered streams * * $Id$ * $CurLog$ */ #ifndef BufStream_H_ #define BufStream_H_ #include "Stream.h" #include "MsgBuffer.h" class UchBufStream : public UchStream { protected: UchMsgBuffer InBuffer; UchMsgBuffer OutBuffer; int OutSize; bool Sync; UchBufStream (const UchBufStream&); int ReadInput (); void HandleWrite (); void WriteLong (lword); void WriteShort (sword); void WriteByte (byte); void WriteChar (char); void WriteString (const char*); void WriteBuf (const byte*, int); bool ReadLong (lword&); bool ReadShort (sword&); bool ReadByte (byte&); bool ReadChar (char&); int ReadString (char*, int); int ReadString (CcuString&); bool ReadBuf (byte*, int); public: UchBufStream (UchAddress* = 0, UchAddress* = 0); ~UchBufStream (); void InputBuffer (int min, int grow, int max); void OutputBuffer (int min, int grow, int max); inline bool GetSyncMode () { return Sync; } inline void SetSyncMode (bool s) { Sync = s; Flush (); } inline void FlushSize (int n) { OutSize = n; } virtual void Flush (); virtual void Closing (bool); }; #endif /* BufStream_H_ */