summaryrefslogtreecommitdiff
path: root/src/GZipFile.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-05-23 23:12:32 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-05-23 23:12:32 +0900
commitb0799b6e4627ca7ad483c49e04f17bd40c8feae0 (patch)
tree179a13dc8bc9377bd8c7423905ffa827ef2403f4 /src/GZipFile.h
parent6c0fa43fa583ad41a31a0191de6783cb856da55b (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.h25
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