summaryrefslogtreecommitdiff
path: root/src/GZipFile.cc
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.cc
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.cc')
-rw-r--r--src/GZipFile.cc29
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__