1 //  Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
2 //  This source code is licensed under both the GPLv2 (found in the
3 //  COPYING file in the root directory) and Apache 2.0 License
4 //  (found in the LICENSE.Apache file in the root directory).
5 
6 #include "test_util/sync_point.h"
7 #include "test_util/sync_point_impl.h"
8 
9 int rocksdb_kill_odds = 0;
10 std::vector<std::string> rocksdb_kill_prefix_blacklist;
11 
12 #ifndef NDEBUG
13 namespace ROCKSDB_NAMESPACE {
14 
GetInstance()15 SyncPoint* SyncPoint::GetInstance() {
16   static SyncPoint sync_point;
17   return &sync_point;
18 }
19 
SyncPoint()20 SyncPoint::SyncPoint() : impl_(new Data) {}
21 
~SyncPoint()22 SyncPoint:: ~SyncPoint() {
23   delete impl_;
24 }
25 
LoadDependency(const std::vector<SyncPointPair> & dependencies)26 void SyncPoint::LoadDependency(const std::vector<SyncPointPair>& dependencies) {
27   impl_->LoadDependency(dependencies);
28 }
29 
LoadDependencyAndMarkers(const std::vector<SyncPointPair> & dependencies,const std::vector<SyncPointPair> & markers)30 void SyncPoint::LoadDependencyAndMarkers(
31   const std::vector<SyncPointPair>& dependencies,
32   const std::vector<SyncPointPair>& markers) {
33   impl_->LoadDependencyAndMarkers(dependencies, markers);
34 }
35 
SetCallBack(const std::string & point,const std::function<void (void *)> & callback)36 void SyncPoint::SetCallBack(const std::string& point,
37   const std::function<void(void*)>& callback) {
38   impl_->SetCallBack(point, callback);
39 }
40 
ClearCallBack(const std::string & point)41 void SyncPoint::ClearCallBack(const std::string& point) {
42   impl_->ClearCallBack(point);
43 }
44 
ClearAllCallBacks()45 void SyncPoint::ClearAllCallBacks() {
46   impl_->ClearAllCallBacks();
47 }
48 
EnableProcessing()49 void SyncPoint::EnableProcessing() {
50   impl_->EnableProcessing();
51 }
52 
DisableProcessing()53 void SyncPoint::DisableProcessing() {
54   impl_->DisableProcessing();
55 }
56 
ClearTrace()57 void SyncPoint::ClearTrace() {
58   impl_->ClearTrace();
59 }
60 
Process(const std::string & point,void * cb_arg)61 void SyncPoint::Process(const std::string& point, void* cb_arg) {
62   impl_->Process(point, cb_arg);
63 }
64 
65 }  // namespace ROCKSDB_NAMESPACE
66 #endif  // NDEBUG
67