int32_t ServiceManager::add_service(SharedPointer<IProcessor> processor) { BGCC_TRACE("bgcc", "ServiceManager::add_service"); std::string name; bool exist; if (processor.is_valid()) { name = processor->get_name(); } else { BGCC_NOTICE("bgcc", "Failed to add service, because param is NULL"); return -1; } Guard<Mutex> guard(&_mutex); if (!guard.is_locked()) { BGCC_WARN("bgcc", "Failed to lock mutex"); return -1; } exist = _name2service.find(name) != _name2service.end(); if (!exist) { std::pair<name2service_map::iterator, bool> v = _name2service.insert(std::make_pair(name, processor)); if (false == v.second) { return -1; } } return 0; }
int32_t ServiceManager::remove_service(SharedPointer<IProcessor> processor) { //NOTE: 本函数不用加锁 std::string name; if (processor.is_valid()) { name = processor->get_name(); } else { return -1; } return remove_service(name); }