11 #include "tbb/task_scheduler_init.h"
35 if (!partition_count_) {
38 return partition_count_;
43 partition_count_ = partition_count;
46 DB::DB(
int task_id) : task_id_(task_id) {
69 TableMap::iterator loc =
tables_.find(name);
82 pair<TableMap::iterator, bool> result =
83 tables_.insert(make_pair(tbl_base->
name(), tbl_base));
84 assert(result.second);
101 string prefix =
name;
102 while (prefix.size()) {
103 FactoryMap::iterator loc = factory_map->find(prefix);
104 if (loc != factory_map->end()) {
106 tbb::mutex::scoped_lock lock(
mutex_);
107 tables_.insert(make_pair(name, tbl_base));
110 size_t index = prefix.find(
'.');
111 if (index == string::npos) {
114 if (index == (prefix.length()-1)) {
117 prefix = prefix.substr(index+1);
123 GraphMap::iterator loc =
graph_map_.find(name);
131 pair<GraphMap::iterator, bool> result =
133 assert(result.second);
void STLDeleteValues(Container *container)
static FactoryMap * factories()
static void SetPartitionCount(int partition_count)
void SetQueueDisable(bool disable)
std::unique_ptr< DBTableWalkMgr > walk_mgr_
bool IsDBQueueEmpty() const
DBTableBase * CreateTable(const std::string &name)
iterator FindTableIter(const std::string &name)
void RemoveTable(DBTableBase *tbl_base)
int GetTaskId(const std::string &name)
std::vector< DBPartition * > partitions_
static void ClearFactoryRegistry()
bool IsDBQueueEmpty() const
static TaskScheduler * GetInstance()
TableMap::iterator iterator
void STLDeleteElements(Container *container)
const std::string & name() const
DBGraph * GetGraph(const std::string &name)
friend class DBTableWalkMgr
static int partition_count_
std::unique_ptr< DBTableWalker > walker_
boost::function< DBTableBase *(DB *, const std::string &)> CreateFunction
void AddTable(DBTableBase *tbl_base)
static int PartitionCount()
void SetGraph(const std::string &name, DBGraph *graph)
int HardwareThreadCount()
std::map< std::string, CreateFunction > FactoryMap
DBPartition * GetPartition(int index)
DBTableBase * FindTable(const std::string &name)
static void RegisterFactory(const std::string &prefix, CreateFunction create_fn)