1/* 2 * Copyright 2001-2011, Haiku Inc. All rights reserved. 3 * This file may be used under the terms of the MIT License. 4 * 5 * Authors: 6 * Jérôme Duval 7 */ 8#ifndef EXTENTSTREAM_H 9#define EXTENTSTREAM_H 10 11 12#include "ext2.h" 13#include "Transaction.h" 14 15 16class Volume; 17 18 19class ExtentStream 20{ 21public: 22 ExtentStream(Volume* volume, ext2_extent_stream* stream, 23 off_t size); 24 ~ExtentStream(); 25 26 status_t FindBlock(off_t offset, fsblock_t& block, 27 uint32 *_count = NULL); 28 status_t Enlarge(Transaction& transaction, off_t& numBlocks); 29 status_t Shrink(Transaction& transaction, off_t& numBlocks); 30 void Init(); 31 32 bool Check(); 33 34private: 35 status_t _Check(ext2_extent_stream *stream, fileblock_t &block); 36 status_t _CheckBlock(ext2_extent_stream *stream, fsblock_t block); 37 38 Volume* fVolume; 39 ext2_extent_stream* fStream; 40 fsblock_t fFirstBlock; 41 42 fsblock_t fAllocatedPos; 43 44 off_t fNumBlocks; 45 off_t fSize; 46}; 47 48#endif // EXTENTSTREAM_H 49 50