From b0799b6e4627ca7ad483c49e04f17bd40c8feae0 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 23 May 2013 23:12:32 +0900 Subject: 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. --- src/GZipFile.cc | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'src/GZipFile.cc') diff --git a/src/GZipFile.cc b/src/GZipFile.cc index b3662227..f7685cc9 100644 --- a/src/GZipFile.cc +++ b/src/GZipFile.cc @@ -44,7 +44,7 @@ namespace aria2 { GZipFile::GZipFile(const char* filename, const char* mode) - : BufferedFile(0), fp_(0), open_(false), + : fp_(0), open_(false), buflen_(1024), buf_(reinterpret_cast(malloc(buflen_))) { FILE* fp = @@ -81,7 +81,7 @@ GZipFile::~GZipFile() free(buf_); } -int GZipFile::close() +int GZipFile::onClose() { if (open_) { open_ = false; @@ -90,6 +90,11 @@ int GZipFile::close() return 0; } +bool GZipFile::onSupportsColor() +{ + return false; +} + bool GZipFile::isError() const { int rv = 0; @@ -97,7 +102,17 @@ bool GZipFile::isError() const return (e != 0 && *e != 0) || rv != 0; } -size_t GZipFile::read(void* ptr, size_t count) +bool GZipFile::isEOF() const +{ + return gzeof(fp_); +} + +bool GZipFile::isOpen() const +{ + return open_; +} + +size_t GZipFile::onRead(void* ptr, size_t count) { char *data = reinterpret_cast(ptr); size_t read = 0; @@ -114,7 +129,7 @@ size_t GZipFile::read(void* ptr, size_t count) return read; } -size_t GZipFile::write(const void* ptr, size_t count) +size_t GZipFile::onWrite(const void* ptr, size_t count) { const char *data = reinterpret_cast(ptr); size_t written = 0; @@ -131,17 +146,17 @@ size_t GZipFile::write(const void* ptr, size_t count) return written; } -char* GZipFile::gets(char* s, int size) +char* GZipFile::onGets(char* s, int size) { return gzgets(fp_, s, size); } -int GZipFile::flush() +int GZipFile::onFlush() { return gzflush(fp_, 0); } -int GZipFile::vprintf(const char* format, va_list va) +int GZipFile::onVprintf(const char* format, va_list va) { ssize_t len; #ifdef __MINGW32__ -- cgit