Changeset 2399 for XIOS3/trunk/src/transport/one_sided_context_server.cpp
- Timestamp:
- 09/09/22 17:23:16 (22 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS3/trunk/src/transport/one_sided_context_server.cpp
r2343 r2399 93 93 int flag; 94 94 MPI_Status status; 95 96 traceOff(); 97 MPI_Iprobe(MPI_ANY_SOURCE, 20,interComm, &flag, &status); 98 traceOn(); 99 if (flag==true) 100 { 101 requests_.push_back(CRequest(interComm, status)) ; 102 if (requests_.back().test()) 103 { 104 processRequest(requests_.back()) ; 105 requests_.pop_back() ; 95 flag=true ; 96 97 while(flag) 98 { 99 traceOff(); 100 MPI_Iprobe(MPI_ANY_SOURCE, 20,interComm, &flag, &status); 101 traceOn(); 102 if (flag==true) 103 { 104 requests_.push_back(CRequest(interComm, status)) ; 105 if (requests_.back().test()) 106 { 107 processRequest(requests_.back()) ; 108 requests_.pop_back() ; 109 } 106 110 } 107 111 } … … 139 143 if (!pendingEvents_.empty()) 140 144 { 145 /* 141 146 SPendingEvent& nextEvent = pendingEvents_.begin()->second ; 142 147 for(auto& buffer : nextEvent.buffers ) buffer->eventLoop() ; 143 148 if (nextEvent.nbSenders==0) pendingEvents_.erase(pendingEvents_.begin()) ; 149 */ 150 for(auto it=pendingEvents_.begin() ; it!=pendingEvents_.end() ;) 151 { 152 SPendingEvent& nextEvent = it->second ; 153 for(auto& buffer : nextEvent.buffers ) buffer->eventLoop() ; 154 if (nextEvent.nbSenders==0) it=pendingEvents_.erase(it) ; 155 else ++it ; 156 } 144 157 } 145 158 } … … 188 201 CEventServer event(this) ; 189 202 for(auto& buffer : it->second.buffers) buffer->fillEventServer(currentTimeLine, event) ; 190 203 MPI_Barrier(intraComm) ; 191 204 CTimer::get("Process events").resume(); 192 205 info(100)<<"Context id "<<context->getId()<<" : Process Event "<<currentTimeLine<<" of class "<<event.classId<<" of type "<<event.type<<endl ; … … 281 294 else if (event.classId==CGrid::GetType()) CGrid::dispatchEvent(event); 282 295 else if (event.classId==CGridGroup::GetType()) CGridGroup::dispatchEvent(event); 283 else if (event.classId==CField::GetType()) CField::dispatchEvent(event); 296 else if (event.classId==CField::GetType()) 297 { 298 if (event.type==CField::EVENT_ID_UPDATE_DATA) CField::dispatchEvent(event); 299 else CField::dispatchEvent(event); 300 } 284 301 else if (event.classId==CFieldGroup::GetType()) CFieldGroup::dispatchEvent(event); 285 302 else if (event.classId==CFile::GetType()) CFile::dispatchEvent(event);
Note: See TracChangeset
for help on using the changeset viewer.