1
+ #include < memory>
2
+
3
+ #include " rocksdb/db_crashtest_use_case.h"
4
+ #include " rocksdb/options.h"
5
+ #include " rocksdb/use_case.h"
6
+ #include " rocksdb/utilities/customizable_util.h"
7
+ #include " rocksdb/utilities/options_type.h"
8
+
9
+ namespace ROCKSDB_NAMESPACE {
10
+ static int RegisterBuiltinDBCrashtestUseCases (ObjectLibrary& library,
11
+ const std::string& arg) {
12
+ library.AddFactory <DBCrashtestUseCase>(
13
+ SimpleDefaultParams::kClassName (),
14
+ [](const std::string& /* uri*/ ,
15
+ std::unique_ptr<DBCrashtestUseCase>* /* guard*/ ,
16
+ std::string* /* errmsg*/ ) {
17
+ return new SimpleDefaultParams ();
18
+ });
19
+ library.AddFactory <DBCrashtestUseCase>(
20
+ TxnParams::kClassName (),
21
+ [](const std::string& /* uri*/ ,
22
+ std::unique_ptr<DBCrashtestUseCase>* /* guard*/ ,
23
+ std::string* /* errmsg*/ ) {
24
+ return new TxnParams ();
25
+ });
26
+ library.AddFactory <DBCrashtestUseCase>(
27
+ BestEffortsRecoveryParams::kClassName (),
28
+ [](const std::string& /* uri*/ ,
29
+ std::unique_ptr<DBCrashtestUseCase>* /* guard*/ ,
30
+ std::string* /* errmsg*/ ) {
31
+ return new BestEffortsRecoveryParams ();
32
+ });
33
+ library.AddFactory <DBCrashtestUseCase>(
34
+ BlobParams::kClassName (),
35
+ [](const std::string& /* uri*/ ,
36
+ std::unique_ptr<DBCrashtestUseCase>* /* guard*/ ,
37
+ std::string* /* errmsg*/ ) {
38
+ return new BlobParams ();
39
+ });
40
+ library.AddFactory <DBCrashtestUseCase>(
41
+ TieredParams::kClassName (),
42
+ [](const std::string& /* uri*/ ,
43
+ std::unique_ptr<DBCrashtestUseCase>* /* guard*/ ,
44
+ std::string* /* errmsg*/ ) {
45
+ return new TieredParams ();
46
+ });
47
+ library.AddFactory <DBCrashtestUseCase>(
48
+ MultiopsTxnDefaultParams::kClassName (),
49
+ [](const std::string& /* uri*/ ,
50
+ std::unique_ptr<DBCrashtestUseCase>* /* guard*/ ,
51
+ std::string* /* errmsg*/ ) {
52
+ return new MultiopsTxnDefaultParams ();
53
+ });
54
+ return 1 ;
55
+ }
56
+
57
+ static int RegisterBuiltinUseCases (ObjectLibrary& library,
58
+ const std::string& arg) {
59
+ library.AddFactory <UseCase>(
60
+ DBCrashtestUseCase::kClassName (),
61
+ [](const std::string& /* uri*/ ,
62
+ std::unique_ptr<UseCase>* /* guard*/ ,
63
+ std::string* /* errmsg*/ ) {
64
+ return new DBCrashtestUseCase ();
65
+ });
66
+ RegisterBuiltinDBCrashtestUseCases (library, arg);
67
+ return 1 ;
68
+ }
69
+
70
+ Status UseCase::CreateFromString (const ConfigOptions& cfg_opts,
71
+ const std::string& value,
72
+ const UseCase** result) {
73
+ static std::once_flag once;
74
+ std::call_once (once, [&]() {
75
+ RegisterBuiltinUseCases (*(ObjectLibrary::Default ().get ()), " " );
76
+ });
77
+ UseCase* use_case = const_cast <UseCase*>(*result);
78
+ Status status =
79
+ LoadStaticObject<UseCase>(cfg_opts, value, &use_case);
80
+ if (status.ok ()) {
81
+ *result = const_cast <UseCase*>(use_case);
82
+ }
83
+ return status;
84
+ }
85
+ } // namespace ROCKSDB_NAMESPACE
0 commit comments