Changeset 2130 for XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp
- Timestamp:
- 04/20/21 09:49:47 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp
r2123 r2130 20 20 #include "services.hpp" 21 21 #include "contexts_manager.hpp" 22 #include "timeline_events.hpp" 22 23 23 24 #include <boost/functional/hash.hpp> … … 188 189 if (it==buffers.end()) // Receive the buffer size and allocate the buffer 189 190 { 190 MPI_Aint recvBuff[3] ; 191 MPI_Recv(recvBuff, 3, MPI_AINT, rank, 20, interComm, &status); 192 StdSize buffSize = recvBuff[0]; 191 MPI_Aint recvBuff[4] ; 192 MPI_Recv(recvBuff, 4, MPI_AINT, rank, 20, interComm, &status); 193 remoteHashId_ = recvBuff[0] ; 194 StdSize buffSize = recvBuff[1]; 193 195 vector<MPI_Aint> winAdress(2) ; 194 winAdress[0]=recvBuff[ 1] ; winAdress[1]=recvBuff[2] ;196 winAdress[0]=recvBuff[2] ; winAdress[1]=recvBuff[3] ; 195 197 mapBufferSize_.insert(std::make_pair(rank, buffSize)); 196 198 it=(buffers.insert(pair<int,CServerBuffer*>(rank,new CServerBuffer(windows, winAdress, rank, buffSize)))).first; … … 290 292 CBufferIn newBuffer(startBuffer,buffer.remain()); 291 293 newBuffer>>size>>timeLine; 292 it=events.find(timeLine); 293 if (it==events.end()) it=events.insert(pair<int,CEventServer*>(timeLine,new CEventServer(this))).first; 294 it->second->push(rank,buffers[rank],startBuffer,size); 295 294 295 if (timeLine==timelineEventNotifyChangeBufferSize) 296 { 297 buffers[rank]->notifyBufferResizing() ; 298 buffers[rank]->updateCurrentWindows() ; 299 } 300 else if (timeLine==timelineEventChangeBufferSize) 301 { 302 size_t newSize ; 303 vector<MPI_Aint> winAdress(2) ; 304 newBuffer>>newSize>>winAdress[0]>>winAdress[1] ; 305 buffers.erase(rank) ; 306 buffers.insert(pair<int,CServerBuffer*>(rank,new CServerBuffer(windows, winAdress, rank, newSize))); 307 } 308 else 309 { 310 it=events.find(timeLine); 311 if (it==events.end()) it=events.insert(pair<int,CEventServer*>(timeLine,new CEventServer(this))).first; 312 it->second->push(rank,buffers[rank],startBuffer,size); 313 if (timeLine>0) lastTimeLine[rank]=timeLine ; 314 } 296 315 buffer.advance(size); 297 316 count=buffer.remain(); 298 317 } 299 300 if (timeLine>0) lastTimeLine[rank]=timeLine ;301 318 302 319 CTimer::get("Process request").suspend(); … … 310 327 // if (context->isProcessingEvent()) return ; 311 328 if (isProcessingEvent_) return ; 329 if (isAttachedModeEnabled()) 330 if (!CXios::getDaemonsManager()->isScheduledContext(remoteHashId_)) return ; 312 331 313 332 it=events.find(currentTimeLine); … … 356 375 currentTimeLine++; 357 376 scheduled = false; 377 if (isAttachedModeEnabled()) CXios::getDaemonsManager()->unscheduleContext() ; 358 378 } 359 379 }
Note: See TracChangeset
for help on using the changeset viewer.