- Timestamp:
- 12/09/21 12:25:17 (3 years ago)
- Location:
- XIOS/dev/dev_ym/XIOS_COUPLING/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/buffer_server.hpp
r2260 r2273 17 17 18 18 bool isBufferFree(size_t count) ; 19 bool isResizing(void) { return resizingBuffer_ ;} 19 20 void* getBuffer(size_t count) ; 20 21 void freeBuffer(size_t count) ; -
XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp
r2262 r2273 207 207 MPI_Get_count(&status,MPI_CHAR,&count); 208 208 map<int,CServerBuffer*>::iterator it = buffers.find(rank); 209 if (it->second->isBufferFree(count)) 209 if ( (it->second->isBufferFree(count) && !it->second->isResizing()) // accept new request if buffer is free 210 || (it->second->isResizing() && it->second->isBufferEmpty()) ) // or if resizing wait for buffer is empty 210 211 { 211 212 char * addr; … … 304 305 buffers[rank]->notifyBufferResizing() ; 305 306 buffers[rank]->updateCurrentWindows() ; 307 buffers[rank]->freeBuffer(count) ; 306 308 info(100)<<"Receive NotifyChangeBufferSize from client rank "<<rank<<endl ; 307 309 } … … 311 313 vector<MPI_Aint> winAdress(2) ; 312 314 newBuffer>>newSize>>winAdress[0]>>winAdress[1] ; 313 buffers.erase(rank) ; 314 buffers.insert(pair<int,CServerBuffer*>(rank,new CServerBuffer(windows_[rank], winAdress, 0, newSize))); 315 buffers[rank]->freeBuffer(count) ; 316 delete buffers[rank] ; 317 buffers[rank] = new CServerBuffer(windows_[rank], winAdress, 0, newSize) ; 315 318 info(100)<<"Receive ChangeBufferSize from client rank "<<rank<<" newSize : "<<newSize<<" Address : "<<winAdress[0]<<" & "<<winAdress[1]<<endl ; 316 319 } … … 403 406 map<int,CServerBuffer*>::iterator it; 404 407 for(it=buffers.begin();it!=buffers.end();++it) delete it->second; 408 buffers.clear() ; 405 409 } 406 410 … … 452 456 CTimer::get("receiving requests").suspend(); 453 457 context->finalize(); 454 freeWindows() ; 455 458 456 459 std::map<int, StdSize>::const_iterator itbMap = mapBufferSize_.begin(), 457 460 iteMap = mapBufferSize_.end(), itMap;
Note: See TracChangeset
for help on using the changeset viewer.