Changeset 1848


Ignore:
Timestamp:
01/07/20 18:53:52 (3 months ago)
Author:
ymipsl
Message:

Supress unusefull idServer context variable that create some trouble when sending context attribute to server.

YM

Location:
XIOS/dev/dev_ym/XIOS_COUPLING/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.cpp

    r1784 r1848  
    3737      , calendar(), hasClient(false), hasServer(false) 
    3838      , isPostProcessed(false), finalized(false) 
    39       , idServer_(), client(nullptr), server(nullptr) 
     39      , client(nullptr), server(nullptr) 
    4040      , allProcessed(false), countChildContextFinalized_(0), isProcessingEvent_(false) 
    4141 
     
    4646      , calendar(), hasClient(false), hasServer(false) 
    4747      , isPostProcessed(false), finalized(false) 
    48       , idServer_(), client(nullptr), server(nullptr) 
     48      , client(nullptr), server(nullptr) 
    4949      , allProcessed(false), countChildContextFinalized_(0), isProcessingEvent_(false) 
    5050   { /* Ne rien faire de plus */ } 
     
    280280   TRY 
    281281   { 
    282       // Estimated minimum event size for small events (10 is an arbitrary constant just for safety) 
    283      const size_t minEventSize = CEventClient::headerSize + getIdServer().size() + 10 * sizeof(int); 
     282      // Estimated minimum event size for small events (20 is an arbitrary constant just for safety) 
     283     const size_t minEventSize = CEventClient::headerSize + 20 * sizeof(int); 
    284284 
    285285      // Ensure there is at least some room for 20 of such events in the buffers 
     
    463463        if (commRank==0) CXios::getServicesManager()->getServiceType(CClient::getPoolRessource()->getId(), CXios::defaultServerId, 0, type) ; 
    464464        MPI_Bcast(&type,1,MPI_INT,0,intraComm_) ; 
    465         setIdServer(CXios::getContextsManager()->getServerContextName(CClient::getPoolRessource()->getId(), CXios::defaultServerId, 0, type, getContextId())) ; 
    466465        setCurrent(getId()) ; // getCurrent/setCurrent may be supress, it can cause a lot of trouble 
    467466      } 
     
    474473        if (commRank==0) CXios::getServicesManager()->getServiceType(CXios::defaultPoolId, CXios::defaultGathererId, 0, type) ; 
    475474        MPI_Bcast(&type,1,MPI_INT,0,intraComm_) ; 
    476         setIdServer(CXios::getContextsManager()->getServerContextName(CXios::defaultPoolId, CXios::defaultGathererId, 0, type, getContextId())) ; 
    477475      } 
    478476      else 
     
    484482        if (commRank==0) CXios::getServicesManager()->getServiceType(CXios::defaultPoolId, CXios::defaultServerId, 0, type) ; 
    485483        MPI_Bcast(&type,1,MPI_INT,0,intraComm_) ; 
    486         setIdServer(CXios::getContextsManager()->getServerContextName(CXios::defaultPoolId, CXios::defaultServerId, 0, type, getContextId())) ; 
    487484      } 
    488485 
     
    804801       { 
    805802         CMessage msg; 
    806          if (hasServer) 
    807            msg<<this->getIdServer(i); 
    808          else 
    809            msg<<this->getIdServer(); 
    810803         const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
    811804         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     
    822815   { 
    823816      CBufferIn* buffer=event.subEvents.begin()->buffer; 
    824       string id; 
    825       *buffer>>id; 
    826       get(id)->recvPostProcessingGlobalAttributes(*buffer); 
     817      getCurrent()->recvPostProcessingGlobalAttributes(*buffer); 
    827818   } 
    828819   CATCH 
     
    15201511       { 
    15211512         CMessage msg; 
    1522          if (hasServer) 
    1523            msg<<this->getIdServer(i); 
    1524          else 
    1525            msg<<this->getIdServer(); 
    15261513         const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
    15271514         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     
    15391526   { 
    15401527      CBufferIn* buffer=event.subEvents.begin()->buffer; 
    1541       string id; 
    1542       *buffer>>id; 
    1543       get(id)->closeDefinition(); 
     1528      getCurrent()->closeDefinition(); 
    15441529   } 
    15451530   CATCH 
     
    15601545           CMessage msg; 
    15611546           if (hasServer) 
    1562              msg<<this->getIdServer(i)<<step; 
     1547             msg<<step; 
    15631548           else 
    1564              msg<<this->getIdServer()<<step; 
     1549             msg<<step; 
    15651550           const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
    15661551           for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     
    15781563   { 
    15791564      CBufferIn* buffer=event.subEvents.begin()->buffer; 
    1580       string id; 
    1581       *buffer>>id; 
    1582       get(id)->recvUpdateCalendar(*buffer); 
     1565      getCurrent()->recvUpdateCalendar(*buffer); 
    15831566   } 
    15841567   CATCH 
     
    16131596       { 
    16141597         CMessage msg; 
    1615          if (hasServer) 
    1616            msg<<this->getIdServer(i); 
    1617          else 
    1618            msg<<this->getIdServer(); 
    16191598         const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
    16201599         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     
    16321611   { 
    16331612      CBufferIn* buffer=event.subEvents.begin()->buffer; 
    1634       string id; 
    1635       *buffer>>id; 
    1636       get(id)->recvCreateFileHeader(*buffer); 
     1613      getCurrent()->recvCreateFileHeader(*buffer); 
    16371614   } 
    16381615   CATCH 
     
    16611638       { 
    16621639         CMessage msg; 
    1663          if (hasServer) 
    1664            msg<<this->getIdServer(i); 
    1665          else 
    1666            msg<<this->getIdServer(); 
    16671640         const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
    16681641         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     
    16801653   { 
    16811654      CBufferIn* buffer=event.subEvents.begin()->buffer; 
    1682       string id; 
    1683       *buffer>>id;       
     1655      // nothing to do, no call ??!!     
    16841656   } 
    16851657   CATCH 
     
    16991671       { 
    17001672         CMessage msg; 
    1701          if (hasServer) 
    1702            msg<<this->getIdServer(i); 
    1703          else 
    1704            msg<<this->getIdServer(); 
    17051673         const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
    17061674         for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     
    17181686   { 
    17191687      CBufferIn* buffer=event.subEvents.begin()->buffer; 
    1720       string id; 
    1721       *buffer>>id; 
    1722       get(id)->recvPostProcessing(*buffer); 
     1688      getCurrent()->recvPostProcessing(*buffer); 
    17231689   } 
    17241690   CATCH 
     
    17331699   CATCH_DUMP_ATTR 
    17341700 
    1735    void CContext::setIdServer(const StdString& idServer) 
    1736    TRY 
    1737    { 
    1738       idServer_=idServer ; 
    1739    } 
    1740    CATCH_DUMP_ATTR 
    1741  
    1742     
    1743    const StdString& CContext::getIdServer() 
    1744    TRY 
    1745    { 
    1746       return idServer_; 
    1747    } 
    1748    CATCH_DUMP_ATTR 
    1749  
    1750    const StdString& CContext::getIdServer(const int i) 
    1751    TRY 
    1752    { 
    1753 //     return idServer_ + std::to_string(static_cast<unsigned long long>(i)); 
    1754       return primServerId_[i] ; 
    1755    } 
    1756    CATCH_DUMP_ATTR 
    1757  
    1758 /* 
    1759    const StdString& CContext::getIdServer() 
    1760    TRY 
    1761    { 
    1762       if (hasClient) 
    1763       { 
    1764         idServer_ = this->getId(); 
    1765         idServer_ += "_server"; 
    1766         return idServer_; 
    1767       } 
    1768       if (hasServer) return (this->getId()); 
    1769    } 
    1770    CATCH_DUMP_ATTR 
    1771  
    1772    const StdString& CContext::getIdServer(const int i) 
    1773    TRY 
    1774    { 
    1775      idServer_ = this->getId(); 
    1776      idServer_ += "_server_"; 
    1777      idServer_ += std::to_string(static_cast<unsigned long long>(i)); 
    1778      return idServer_; 
    1779    } 
    1780    CATCH_DUMP_ATTR 
    1781 */ 
    1782  
    1783  
     1701  
    17841702   /*! 
    17851703   \brief Do some simple post processings after parsing xml file 
     
    23292247  { 
    23302248    CBufferIn* buffer=event.subEvents.begin()->buffer; 
    2331     string id; 
    2332     *buffer>>id; 
    2333     get(id)->recvRegistry(*buffer); 
     2249    getCurrent()->recvRegistry(*buffer); 
    23342250  } 
    23352251  CATCH 
     
    23612277        { 
    23622278           CMessage msg ; 
    2363            if (hasServer) 
    2364              msg<<this->getIdServer(i); 
    2365            else 
    2366              msg<<this->getIdServer(); 
    23672279           if (contextClientTmp->clientRank==0) msg<<*registryOut ; 
    23682280           const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/node/context.hpp

    r1784 r1848  
    176176         void sendFinalizeClient(CContextClient* contextClient, const string& contextClientId); 
    177177 
    178  
    179          const StdString& getIdServer(); 
    180          void setIdServer(const StdString& idServer); 
    181          const StdString& getIdServer(const int srvPoolNb); 
    182178         std::string getContextId() {return contextId_;} 
    183179 
     
    303299         bool finalized; 
    304300         int countChildContextFinalized_;        //!< Counter of child contexts (for now it is the number of secondary server pools) 
    305          StdString idServer_; 
    306301         CGarbageCollector garbageCollector; 
    307302         std::list<MPI_Comm> comms; //!< Communicators allocated internally 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/object.cpp

    r1761 r1848  
    2525 
    2626  const StdString& CObject::getId(void) const 
    27   { 
    28     return this->id; 
    29   } 
    30  
    31   const StdString& CObject::getIdServer()  
    32   { 
    33     return this->id; 
    34   } 
    35  
    36   const StdString& CObject::getIdServer(int nSrvpool)  
    3727  { 
    3828    return this->id; 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/object.hpp

    r1761 r1848  
    1717      /// Accesseurs /// 
    1818      const StdString& getId(void) const; 
    19       virtual const StdString& getIdServer() ; 
    20       virtual const StdString& getIdServer(int nsrvPool) ; 
    2119 
    2220      virtual StdString dumpClassAttributes(void); 
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/object_template_impl.hpp

    r1784 r1848  
    205205       { 
    206206         // Account for extra header info 
    207          minimumSize += CEventClient::headerSize + getIdServer().size() + sizeof(size_t); 
     207         minimumSize += CEventClient::headerSize + getId().size() + sizeof(size_t); 
    208208 
    209209         const std::list<int>& ranks = client->getRanksServerLeader(); 
     
    241241    { 
    242242      CMessage msg; 
    243       msg<<this->getIdServer(); // pb with context attribute -> to check : for now seem to be never used for context... 
     243      msg<<this->getId();  
     244      msg << attr.getName(); 
     245      msg << attr; 
     246      const std::list<int>& ranks = client->getRanksServerLeader(); 
     247      for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     248        event.push(*itRank,1,msg); 
     249      client->sendEvent(event); 
     250    } 
     251    else client->sendEvent(event); 
     252  } 
     253 
     254/* specialisation for context, because context Id on client is not the same on server, and no need to transfer context Id */ 
     255  template <> 
     256  void CObjectTemplate<CContext>::sendAttributToServer(CAttribute& attr, CContextClient* client) 
     257  { 
     258    CEventClient event(getType(),EVENT_ID_SEND_ATTRIBUTE); 
     259    if (client->isServerLeader()) 
     260    { 
     261      CMessage msg; 
    244262      msg << attr.getName(); 
    245263      msg << attr; 
     
    296314  } 
    297315 
     316/* specialisation for context, because context Id on client is not the same on server and no need to transfer context Id */ 
     317  template <> 
     318  void CObjectTemplate<CContext>::recvAttributFromClient(CEventServer& event) 
     319  { 
     320 
     321    CBufferIn* buffer=event.subEvents.begin()->buffer; 
     322    string attrId; 
     323    CAttributeMap & attrMap = *CContext::getCurrent(); 
     324    *buffer>>attrId; 
     325    CAttribute* attr=attrMap[attrId]; 
     326    info(50) << "attribut recu " << attrId << "  "; 
     327    if (attr->isEmpty()) info(50) << "--> empty" << endl; 
     328    else info(50) /*<attr->getValue()*/ << endl; 
     329    *buffer>>*attr; 
     330     info(50) << "attribut recu " << attrId << "  "; 
     331    if (attr->isEmpty()) info(50) << "--> empty" << endl; 
     332    else info(50) /*attr->getValue()*/ << endl; 
     333  } 
     334 
     335 
    298336   template <class T> 
    299337   bool CObjectTemplate<T>::dispatchEvent(CEventServer& event) 
Note: See TracChangeset for help on using the changeset viewer.