summaryrefslogtreecommitdiff
path: root/src/mongo/db/storage/mmap_v1/record_store_v1_capped_iterator.h
diff options
context:
space:
mode:
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.h100
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