- Timestamp:
- 01/03/23 19:06:42 (18 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS3/dev/XIOS_FILE_SERVICES/src/manager/ressources_manager.cpp
r2260 r2453 163 163 buffer.realloc(maxBufferSize_) ; 164 164 165 buffer<< serverLeader_ ;165 buffer<<ressourcesSize_<<freeRessourcesSize_<<serverLeader_ ; 166 166 buffer<<(int) pools_.size(); 167 167 for(auto it=pools_.begin();it!=pools_.end(); ++it) … … 169 169 auto key = it->first ; 170 170 auto val = it->second ; 171 buffer << key<<std::get<0>(val) << std::get<1>(val);171 buffer << key<<std::get<0>(val) << std::get<1>(val) << std::get<2>(val); 172 172 } 173 173 } … … 177 177 std::string poolId ; 178 178 int size ; 179 int freeSize ; 179 180 int leader ; 180 181 181 buffer>> serverLeader_ ;182 buffer>>ressourcesSize_>>freeRessourcesSize_>>serverLeader_ ; 182 183 pools_.clear() ; 183 184 int nbPools ; … … 185 186 for(int i=0;i<nbPools;i++) 186 187 { 187 buffer>>poolId>>size>> leader ;188 pools_[poolId]=std::make_tuple(size, leader) ;188 buffer>>poolId>>size>>freeSize>>leader ; 189 pools_[poolId]=std::make_tuple(size, freeSize, leader) ; 189 190 } 190 191 } … … 210 211 211 212 212 void CRessourcesManager::registerPool(const string& poolId, int size, int leader) 213 { 214 winRessources_->lockWindow(managerGlobalLeader_,0) ; 215 winRessources_->updateFromWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpIn) ; 216 pools_[poolId] = make_tuple(size,leader) ; 213 void CRessourcesManager::registerPoolClient(const string& poolId, int size, int leader) 214 { 215 winRessources_->lockWindow(managerGlobalLeader_,0) ; 216 winRessources_->updateFromWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpIn) ; 217 pools_[poolId] = make_tuple(size, size, leader) ; 218 winRessources_->updateToWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpOut) ; 219 winRessources_->unlockWindow(managerGlobalLeader_,0) ; 220 } 221 222 void CRessourcesManager::registerPoolServer(const string& poolId, int size, int leader) 223 { 224 winRessources_->lockWindow(managerGlobalLeader_,0) ; 225 winRessources_->updateFromWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpIn) ; 226 pools_[poolId] = make_tuple(size, size, leader) ; 217 227 freeRessourcesSize_-=size ; 218 228 winRessources_->updateToWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpOut) ; … … 220 230 } 221 231 222 223 bool CRessourcesManager::getPoolInfo(const string& poolId, int& size, int& leader) 232 bool CRessourcesManager::getPoolInfo(const string& poolId, int& size, int& freeSize, int& leader) 224 233 { 225 234 winRessources_->lockWindow(managerGlobalLeader_,0) ; … … 232 241 { 233 242 size=get<0>(it->second) ; 234 leader=get<1>(it->second) ; 243 freeSize=get<1>(it->second) ; 244 leader=get<2>(it->second) ; 235 245 return true ; 236 246 } 247 } 248 249 bool CRessourcesManager::decreasePoolFreeSize(const string& poolId, int size) 250 { 251 int ret ; 252 253 winRessources_->lockWindow(managerGlobalLeader_,0) ; 254 winRessources_->updateFromWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpIn) ; 255 256 257 auto it=pools_.find(poolId) ; 258 259 if ( it == pools_.end()) ret=false ; 260 else 261 { 262 get<1>(it->second)-=size ; 263 ret=true ; 264 } 265 winRessources_->updateToWindow(managerGlobalLeader_, this, &CRessourcesManager::ressourcesDumpOut) ; 266 winRessources_->unlockWindow(managerGlobalLeader_,0) ; 237 267 } 238 268 … … 257 287 bool CRessourcesManager::getPoolLeader(const string& poolId, int& leader) 258 288 { 259 int size ;260 return getPoolInfo(poolId, size, leader) ;289 int size, freeSize ; 290 return getPoolInfo(poolId, size, freeSize, leader) ; 261 291 } 262 292 263 293 bool CRessourcesManager::getPoolSize(const string& poolId, int& size) 264 294 { 265 int leader ; 266 return getPoolInfo(poolId, size, leader) ; 295 int leader,freeSize ; 296 return getPoolInfo(poolId, size, freeSize, leader) ; 297 } 298 299 bool CRessourcesManager::getPoolFreeSize(const string& poolId, int& freeSize) 300 { 301 int leader,size ; 302 return getPoolInfo(poolId, size, freeSize, leader) ; 267 303 } 268 304 269 305 bool CRessourcesManager::hasPool(const string& poolId) 270 306 { 271 int leader,size ; 272 return getPoolInfo(poolId, size, leader) ; 307 int leader,size,freeSize ; 308 return getPoolInfo(poolId, size, freeSize, leader) ; 309 } 310 311 void CRessourcesManager::waitPoolRegistration(const string& poolId) 312 { 313 while(!hasPool(poolId)) CXios::getDaemonsManager()->servicesEventLoop() ; 273 314 } 274 315 }
Note: See TracChangeset
for help on using the changeset viewer.