diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-11-28 14:22:28 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-11-28 14:22:28 +0000 |
| commit | 5a2f398eca68b2b0330ddcec2b222bf76875f82f (patch) | |
| tree | eb916885f04126e7e48b56fe02de6b44f0493c17 /src/MultiFileAllocationIterator.h | |
| parent | a022a1826bb573028f264bc6edbc564c0d488bbc (diff) | |
2007-11-28 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added direct I/O support. The current implementation uses O_DIRECT,
which is not posix standard and is tested on linux 2.6.21.
Currently only file allocation uses direct I/O.
* src/SingleFileAllocationIterator.{h, cc}
* test/SingleFileAllocationIteratorTest.cc
* src/MultiFileAllocationIterator.{h, cc}
* test/MultiFileAllocationIteratorTest.cc
* src/BinaryStream.h
* src/DiskWriter.h
* src/AbstractDiskWriter.{h, cc}
* src/ByteArrayDiskWriter.h
* src/DiskAdaptor.h
* src/AbstractSingleDiskAdaptor.{h, cc}
* src/MultiDiskAdaptor.{h, cc}
* src/FileAllocationEntry.cc
* src/Util.{h, cc}
* src/OptionHandlerFactory.cc
* src/prefs.h
* src/version_usage.cc
* src/option_processing.cc
Moved FileAllocationMan::markCurrentFileAllocationEntryDone() to
handleException.
* src/MultiFileAllocationIterator.cc
Added EINTR handling
* src/SocketCore.cc
Diffstat (limited to 'src/MultiFileAllocationIterator.h')
| -rw-r--r-- | src/MultiFileAllocationIterator.h | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/MultiFileAllocationIterator.h b/src/MultiFileAllocationIterator.h index bbed59b6..a9b4aa8a 100644 --- a/src/MultiFileAllocationIterator.h +++ b/src/MultiFileAllocationIterator.h @@ -38,38 +38,35 @@ #include "FileAllocationIterator.h" class MultiDiskAdaptor; -class FileEntry; -typedef SharedHandle<FileEntry> FileEntryHandle; -typedef deque<FileEntryHandle> FileEntries; +class DiskWriterEntry; +typedef SharedHandle<DiskWriterEntry> DiskWriterEntryHandle; +typedef deque<DiskWriterEntryHandle> DiskWriterEntries; +class SingleFileAllocationIterator; +typedef SharedHandle<SingleFileAllocationIterator> SingleFileAllocationIteratorHandle; class MultiFileAllocationIterator:public FileAllocationIterator { private: MultiDiskAdaptor* _diskAdaptor; - FileEntries _entries; - FileEntryHandle _currentEntry; + DiskWriterEntries _entries; + SingleFileAllocationIteratorHandle _fileAllocationIterator; int64_t _offset; - FileEntries makeFileEntries(const FileEntries& srcEntries, int32_t pieceLength) const; + DiskWriterEntries makeDiskWriterEntries(const DiskWriterEntries& srcEntries, int32_t pieceLength) const; public: MultiFileAllocationIterator(MultiDiskAdaptor* diskAdaptor); virtual ~MultiFileAllocationIterator(); - void prepareNextEntry(); - virtual void allocateChunk(); virtual bool finished(); - virtual int64_t getCurrentLength() - { - return _offset; - } + virtual int64_t getCurrentLength(); virtual int64_t getTotalLength(); - const FileEntries& getFileEntries() const; + const DiskWriterEntries& getDiskWriterEntries() const; }; typedef SharedHandle<MultiFileAllocationIterator> MultiFileAllocationIteratorHandle; |
