示例#1
0
    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;
    }
示例#2
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);
 }