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.cc | |
| 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.cc')
| -rw-r--r-- | src/GZipFile.cc | 29 |
1 files changed, 22 insertions, 7 deletions
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<char*>(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<char*>(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<const char*>(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__ |
