/* */ #ifndef _D_DISK_WRITER_H_ #define _D_DISK_WRITER_H_ #include "BinaryStream.h" namespace aria2 { /** * Interface for writing to a binary stream of bytes. * */ class DiskWriter:public BinaryStream { protected: bool _directIOAllowed; public: DiskWriter():_directIOAllowed(false) {} virtual ~DiskWriter() {} /** * Creates a file output stream to write to the file with the specified name. * If the file exists, then it is truncated to 0 length. * @param filename the file name to be opened. */ virtual void initAndOpenFile(const std::string& filename, uint64_t totalLength = 0) = 0; virtual void openFile(const std::string& filename, uint64_t totalLength = 0) = 0; /** * Closes this output stream. */ // TODO we have to examine the return value of close() virtual void closeFile() = 0; /** * Opens a file output stream to write to the file with the specified name. * If the file doesnot exists, an exception may be throwed. * * @param filename the file name to be opened. */ virtual void openExistingFile(const std::string& filename, uint64_t totalLength = 0) = 0; virtual void truncate(uint64_t length) = 0; // Returns file length virtual uint64_t size() const = 0; virtual void enableDirectIO() = 0; virtual void disableDirectIO() = 0; virtual bool directIOAllowed() const { return _directIOAllowed; } void setDirectIOAllowed(bool f) { _directIOAllowed = f; } }; typedef SharedHandle DiskWriterHandle; } // namespace aria2 #endif // _D_DISK_WRITER_H_