diff options
Diffstat (limited to 'src/mongo/db/storage/mmap_v1/record_store_v1_capped_iterator.h')
-rw-r--r-- | src/mongo/db/storage/mmap_v1/record_store_v1_capped_iterator.h | 100 |
1 files changed, 51 insertions, 49 deletions
diff --git a/src/mongo/db/storage/mmap_v1/record_store_v1_capped_iterator.h b/src/mongo/db/storage/mmap_v1/record_store_v1_capped_iterator.h index de2b6fda5e3..0a366d9921a 100644 --- a/src/mongo/db/storage/mmap_v1/record_store_v1_capped_iterator.h +++ b/src/mongo/db/storage/mmap_v1/record_store_v1_capped_iterator.h @@ -33,58 +33,60 @@ namespace mongo { - class CappedRecordStoreV1; +class CappedRecordStoreV1; - struct Extent; +struct Extent; + +/** + * This class iterates over a capped collection identified by 'ns'. + * The collection must exist when the constructor is called. + */ +class CappedRecordStoreV1Iterator final : public RecordCursor { +public: + CappedRecordStoreV1Iterator(OperationContext* txn, + const CappedRecordStoreV1* collection, + bool forward); + + boost::optional<Record> next() final; + boost::optional<Record> seekExact(const RecordId& id) final; + void savePositioned() final; + bool restore(OperationContext* txn) final; + void invalidate(const RecordId& dl) final; + std::unique_ptr<RecordFetcher> fetcherForNext() const final; + std::unique_ptr<RecordFetcher> fetcherForId(const RecordId& id) const final; + +private: + void advance(); + bool isEOF() { + return _curr.isNull(); + } /** - * This class iterates over a capped collection identified by 'ns'. - * The collection must exist when the constructor is called. + * Internal collection navigation helper methods. */ - class CappedRecordStoreV1Iterator final : public RecordCursor { - public: - CappedRecordStoreV1Iterator( OperationContext* txn, - const CappedRecordStoreV1* collection, - bool forward ); - - boost::optional<Record> next() final; - boost::optional<Record> seekExact(const RecordId& id) final; - void savePositioned() final; - bool restore(OperationContext* txn) final; - void invalidate(const RecordId& dl) final; - std::unique_ptr<RecordFetcher> fetcherForNext() const final; - std::unique_ptr<RecordFetcher> fetcherForId(const RecordId& id) const final; - - private: - void advance(); - bool isEOF() { return _curr.isNull(); } - - /** - * Internal collection navigation helper methods. - */ - DiskLoc getNextCapped(const DiskLoc& dl); - DiskLoc prevLoop(const DiskLoc& curr); - DiskLoc nextLoop(const DiskLoc& prev); - - // some helpers - these move to RecordStore probably - Extent* _getExtent( const DiskLoc& loc ); - DiskLoc _getNextRecord( const DiskLoc& loc ); - DiskLoc _getPrevRecord( const DiskLoc& loc ); - - // transactional context for read locks. Not owned by us - OperationContext* _txn; - - // The collection we're iterating over. - const CappedRecordStoreV1* const _recordStore; - - // The result returned on the next call to getNext(). - DiskLoc _curr; - - const bool _forward; - - // If invalidate kills the DiskLoc we need to move forward, we kill the iterator. See the - // comment in the body of invalidate(...). - bool _killedByInvalidate = false; - }; + DiskLoc getNextCapped(const DiskLoc& dl); + DiskLoc prevLoop(const DiskLoc& curr); + DiskLoc nextLoop(const DiskLoc& prev); + + // some helpers - these move to RecordStore probably + Extent* _getExtent(const DiskLoc& loc); + DiskLoc _getNextRecord(const DiskLoc& loc); + DiskLoc _getPrevRecord(const DiskLoc& loc); + + // transactional context for read locks. Not owned by us + OperationContext* _txn; + + // The collection we're iterating over. + const CappedRecordStoreV1* const _recordStore; + + // The result returned on the next call to getNext(). + DiskLoc _curr; + + const bool _forward; + + // If invalidate kills the DiskLoc we need to move forward, we kill the iterator. See the + // comment in the body of invalidate(...). + bool _killedByInvalidate = false; +}; } // namespace mongo |