diff options
Diffstat (limited to 'lib/base/rawfile.h')
| -rw-r--r-- | lib/base/rawfile.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/base/rawfile.h b/lib/base/rawfile.h index a1c73d6a..1720d581 100644 --- a/lib/base/rawfile.h +++ b/lib/base/rawfile.h @@ -2,24 +2,27 @@ #define __lib_base_rawfile_h #include <string> +#include <lib/base/idatasource.h> -class eRawFile +class eRawFile: public iDataSource { + DECLARE_REF(eRawFile); + eSingleLock m_lock; public: eRawFile(); ~eRawFile(); - int open(const char *filename, int cached = 0); void setfd(int fd); - off_t lseek(off_t offset, int whence); int close(); - ssize_t read(void *buf, size_t count); /* NOTE: you must be able to handle short reads! */ + + // iDataSource + off_t lseek(off_t offset, int whence); + ssize_t read(off_t offset, void *buf, size_t count); off_t length(); int valid(); private: int m_fd; /* for uncached */ FILE *m_file; /* for cached */ - int m_cached; std::string m_basename; off_t m_splitsize, m_totallength, m_current_offset, m_base_offset, m_last_offset; @@ -27,6 +30,8 @@ private: void scan(); int m_current_file; int switchOffset(off_t off); + + off_t lseek_internal(off_t offset, int whence); FILE *openFileCached(int nr); int openFileUncached(int nr); }; |
