diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-05-23 23:12:32 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-05-23 23:12:32 +0900 |
| commit | b0799b6e4627ca7ad483c49e04f17bd40c8feae0 (patch) | |
| tree | 179a13dc8bc9377bd8c7423905ffa827ef2403f4 /src/GZipFile.h | |
| parent | 6c0fa43fa583ad41a31a0191de6783cb856da55b (diff) | |
Introduce IOFile abstract class to refactor BufferedFile and GZipFile
IOFile provides the same interface of old BufferedFile. It provides
extension points as pure virtual functions. Those functions are
implemented by 2 concrete subclasses: BufferedFile and GZipFile.
Diffstat (limited to 'src/GZipFile.h')
| -rw-r--r-- | src/GZipFile.h | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/GZipFile.h b/src/GZipFile.h index 4e612624..f02c8df6 100644 --- a/src/GZipFile.h +++ b/src/GZipFile.h @@ -38,20 +38,25 @@ #include <zlib.h> -#include "BufferedFile.h" +#include "IOFile.h" namespace aria2 { -class GZipFile: public BufferedFile { +class GZipFile: public IOFile { public: GZipFile(const char* filename, const char* mode); virtual ~GZipFile(); - virtual int close(); - virtual size_t read(void* ptr, size_t count); - virtual size_t write(const void* ptr, size_t count); - virtual char* gets(char* s, int size); - virtual int vprintf(const char* format, va_list va); - virtual int flush(); +protected: + virtual size_t onRead(void* ptr, size_t count); + virtual size_t onWrite(const void* ptr, size_t count); + virtual char* onGets(char* s, int size); + virtual int onVprintf(const char* format, va_list va); + virtual int onFlush(); + virtual int onClose(); + virtual bool onSupportsColor(); + virtual bool isError() const; + virtual bool isEOF() const; + virtual bool isOpen() const; private: // Don't allow copying GZipFile(const GZipFile&); @@ -62,10 +67,6 @@ private: size_t buflen_; char* buf_; -protected: - virtual bool isError() const; - virtual bool isEOF() const { return gzeof(fp_); } - virtual bool isOpen() const { return open_; } }; } // namespace aria2 |
