34 if (!partition_count_) {
37 return partition_count_;
42 partition_count_ = partition_count;
45 DB::DB(
int task_id) : task_id_(task_id) {
68 TableMap::iterator loc =
tables_.find(name);
81 pair<TableMap::iterator, bool> result =
82 tables_.insert(make_pair(tbl_base->
name(), tbl_base));
83 assert(result.second);
100 string prefix = name;
101 while (prefix.size()) {
102 FactoryMap::iterator loc = factory_map->find(prefix);
103 if (loc != factory_map->end()) {
105 std::scoped_lock lock(
mutex_);
106 tables_.insert(make_pair(name, tbl_base));
109 size_t index = prefix.find(
'.');
110 if (index == string::npos) {
113 if (index == (prefix.length()-1)) {
116 prefix = prefix.substr(index+1);
122 GraphMap::iterator loc =
graph_map_.find(name);
130 pair<GraphMap::iterator, bool> result =
132 assert(result.second);
bool IsDBQueueEmpty() const
const std::string & name() const
static void SetPartitionCount(int partition_count)
bool IsDBQueueEmpty() const
void AddTable(DBTableBase *tbl_base)
void SetQueueDisable(bool disable)
std::unique_ptr< DBTableWalker > walker_
boost::function< DBTableBase *(DB *, const std::string &)> CreateFunction
std::unique_ptr< DBTableWalkMgr > walk_mgr_
std::vector< DBPartition * > partitions_
static int partition_count_
static void ClearFactoryRegistry()
void SetGraph(const std::string &name, DBGraph *graph)
std::map< std::string, CreateFunction > FactoryMap
static void RegisterFactory(const std::string &prefix, CreateFunction create_fn)
void RemoveTable(DBTableBase *tbl_base)
TableMap::iterator iterator
DBPartition * GetPartition(int index)
static int PartitionCount()
DBTableBase * FindTable(const std::string &name)
DBGraph * GetGraph(const std::string &name)
static FactoryMap * factories()
DBTableBase * CreateTable(const std::string &name)
iterator FindTableIter(const std::string &name)
int GetTaskId(const std::string &name)
static TaskScheduler * GetInstance()
int HardwareThreadCount()
void STLDeleteElements(Container *container)
void STLDeleteValues(Container *container)