summaryrefslogtreecommitdiff
path: root/src/MultiFileAllocationIterator.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-11-28 14:22:28 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-11-28 14:22:28 +0000
commit5a2f398eca68b2b0330ddcec2b222bf76875f82f (patch)
treeeb916885f04126e7e48b56fe02de6b44f0493c17 /src/MultiFileAllocationIterator.h
parenta022a1826bb573028f264bc6edbc564c0d488bbc (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.h23
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;