Ignore:
Timestamp:
07/04/17 14:28:50 (7 years ago)
Author:
oabramkina
Message:

Two server levels: simplifying context finalization.
Send of context finalization is blocking now on all server types.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_olga/src/context_client.cpp

    r1193 r1194  
    248248     if (!mapBufferSize_.count(rank)) 
    249249     { 
    250        error(0) << "WARNING: Unexpected request for buffer to communicate with server " << rank << std::endl; 
     250//       error(0) << "WARNING: Unexpected request for buffer to communicate with server " << rank << std::endl; 
    251251       mapBufferSize_[rank] = CXios::minBufferSize; 
    252252     } 
     
    423423  } 
    424424 
    425   /*! 
    426   * Finalize context client and do some reports. Function is non-blocking. 
    427   */ 
    428  void CContextClient::postFinalize(void) 
    429  { 
    430    map<int,CClientBuffer*>::iterator itBuff; 
    431    bool stop = false; 
    432  
    433    CTimer::get("Blocking time").resume(); 
    434    while (hasTemporarilyBufferedEvent()) 
    435    { 
    436      checkBuffers(); 
    437      sendTemporarilyBufferedEvent(); 
    438    } 
    439    CTimer::get("Blocking time").suspend(); 
    440  
    441    CEventClient event(CContext::GetType(), CContext::EVENT_ID_CONTEXT_POST_FINALIZE); 
    442    if (isServerLeader()) 
    443    { 
    444      CMessage msg; 
    445      const std::list<int>& ranks = getRanksServerLeader(); 
    446      for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    447        event.push(*itRank, 1, msg); 
    448      sendEvent(event); 
    449    } 
    450    else sendEvent(event); 
    451  
    452    CTimer::get("Blocking time").resume(); 
    453 //   while (!stop) 
    454    { 
    455      checkBuffers(); 
    456      if (hasTemporarilyBufferedEvent()) 
    457        sendTemporarilyBufferedEvent(); 
    458      stop = true; 
    459 //     for (itBuff = buffers.begin(); itBuff != buffers.end(); itBuff++) stop &= !itBuff->second->hasPendingRequest(); 
    460    } 
    461    CTimer::get("Blocking time").suspend(); 
    462  
    463  } 
    464425 
    465426  /*! 
Note: See TracChangeset for help on using the changeset viewer.