Storage Engine API
database_catalog_entry.h
Go to the documentation of this file.
1 // database_catalog_entry.h
2 
31 #pragma once
32 
33 #include <list>
34 #include <string>
35 
36 #include "mongo/base/status.h"
37 #include "mongo/base/string_data.h"
38 
39 namespace mongo {
40 
41 class BSONObjBuilder;
42 class CollectionCatalogEntry;
43 class IndexAccessMethod;
44 class IndexCatalogEntry;
45 class OperationContext;
46 class RecordStore;
47 
48 struct CollectionOptions;
49 
51 public:
52  DatabaseCatalogEntry(StringData name) : _name(name.toString()) {}
53 
54  virtual ~DatabaseCatalogEntry() {}
55 
56  const std::string& name() const {
57  return _name;
58  }
59 
60  virtual bool exists() const = 0;
61  virtual bool isEmpty() const = 0;
62  virtual bool hasUserData() const = 0;
63 
64  virtual int64_t sizeOnDisk(OperationContext* opCtx) const = 0;
65 
66  virtual void appendExtraStats(OperationContext* opCtx,
67  BSONObjBuilder* out,
68  double scale) const = 0;
69 
70  // these are hacks :(
71  virtual bool isOlderThan24(OperationContext* opCtx) const = 0;
72  virtual void markIndexSafe24AndUp(OperationContext* opCtx) = 0;
73 
86  virtual Status currentFilesCompatible(OperationContext* opCtx) const = 0;
87 
88  // ----
89 
90  virtual void getCollectionNamespaces(std::list<std::string>* out) const = 0;
91 
92  // The DatabaseCatalogEntry owns this, do not delete
93  virtual CollectionCatalogEntry* getCollectionCatalogEntry(StringData ns) const = 0;
94 
95  // The DatabaseCatalogEntry owns this, do not delete
96  virtual RecordStore* getRecordStore(StringData ns) const = 0;
97 
98  // Ownership passes to caller
99  virtual IndexAccessMethod* getIndex(OperationContext* opCtx,
101  IndexCatalogEntry* index) = 0;
102 
103  virtual Status createCollection(OperationContext* opCtx,
104  StringData ns,
105  const CollectionOptions& options,
106  bool allocateDefaultSpace) = 0;
107 
108  virtual Status renameCollection(OperationContext* opCtx,
109  StringData fromNS,
110  StringData toNS,
111  bool stayTemp) = 0;
112 
113  virtual Status dropCollection(OperationContext* opCtx, StringData ns) = 0;
114 
115 private:
116  std::string _name;
117 };
118 }
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
Definition: collection_options.h:57
const std::string & name() const
Definition: database_catalog_entry.h:56
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
DatabaseCatalogEntry(StringData name)
Definition: database_catalog_entry.h:52
Definition: collection_catalog_entry.h:47
Collection *const collection
Definition: collection_info_cache_impl.cpp:53
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
virtual void appendExtraStats(OperationContext *opCtx, BSONObjBuilder *out, double scale) const =0
virtual CollectionCatalogEntry * getCollectionCatalogEntry(StringData ns) const =0
virtual bool isOlderThan24(OperationContext *opCtx) const =0
virtual IndexAccessMethod * getIndex(OperationContext *opCtx, const CollectionCatalogEntry *collection, IndexCatalogEntry *index)=0
virtual bool isEmpty() const =0
virtual Status dropCollection(OperationContext *opCtx, StringData ns)=0
Definition: index_catalog_entry.h:56
An abstraction used for storing documents in a collection or entries in an index. ...
Definition: record_store.h:282
Definition: database_catalog_entry.h:50
virtual bool exists() const =0
virtual Status currentFilesCompatible(OperationContext *opCtx) const =0
Returns whethers the data files are compatible with the current code:
virtual RecordStore * getRecordStore(StringData ns) const =0
OperationContext Database StringData BSONObj options
Definition: database_impl.cpp:949
virtual bool hasUserData() const =0
virtual Status renameCollection(OperationContext *opCtx, StringData fromNS, StringData toNS, bool stayTemp)=0
virtual int64_t sizeOnDisk(OperationContext *opCtx) const =0
virtual ~DatabaseCatalogEntry()
Definition: database_catalog_entry.h:54
std::string _name
Definition: database_catalog_entry.h:116
virtual Status createCollection(OperationContext *opCtx, StringData ns, const CollectionOptions &options, bool allocateDefaultSpace)=0
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
virtual void markIndexSafe24AndUp(OperationContext *opCtx)=0
virtual void getCollectionNamespaces(std::list< std::string > *out) const =0