/* */ #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 { public: DiskWriter() {} virtual ~DiskWriter() {} /** * Opens file. If the file exists, then it is truncated to 0 length. */ virtual void initAndOpenFile(uint64_t totalLength = 0) = 0; virtual void openFile(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. If the file doesnot exists, an exception may be * thrown. */ virtual void openExistingFile(uint64_t totalLength = 0) = 0; // Returns file length virtual uint64_t size() = 0; virtual void enableDirectIO() = 0; virtual void disableDirectIO() = 0; virtual void allowDirectIO() {} // Enables read-only mode. After this call, openExistingFile() opens // file in read-only mode. This is an optional functionality. The // default implementation is do nothing. virtual void enableReadOnly() {} // Disables read-only mode. After this call, openExistingFile() // opens file in read/write mode. This is an optional // functionality. The default implementation is do noting. virtual void disableReadOnly() {} }; typedef SharedHandle DiskWriterHandle; } // namespace aria2 #endif // _D_DISK_WRITER_H_