00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef CSTREAMFILTER_H
00016 #define CSTREAMFILTER_H
00017
00018 #include "IStream.h"
00019
00021
00025 class CStreamFilter : public IStream {
00026 public:
00032 CStreamFilter(IStream* stream, bool adoptStream = true);
00033 ~CStreamFilter();
00034
00035
00036
00037
00038 virtual void close();
00039 virtual UInt32 read(void* buffer, UInt32 n);
00040 virtual void write(const void* buffer, UInt32 n);
00041 virtual void flush();
00042 virtual void shutdownInput();
00043 virtual void shutdownOutput();
00044 virtual void* getEventTarget() const;
00045 virtual bool isReady() const;
00046 virtual UInt32 getSize() const;
00047
00048 protected:
00050
00053 IStream* getStream() const;
00054
00056
00060 virtual void filterEvent(const CEvent&);
00061
00062 private:
00063 void handleUpstreamEvent(const CEvent&, void*);
00064
00065 private:
00066 IStream* m_stream;
00067 bool m_adopted;
00068 };
00069
00070 #endif