@@ -38,19 +38,21 @@ struct UserDbValue {
38
38
*/
39
39
class UserDb {
40
40
public:
41
+ static string snapshot_extension ();
42
+
41
43
// / Abstract class for a user db component.
42
44
class Component : public Db ::Component {
43
45
public:
44
46
virtual string extension () const = 0;
45
- virtual string snapshot_extension () const = 0;
46
47
};
47
48
48
49
// / Requires a registered component for a user db class.
49
50
static Component* Require (const string& name) {
50
- return static_cast <Component*>(Db::Require (name));
51
+ return dynamic_cast <Component*>(Db::Require (name));
51
52
}
52
53
53
54
UserDb () = delete ;
55
+
54
56
};
55
57
56
58
// / A helper class to provide extra functionalities related to user db.
@@ -102,16 +104,14 @@ class UserDbWrapper : public BaseDb {
102
104
// / Implements a component that serves as a factory for a user db class.
103
105
template <class BaseDb >
104
106
class UserDbComponent : public UserDb ::Component,
105
- protected DbComponent<UserDbWrapper<BaseDb>> {
107
+ protected DbComponentBase {
106
108
public:
107
109
using UserDbImpl = UserDbWrapper<BaseDb>;
108
-
109
- UserDbImpl* Create (const string& name) override {
110
- return DbComponent<UserDbImpl>::Create (name);
110
+ Db* Create (const string& name) override {
111
+ return new UserDbImpl (DbFilePath (name, extension ()), name);
111
112
}
112
113
113
114
string extension () const override ;
114
- string snapshot_extension () const override ;
115
115
};
116
116
117
117
class UserDbMerger : public Sink {
0 commit comments