Ignore:
Timestamp:
06/01/23 10:58:08 (13 months ago)
Author:
ymipsl
Message:

Merging XIOS3_ATTACHED branch into XIOS3 trunk.

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS3/trunk/src/manager/services_manager.cpp

    r2498 r2507  
    227227    int leader ; 
    228228 
    229     services_.clear() ; 
    230229    int nbServices ; 
    231230    buffer>>nbServices ; 
     231    bool newServices = nbServices != services_.size() ;  
     232 
     233    services_.clear() ; 
    232234 
    233235    for(int i=0;i<nbServices;i++)  
     
    235237      buffer>>poolId>>serviceId>>partitionId>>type>>size>>nbPartitions>>leader ; 
    236238      services_[std::tuple<std::string,std::string,int>(poolId,serviceId,partitionId)]=std::make_tuple(type,size,nbPartitions,leader) ; 
     239      if (newServices) 
     240        info(40)<<"Receive new services informations : "<<poolId<<"::"<<serviceId<<"::"<<partitionId<<" => type : "<<type<<"  size : "<<size<<"  nbPartitions : "<<nbPartitions<<"  leader : "<<leader<<endl ; 
    237241    } 
    238242  } 
     
    256260                                        int& size, int& nbPartitions, int& leader, bool wait) 
    257261  { 
    258      
    259262    winServices_->lockWindowShared(managerGlobalLeader_) ; 
    260263    winServices_->updateFromLockedWindow(managerGlobalLeader_, this, &CServicesManager::servicesDumpIn) ; 
    261264    winServices_->unlockWindow(managerGlobalLeader_) ; 
    262  
     265     
     266    if (wait) waitServiceRegistration(poolId, serviceId, partitionId) ; 
    263267    auto it=services_.find(std::tuple<std::string,std::string,int>(poolId,serviceId,partitionId)) ; 
    264     if ( it == services_.end() && !wait) return false ; 
     268    if ( it == services_.end()) return false ; 
    265269    else 
    266270    { 
    267       if (wait) waitServiceRegistration(poolId, serviceId, partitionId) ; 
    268271      type= std::get<0>(it->second);  
    269272      size= std::get<1>(it->second);  
     
    279282    int size ; 
    280283    int nbPartitions; 
    281     //return getServiceInfo(poolId, serviceId, partitionId, type, size, nbPartitions, leader, wait) ; 
    282     return getServiceInfo(poolId, serviceId, partitionId, type, size, nbPartitions, leader) ; 
     284    return getServiceInfo(poolId, serviceId, partitionId, type, size, nbPartitions, leader, wait) ; 
    283285  } 
    284286 
     
    288290    int nbPartitions; 
    289291    int leader; 
    290     //return getServiceInfo(poolId, serviceId, partitionId, type, size, nbPartitions, leader, wait) ; 
    291     return getServiceInfo(poolId, serviceId, partitionId, type, size, nbPartitions, leader) ; 
     292    return getServiceInfo(poolId, serviceId, partitionId, type, size, nbPartitions, leader, wait) ; 
    292293  } 
    293294 
     
    297298    int type; 
    298299    int leader; 
    299     //return getServiceInfo(poolId, serviceId, partitionId, type, size, nbPartitions, leader, wait) ; 
    300     return getServiceInfo(poolId, serviceId, partitionId, type, size, nbPartitions, leader) ; 
     300    return getServiceInfo(poolId, serviceId, partitionId, type, size, nbPartitions, leader, wait) ; 
    301301  } 
    302302 
    303303  bool CServicesManager::hasService(const std::string& poolId, const std::string& serviceId, const int& partitionId) 
    304304  { 
    305     winServices_->lockWindow(managerGlobalLeader_,0) ; 
    306     winServices_->updateFromWindow(managerGlobalLeader_, this, &CServicesManager::servicesDumpIn) ; 
    307     winServices_->unlockWindow(managerGlobalLeader_,0) ; 
     305    winServices_->lockWindowShared(managerGlobalLeader_) ; 
     306    winServices_->updateFromLockedWindow(managerGlobalLeader_, this, &CServicesManager::servicesDumpIn) ; 
     307    winServices_->unlockWindow(managerGlobalLeader_) ; 
    308308    auto it=services_.find(std::tuple<std::string, std::string, int>(poolId, serviceId, partitionId)) ; 
    309309    if ( it == services_.end()) return false ; 
Note: See TracChangeset for help on using the changeset viewer.