Ignore:
Timestamp:
01/20/20 17:55:12 (4 years ago)
Author:
ymipsl
Message:

Coupling branch : replace hasServer and hasClient combination by the name of correct service : CLIENT, GATHERER or OUT_SERVER.

YM

File:
1 edited

Legend:

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

    r1848 r1853  
    432432    server = new CContextServer(this,intraComm_, interCommServer); // check if we need to dupl. intraComm_ ? 
    433433    client = new CContextClient(this,intraCommClient,interCommClient); 
     434    client->setAssociatedServer(server) ;   
     435    server->setAssociatedClient(client) ;   
    434436 
    435437  } 
     
    492494      client = new CContextClient(this, intraCommClient, interCommClient); 
    493495      server = new CContextServer(this, intraCommServer, interCommServer); 
    494      
     496      client->setAssociatedServer(server) ; 
     497      server->setAssociatedClient(client) ; 
    495498    } 
    496499     
     
    526529        MPI_Comm_dup(intraComm_, &intraCommServer) ; 
    527530 
    528  
    529         clientPrimServer.push_back(new CContextClient(this, intraCommClient, interCommClient)); 
    530         serverPrimServer.push_back(new CContextServer(this, intraCommServer, interCommServer));   
     531        CContextClient* client = new CContextClient(this, intraCommClient, interCommClient) ; 
     532        CContextServer* server = new CContextServer(this, intraCommServer, interCommServer) ; 
     533        client->setAssociatedServer(server) ; 
     534        server->setAssociatedClient(client) ; 
     535        clientPrimServer.push_back(client); 
     536        serverPrimServer.push_back(server);   
     537 
    531538       
    532539      } 
     
    592599         CContextClient* client = new CContextClient(this, intraCommClient, interCommClient); 
    593600         CContextServer* server = new CContextServer(this, intraCommServer, interCommServer); 
     601         client->setAssociatedServer(server) ; 
     602         server->setAssociatedClient(client) ; 
    594603       } 
    595604       else 
     
    599608          CContextServer* server = new CContextServer(this, intraCommServer, interCommServer); 
    600609          CContextClient* client = new CContextClient(this, intraCommClient, interCommClient); 
     610          client->setAssociatedServer(server) ; 
     611          server->setAssociatedClient(client) ; 
    601612       } 
    602613       MPI_Comm_free(&interComm) ; 
     
    633644      if (server->intraCommRank==0) CXios::globalRegistry->mergeRegistry(*registryOut) ; 
    634645 
    635       if (hasClient && !hasServer) 
     646      if (serviceType_==CServicesManager::CLIENT) 
    636647      { 
    637648        doPreTimestepOperationsForEnabledReadModeFiles(); // For now we only use server level 1 to read data 
     
    650661        info(100)<<"DEBUG: context "<<getId()<<" release client ok"<<endl ; 
    651662      } 
    652       else if (hasClient && hasServer) 
     663      else if (serviceType_==CServicesManager::GATHERER) 
    653664      { 
    654665         for (int i = 0; i < clientPrimServer.size(); ++i) 
     
    672683 
    673684      } 
    674       else if (!hasClient && hasServer) 
     685      else if (serviceType_==CServicesManager::IO_SERVER || serviceType_==CServicesManager::OUT_SERVER) 
    675686      { 
    676687        closeAllFile(); 
     
    724735     checkGridEnabledFields(); 
    725736 
    726      setClientServerBuffer(client, (hasClient && !hasServer)); 
     737     setClientServerBuffer(client, (serviceType_==CServicesManager::CLIENT) ) ; 
    727738     for (int i = 0; i < clientPrimServer.size(); ++i) 
    728739         setClientServerBuffer(clientPrimServer[i], true); 
    729740 
    730741     
    731      if (hasClient) 
     742     if (serviceType_==CServicesManager::CLIENT || serviceType_==CServicesManager::GATHERER) 
    732743     {  
    733        if (hasServer) 
     744       if (serviceType_==CServicesManager::GATHERER) 
    734745       {  
    735746         for (auto it=clientPrimServer.begin(); it!=clientPrimServer.end();++it)  
     
    739750         } 
    740751       } 
    741        else 
     752       else  
    742753       { 
    743754         this->sendAllAttributesToServer(client);   // Send all attributes of current context to server 
     
    750761      sendEnabledFiles(this->enabledWriteModeFiles); 
    751762      // We only use server-level 1 (for now) to read data 
    752       if (!hasServer) 
    753         sendEnabledFiles(this->enabledReadModeFiles); 
     763      if (serviceType_==CServicesManager::CLIENT)  sendEnabledFiles(this->enabledReadModeFiles); 
    754764 
    755765      // Then, send all enabled fields       
    756766      sendEnabledFieldsInFiles(this->enabledWriteModeFiles); 
    757       if (!hasServer) 
    758         sendEnabledFieldsInFiles(this->enabledReadModeFiles); 
     767       
     768      if (serviceType_==CServicesManager::CLIENT) sendEnabledFieldsInFiles(this->enabledReadModeFiles); 
    759769 
    760770      // Then, check whether we have domain_ref, axis_ref or scalar_ref attached to the enabled fields 
    761771      // If any, so send them to server 
    762        sendRefDomainsAxisScalars(this->enabledWriteModeFiles); 
    763       if (!hasServer) 
    764         sendRefDomainsAxisScalars(this->enabledReadModeFiles);         
     772       sendRefDomainsAxisScalars(this->enabledWriteModeFiles);  
     773      
     774      if (serviceType_==CServicesManager::CLIENT) sendRefDomainsAxisScalars(this->enabledReadModeFiles);         
    765775 
    766776       // Check whether enabled fields have grid_ref, if any, send this info to server 
     
    780790      // Finally, we send information of grid itself to server  
    781791      sendGridEnabledFieldsInFiles(this->enabledWriteModeFiles);        
    782       if (!hasServer) 
    783         sendGridEnabledFieldsInFiles(this->enabledReadModeFiles);        
     792      
     793      if (serviceType_==CServicesManager::CLIENT) sendGridEnabledFieldsInFiles(this->enabledReadModeFiles);        
     794      
    784795     } 
    785796     allProcessed = true; 
     
    790801   TRY 
    791802   { 
    792       // Use correct context client to send message 
    793      // int nbSrvPools = (hasServer) ? clientPrimServer.size() : 1; 
    794     int nbSrvPools = (this->hasServer) ? (this->hasClient ? this->clientPrimServer.size() : 0) : 1; 
    795      for (int i = 0; i < nbSrvPools; ++i) 
    796      { 
    797        CContextClient* contextClientTmp = (0 != clientPrimServer.size()) ? clientPrimServer[i] : client; 
     803 
     804    int nbSrvPools ; 
     805    if (serviceType_==CServicesManager::CLIENT) nbSrvPools = 1 ; 
     806    else if (serviceType_==CServicesManager::GATHERER) nbSrvPools = this->clientPrimServer.size() ; 
     807    else nbSrvPools = 0 ; 
     808    CContextClient* contextClientTmp ; 
     809 
     810    for (int i = 0; i < nbSrvPools; ++i) 
     811     { 
     812       if (serviceType_==CServicesManager::CLIENT) contextClientTmp = client ; 
     813       else if (serviceType_==CServicesManager::GATHERER ) contextClientTmp = clientPrimServer[i] ; 
     814       
    798815       CEventClient event(getType(),EVENT_ID_POST_PROCESS_GLOBAL_ATTRIBUTES); 
    799816 
     
    844861    postProcessingGlobalAttributes(); 
    845862 
    846     if (hasClient) sendPostProcessingGlobalAttributes(); 
     863    if (serviceType_==CServicesManager::CLIENT || serviceType_==CServicesManager::GATHERER) sendPostProcessingGlobalAttributes(); 
    847864 
    848865    // There are some processings that should be done after all of above. For example: check mask or index 
    849866    this->buildFilterGraphOfEnabledFields(); 
    850867     
    851      if (hasClient && !hasServer) 
     868     if (serviceType_==CServicesManager::CLIENT) 
    852869    { 
    853870      buildFilterGraphOfFieldsWithReadAccess(); 
     
    857874    checkGridEnabledFields();    
    858875 
    859     if (hasClient) this->sendProcessingGridOfEnabledFields(); 
    860     if (hasClient) this->sendCloseDefinition(); 
     876    if (serviceType_==CServicesManager::CLIENT || serviceType_==CServicesManager::GATHERER) this->sendProcessingGridOfEnabledFields(); 
     877    if (serviceType_==CServicesManager::CLIENT || serviceType_==CServicesManager::GATHERER) this->sendCloseDefinition(); 
    861878 
    862879    // Nettoyage de l'arborescence 
    863     if (hasClient) CleanTree(); // Only on client side?? 
    864  
    865     if (hasClient) 
    866     { 
    867       sendCreateFileHeader(); 
    868       if (!hasServer) startPrefetchingOfEnabledReadModeFiles(); 
    869     } 
     880    if (serviceType_==CServicesManager::CLIENT || serviceType_==CServicesManager::GATHERER) CleanTree(); // Only on client side?? 
     881 
     882    if (serviceType_==CServicesManager::CLIENT || serviceType_==CServicesManager::GATHERER) sendCreateFileHeader(); 
     883    if (serviceType_==CServicesManager::CLIENT) startPrefetchingOfEnabledReadModeFiles(); 
     884     
    870885    CTimer::get("Context : close definition").suspend() ; 
    871886   } 
     
    11091124      const vector<CGrid*> allGrids= CGrid::getAll(); 
    11101125 
    1111       if (hasClient && !hasServer) 
    1112       //if (hasClient) 
     1126      if (serviceType_==CServicesManager::CLIENT) 
    11131127      { 
    11141128        for (unsigned int i = 0; i < allFiles.size(); i++) 
     
    12291243     double eps=std::numeric_limits<double>::epsilon()*10 ; 
    12301244      
    1231      // If primary server 
    1232      if (hasServer && hasClient) 
     1245     if (serviceType_==CServicesManager::GATHERER) 
    12331246     { 
    12341247       std::ofstream ofs(("distribute_file_"+getId()+".dat").c_str(), std::ofstream::out); 
     
    13101323   TRY 
    13111324   { 
    1312      // If primary server 
    1313      if (hasServer && hasClient) 
     1325     if (serviceType_==CServicesManager::GATHERER) 
    13141326     { 
    13151327       int nbPools = clientPrimServer.size(); 
     
    15021514   TRY 
    15031515   { 
    1504      // Use correct context client to send message 
    1505      int nbSrvPools = (this->hasServer) ? (this->hasClient ? this->clientPrimServer.size() : 0) : 1; 
    1506      for (int i = 0; i < nbSrvPools; ++i) 
    1507      { 
    1508        CContextClient* contextClientTmp = (hasServer) ? clientPrimServer[i] : client; 
     1516    int nbSrvPools ; 
     1517    if (serviceType_==CServicesManager::CLIENT) nbSrvPools = 1 ; 
     1518    else if (serviceType_==CServicesManager::GATHERER) nbSrvPools = this->clientPrimServer.size() ; 
     1519    else nbSrvPools = 0 ; 
     1520    CContextClient* contextClientTmp ; 
     1521 
     1522    for (int i = 0; i < nbSrvPools; ++i) 
     1523     { 
     1524       if (serviceType_==CServicesManager::CLIENT) contextClientTmp = client ; 
     1525       else if (serviceType_==CServicesManager::GATHERER ) contextClientTmp = clientPrimServer[i] ; 
    15091526       CEventClient event(getType(),EVENT_ID_CLOSE_DEFINITION); 
    15101527       if (contextClientTmp->isServerLeader()) 
     
    15341551   TRY 
    15351552   { 
    1536      // Use correct context client to send message 
    1537     int nbSrvPools = (this->hasServer) ? (this->hasClient ? this->clientPrimServer.size() : 0) : 1; 
    1538      for (int i = 0; i < nbSrvPools; ++i) 
    1539      { 
    1540        CContextClient* contextClientTmp = (hasServer) ? clientPrimServer[i] : client; 
     1553    int nbSrvPools ; 
     1554    if (serviceType_==CServicesManager::CLIENT) nbSrvPools = 1 ; 
     1555    else if (serviceType_==CServicesManager::GATHERER) nbSrvPools = this->clientPrimServer.size() ; 
     1556    else nbSrvPools = 0 ; 
     1557    CContextClient* contextClientTmp ; 
     1558 
     1559    for (int i = 0; i < nbSrvPools; ++i) 
     1560    { 
     1561       if (serviceType_==CServicesManager::CLIENT) contextClientTmp = client ; 
     1562       else if (serviceType_==CServicesManager::GATHERER ) contextClientTmp = clientPrimServer[i] ; 
    15411563       CEventClient event(getType(),EVENT_ID_UPDATE_CALENDAR); 
    15421564 
     
    15441566         { 
    15451567           CMessage msg; 
    1546            if (hasServer) 
    1547              msg<<step; 
    1548            else 
    1549              msg<<step; 
     1568           msg<<step; 
    15501569           const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
    15511570           for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     
    15741593      buffer>>step; 
    15751594      updateCalendar(step); 
    1576       if (hasClient && hasServer) 
     1595      if (serviceType_==CServicesManager::GATHERER) 
    15771596      {         
    15781597        sendUpdateCalendar(step); 
     
    15851604   TRY 
    15861605   { 
    1587      // Use correct context client to send message 
    1588      // int nbSrvPools = (hasServer) ? clientPrimServer.size() : 1; 
    1589      int nbSrvPools = (this->hasServer) ? (this->hasClient ? this->clientPrimServer.size() : 0) : 1; 
     1606     int nbSrvPools ; 
     1607     if (serviceType_==CServicesManager::CLIENT) nbSrvPools = 1 ; 
     1608     else if (serviceType_==CServicesManager::GATHERER) nbSrvPools = this->clientPrimServer.size() ; 
     1609     else nbSrvPools = 0 ; 
     1610     CContextClient* contextClientTmp ; 
     1611 
    15901612     for (int i = 0; i < nbSrvPools; ++i) 
    15911613     { 
    1592        CContextClient* contextClientTmp = (hasServer) ? clientPrimServer[i] : client; 
     1614       if (serviceType_==CServicesManager::CLIENT) contextClientTmp = client ; 
     1615       else if (serviceType_==CServicesManager::GATHERER ) contextClientTmp = clientPrimServer[i] ; 
    15931616       CEventClient event(getType(),EVENT_ID_CREATE_FILE_HEADER); 
    15941617 
     
    16191642   TRY 
    16201643   { 
    1621       if (!hasClient && hasServer)  
     1644      if (serviceType_==CServicesManager::IO_SERVER || serviceType_==CServicesManager::OUT_SERVER)  
    16221645        createFileHeader(); 
    16231646   } 
     
    16281651   TRY 
    16291652   { 
    1630       // Use correct context client to send message 
    1631      int nbSrvPools = (this->hasServer) ? (this->hasClient ? this->clientPrimServer.size() : 0) : 1; 
     1653     int nbSrvPools ; 
     1654     if (serviceType_==CServicesManager::CLIENT) nbSrvPools = 1 ; 
     1655     else if (serviceType_==CServicesManager::GATHERER) nbSrvPools = this->clientPrimServer.size() ; 
     1656     else nbSrvPools = 0 ; 
     1657     CContextClient* contextClientTmp ; 
     1658 
    16321659     for (int i = 0; i < nbSrvPools; ++i) 
    16331660     { 
    1634        CContextClient* contextClientTmp = (0 != clientPrimServer.size()) ? clientPrimServer[i] : client; 
     1661       if (serviceType_==CServicesManager::CLIENT) contextClientTmp = client ; 
     1662       else if (serviceType_==CServicesManager::GATHERER ) contextClientTmp = clientPrimServer[i] ; 
     1663 
    16351664       CEventClient event(getType(),EVENT_ID_PROCESS_GRID_ENABLED_FIELDS); 
    16361665 
     
    16611690   TRY 
    16621691   { 
    1663       // Use correct context client to send message 
    1664      // int nbSrvPools = (hasServer) ? clientPrimServer.size() : 1; 
    1665      int nbSrvPools = (this->hasServer) ? (this->hasClient ? this->clientPrimServer.size() : 0) : 1; 
     1692     int nbSrvPools ; 
     1693     if (serviceType_==CServicesManager::CLIENT) nbSrvPools = 1 ; 
     1694     else if (serviceType_==CServicesManager::GATHERER) nbSrvPools = this->clientPrimServer.size() ; 
     1695     else nbSrvPools = 0 ; 
     1696     CContextClient* contextClientTmp ; 
     1697 
    16661698     for (int i = 0; i < nbSrvPools; ++i) 
    16671699     { 
    1668        CContextClient* contextClientTmp = (hasServer) ? clientPrimServer[i] : client; 
     1700       if (serviceType_==CServicesManager::CLIENT) contextClientTmp = client ; 
     1701       else if (serviceType_==CServicesManager::GATHERER ) contextClientTmp = clientPrimServer[i] ; 
    16691702       CEventClient event(getType(),EVENT_ID_POST_PROCESS); 
    16701703       if (contextClientTmp->isServerLeader()) 
     
    17321765 
    17331766      // The timeseries should only be prepared in client 
    1734       if (hasClient && !hasServer) prepareTimeseries(); 
     1767 
     1768      if (serviceType_==CServicesManager::CLIENT) prepareTimeseries(); 
    17351769 
    17361770      //Initialisation du vecteur 'enabledFiles' contenant la liste des fichiers à sortir. 
     
    17541788      //   findAllEnabledFieldsInFiles(this->enabledReadModeFiles);       
    17551789 
    1756       if (hasClient && !hasServer) 
     1790      if (serviceType_==CServicesManager::CLIENT) 
    17571791      { 
    17581792        initReadFiles(); 
     
    17681802 
    17691803      // Find all fields with read access from the public API 
    1770       if (hasClient && !hasServer) findFieldsWithReadAccess(); 
     1804      if (serviceType_==CServicesManager::CLIENT) findFieldsWithReadAccess(); 
    17711805      // and solve the all reference for them 
    1772       if (hasClient && !hasServer) solveAllRefOfFieldsWithReadAccess(); 
     1806      if (serviceType_==CServicesManager::CLIENT) solveAllRefOfFieldsWithReadAccess(); 
    17731807 
    17741808      isPostProcessed = true; 
     
    19201954   TRY 
    19211955   { 
    1922      if (!hasClient) return; 
     1956     if (!(serviceType_==CServicesManager::CLIENT || serviceType_==CServicesManager::GATHERER)) return; 
    19231957 
    19241958     const vector<CAxis*> allAxis = CAxis::getAll(); 
     
    19401974   TRY 
    19411975   { 
    1942      if (!hasClient) return; 
     1976     if (!(serviceType_==CServicesManager::CLIENT || serviceType_==CServicesManager::GATHERER)) return; 
    19431977 
    19441978     const std::vector<CFile*> allFiles = CFile::getAll(); 
     
    21462180      if (prevStep < step) 
    21472181      { 
    2148         if (hasClient && !hasServer) // For now we only use server level 1 to read data 
     2182        if (serviceType_==CServicesManager::CLIENT) // For now we only use server level 1 to read data 
    21492183        { 
    21502184          doPreTimestepOperationsForEnabledReadModeFiles(); 
     
    21582192  #endif 
    21592193 
    2160         if (hasClient && !hasServer) // For now we only use server level 1 to read data 
     2194        if (serviceType_==CServicesManager::CLIENT) // For now we only use server level 1 to read data 
    21612195        { 
    21622196          doPostTimestepOperationsForEnabledReadModeFiles(); 
     
    22682302    registryOut->hierarchicalGatherRegistry() ; 
    22692303 
    2270     // Use correct context client to send message 
    2271     int nbSrvPools = (this->hasServer) ? (this->hasClient ? this->clientPrimServer.size() : 0) : 1; 
     2304    int nbSrvPools ; 
     2305    if (serviceType_==CServicesManager::CLIENT) nbSrvPools = 1 ; 
     2306    else if (serviceType_==CServicesManager::GATHERER) nbSrvPools = this->clientPrimServer.size() ; 
     2307    else nbSrvPools = 0 ; 
     2308    CContextClient* contextClientTmp ; 
     2309 
    22722310    for (int i = 0; i < nbSrvPools; ++i) 
    22732311    { 
    2274       CContextClient* contextClientTmp = (hasServer) ? clientPrimServer[i] : client; 
     2312      if (serviceType_==CServicesManager::CLIENT) contextClientTmp = client ; 
     2313      else if (serviceType_==CServicesManager::GATHERER ) contextClientTmp = clientPrimServer[i] ; 
     2314 
    22752315      CEventClient event(CContext::GetType(), CContext::EVENT_ID_SEND_REGISTRY); 
    2276         if (contextClientTmp->isServerLeader()) 
    2277         { 
    2278            CMessage msg ; 
    2279            if (contextClientTmp->clientRank==0) msg<<*registryOut ; 
    2280            const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
    2281            for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
     2316      if (contextClientTmp->isServerLeader()) 
     2317      { 
     2318        CMessage msg ; 
     2319        if (contextClientTmp->clientRank==0) msg<<*registryOut ; 
     2320        const std::list<int>& ranks = contextClientTmp->getRanksServerLeader(); 
     2321        for (std::list<int>::const_iterator itRank = ranks.begin(), itRankEnd = ranks.end(); itRank != itRankEnd; ++itRank) 
    22822322             event.push(*itRank,1,msg); 
    2283            contextClientTmp->sendEvent(event); 
    2284          } 
    2285          else contextClientTmp->sendEvent(event); 
     2323        contextClientTmp->sendEvent(event); 
     2324      } 
     2325      else contextClientTmp->sendEvent(event); 
    22862326    } 
    22872327  } 
Note: See TracChangeset for help on using the changeset viewer.